/** * List of editable items. * Has sort, add and remove controls * Item has its own React.Node, which will be displayed in list. * * @author: Denis Makarov * @date: 2020-10-07 */ import * as React from 'react'; import * as styles from './editableValuesList.m.scss'; import {IEditableListItemComponentProps, IValueListElement} from './EditableValuesList.types'; import {Button} from '../../component'; import {SIZE} from '../../constants'; import {safeInvoke} from '../..'; interface IProps { onOrderChange?: (id: string, moveUp: boolean) => void; onRemove: (itemId: string) => void; elements: IValueListElement []; extraItems: JSX.Element; showOrderControls: boolean; } const defaultProps = { showOrderControls: true }; export { IValueListElement, IEditableListItemComponentProps }; export class EditableValuesList extends React.Component { static defaultProps = defaultProps; override render () { return (
{this.props.extraItems}
{this.props.elements.map((el: IValueListElement) => { return (
{el.node}
{this.props.showOrderControls && (
); })}
); } }