@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
82 lines • 2.62 kB
JavaScript
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
import React, { forwardRef } from 'react';
import classnames from 'classnames';
export const DrawerListItem = forwardRef(function DrawerListItem(props, ref) {
const {
role = 'option',
hash = '',
children,
className = null,
on_click = null,
selected,
active = null,
value = null,
disabled,
...rest
} = props;
const params = {
className: classnames(className, 'dnb-drawer-list__option', selected && 'dnb-drawer-list__option--selected', active && 'dnb-drawer-list__option--focus'),
role,
tabIndex: selected ? 0 : -1,
disabled,
'aria-selected': !!selected,
'aria-disabled': disabled
};
if (active) {
params['aria-current'] = true;
}
if (on_click && !rest.onClick) {
rest.onClick = () => on_click({
selected,
value,
...rest
});
}
return React.createElement("li", _extends({}, params, rest, {
ref: ref,
key: 'li' + hash
}), React.createElement("span", {
className: "dnb-drawer-list__option__inner"
}, React.createElement(ItemContent, {
hash: hash
}, children)));
});
export function ItemContent({
hash = '',
children
}) {
let renderedContent = undefined;
const isDataObject = typeof children === 'object' && 'content' in children;
const content = isDataObject ? children.content : children;
if (content) {
if (Array.isArray(content)) {
renderedContent = content.map((contentItem, n) => React.createElement(DrawerListOptionItem, {
key: hash + n,
className: `item-nr-${n + 1}`
}, isDataObject && children.render ? children.render(contentItem, hash + n) : contentItem));
} else {
renderedContent = React.createElement(DrawerListOptionItem, null, isDataObject && children.render ? children.render(content, hash) : content);
}
}
return React.createElement(React.Fragment, null, renderedContent, isDataObject && children.suffix_value && React.createElement(DrawerListOptionItem, {
className: "dnb-drawer-list__option__suffix"
}, children.suffix_value));
}
function DrawerListOptionItem({
children = undefined,
className = null,
...props
}) {
return React.createElement("span", _extends({
className: classnames('dnb-drawer-list__option__item', className)
}, props), children);
}
export function DrawerListHorizontalItem({
className,
...props
}) {
return React.createElement(DrawerListOptionItem, _extends({
className: classnames('dnb-drawer-list__option__item--horizontal', className)
}, props));
}
//# sourceMappingURL=DrawerListItem.js.map