// Copyright 2017-2026 @pezkuwi/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Props as ExpanderProps } from './Expander.js';
import React, { useCallback, useMemo } from 'react';
import Table from './Table/index.js';
import Expander from './Expander.js';
import { styled } from './styled.js';
interface Props extends ExpanderProps {
empty?: string;
renderChildren?: (() => React.ReactNode[] | undefined | null) | null;
}
function mapRow (row: React.ReactNode, key: number): React.ReactNode {
return (
| {row} |
);
}
function ExpanderScroll ({ children, className, empty, renderChildren, summary }: Props): React.ReactElement {
const hasContent = useMemo(
() => !!(renderChildren || children),
[children, renderChildren]
);
const innerRender = useCallback(
(): React.ReactNode => (renderChildren || children) && (
{renderChildren
? renderChildren()?.map(mapRow)
: Array.isArray(children)
? children.map(mapRow)
: | {children} |
}
),
[children, empty, renderChildren]
);
return (
);
}
const StyledExpander = styled(Expander)`
.tableContainer {
overflow-y: scroll;
display: block;
margin: 0 0 0 auto;
max-height: 13.75rem;
max-width: 25rem;
overflow-x: hidden;
}
`;
export default React.memo(ExpanderScroll);