@gravity-ui/uikit
Version:
Gravity UI base styling and components
36 lines (35 loc) • 1.53 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getItemRenderState = void 0;
const getListItemQa_1 = require("./getListItemQa.js");
/**
* Map list state and parsed list state to item render props
*/
const getItemRenderState = ({ qa, list, onItemClick, mapItemDataToContentProps, size = 'm', multiple = false, id, }) => {
const context = {
...list.structure.itemsState[id],
...list.structure.groupsState[id],
isLastItem: id === list.structure.visibleFlattenIds[list.structure.visibleFlattenIds.length - 1],
};
const props = {
id,
size,
selected: Boolean(list.state.selectedById[id]),
disabled: Boolean(list.state.disabledById?.[id]),
active: id === list.state.activeItemId,
onClick: onItemClick ? (e) => onItemClick({ id }, e) : undefined,
selectionViewType: Boolean(multiple) && !context.childrenIds ? 'multiple' : 'single', // no multiple selection at group nodes
content: {
expanded: list.state.expandedById?.[id],
indentation: context.indentation,
isGroup: list.state.expandedById && id in list.state.expandedById,
...mapItemDataToContentProps(list.structure.itemsById[id]),
},
};
if (qa) {
props.qa = (0, getListItemQa_1.getListItemQa)(qa, id);
}
return { data: list.structure.itemsById[id], props, context };
};
exports.getItemRenderState = getItemRenderState;
//# sourceMappingURL=getItemRenderState.js.map
;