@awsui/components-react
Version:
AWS UI is a collection of [React](https://reactjs.org/) components that help create intuitive, responsive, and accessible user experiences for web applications. It is developed by Amazon Web Services (AWS). This work is available under the terms of the [A
23 lines (22 loc) • 2.34 kB
JavaScript
import React from 'react';
import ItemElement from './item-element/item-element';
import ExpandableCategoryElement from './category-elements/expandable-category-element';
import CategoryElement from './category-elements/category-element';
import { isItemGroup } from './utils/utils';
import { useMobile } from '../internal/hooks/use-mobile';
import MobileExpandableCategoryElement from './category-elements/mobile-expandable-category-element';
export default function ItemsList(_a) {
var items = _a.items, onItemActivate = _a.onItemActivate, expandedItem = _a.expandedItem, highlightedItem = _a.highlightedItem, onItemClick = _a.onItemClick, _b = _a.categoryDisabled, categoryDisabled = _b === void 0 ? false : _b, _c = _a.hasExpandableGroups, hasExpandableGroups = _c === void 0 ? false : _c, _d = _a.hasCategoryHeader, hasCategoryHeader = _d === void 0 ? false : _d, _e = _a.allowHref, allowHref = _e === void 0 ? false : _e;
var isMobile = useMobile();
var elements = (items || []).map(function (item, index) {
if (!isItemGroup(item)) {
return (React.createElement(ItemElement, { key: index, item: item, onItemActivate: onItemActivate, disabled: item.disabled || categoryDisabled, highlighted: item === highlightedItem, last: index === items.length - 1 || isItemGroup(items[index + 1]), hasCategoryHeader: hasCategoryHeader, allowHref: allowHref }));
}
var disabled = item.disabled || (isItemGroup(item) && item.items.every(function (item) { return item.disabled; })) || false;
if (hasExpandableGroups) {
return item.text ? (isMobile ? (React.createElement(MobileExpandableCategoryElement, { key: index, item: item, onItemActivate: onItemActivate, expandedItem: expandedItem, highlightedItem: highlightedItem, disabled: disabled, onItemClick: onItemClick })) : (React.createElement(ExpandableCategoryElement, { key: index, item: item, onItemActivate: onItemActivate, expandedItem: expandedItem, highlightedItem: highlightedItem, disabled: disabled, onItemClick: onItemClick }))) : null;
}
return (React.createElement(CategoryElement, { key: index, item: item, onItemActivate: onItemActivate, expandedItem: expandedItem, highlightedItem: highlightedItem, disabled: disabled }));
});
return React.createElement(React.Fragment, null, elements);
}