@base-ui-components/react
Version:
Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.
60 lines • 3.33 kB
JavaScript
import { createSelector } from '@base-ui-components/utils/store';
import { compareItemEquality } from "../utils/itemEquality.js";
export const selectors = {
id: createSelector(state => state.id),
query: createSelector(state => state.query),
items: createSelector(state => state.items),
selectedValue: createSelector(state => state.selectedValue),
open: createSelector(state => state.open),
mounted: createSelector(state => state.mounted),
forceMounted: createSelector(state => state.forceMounted),
inline: createSelector(state => state.inline),
activeIndex: createSelector(state => state.activeIndex),
selectedIndex: createSelector(state => state.selectedIndex),
isActive: createSelector((state, index) => state.activeIndex === index),
isSelected: createSelector((state, candidate) => {
const comparer = state.isItemEqualToValue;
const selectedValue = state.selectedValue;
if (Array.isArray(selectedValue)) {
return selectedValue.some(value => compareItemEquality(value, candidate, comparer));
}
return compareItemEquality(selectedValue, candidate, comparer);
}),
transitionStatus: createSelector(state => state.transitionStatus),
popupProps: createSelector(state => state.popupProps),
inputProps: createSelector(state => state.inputProps),
triggerProps: createSelector(state => state.triggerProps),
getItemProps: createSelector(state => state.getItemProps),
positionerElement: createSelector(state => state.positionerElement),
listElement: createSelector(state => state.listElement),
triggerElement: createSelector(state => state.triggerElement),
inputElement: createSelector(state => state.inputElement),
popupSide: createSelector(state => state.popupSide),
openMethod: createSelector(state => state.openMethod),
inputInsidePopup: createSelector(state => state.inputInsidePopup),
selectionMode: createSelector(state => state.selectionMode),
listRef: createSelector(state => state.listRef),
labelsRef: createSelector(state => state.labelsRef),
popupRef: createSelector(state => state.popupRef),
emptyRef: createSelector(state => state.emptyRef),
inputRef: createSelector(state => state.inputRef),
keyboardActiveRef: createSelector(state => state.keyboardActiveRef),
chipsContainerRef: createSelector(state => state.chipsContainerRef),
clearRef: createSelector(state => state.clearRef),
valuesRef: createSelector(state => state.valuesRef),
allValuesRef: createSelector(state => state.allValuesRef),
name: createSelector(state => state.name),
disabled: createSelector(state => state.disabled),
readOnly: createSelector(state => state.readOnly),
required: createSelector(state => state.required),
grid: createSelector(state => state.grid),
isGrouped: createSelector(state => state.isGrouped),
virtualized: createSelector(state => state.virtualized),
onOpenChangeComplete: createSelector(state => state.onOpenChangeComplete),
openOnInputClick: createSelector(state => state.openOnInputClick),
itemToStringLabel: createSelector(state => state.itemToStringLabel),
isItemEqualToValue: createSelector(state => state.isItemEqualToValue),
modal: createSelector(state => state.modal),
autoHighlight: createSelector(state => state.autoHighlight),
submitOnItemClick: createSelector(state => state.submitOnItemClick)
};