import React from 'react'; import {AbstractCoreComponent, CoreComponentState} from "../../../AbstractCoreComponent"; import {RoutedCoreComponentModel, RoutedModel, isItemRouted} from "../../../routing/RoutedCoreComponent"; import {RoutedLink} from "../../../routing/RoutedLink"; export interface ListV2Item extends RoutedModel{ url?:string lastModified?:number lastModifiedFormatted?:string description?:string path:string title:string } export interface ListV2Model extends RoutedCoreComponentModel{ items:ListV2Item[] dateFormatString: string showDescription: boolean showModificationDate: boolean linkItems: boolean } export function ListV2IsEmptyFn(props:ListV2Model): boolean{ return props.items == null || props.items.length === 0; } export class ListV2 extends AbstractCoreComponent { public static defaultProps = { isInEditor: false, hidePlaceHolder: false }; constructor(props: Model) { super(props, 'cmp-list', 'ListV2'); } isEmpty(): boolean{ return ListV2IsEmptyFn(this.props); } renderListItemContent(item:ListV2Item, index:number){ return ( <> {item.title} {this.props.showModificationDate && this.renderItemModificationDate(item,index)} ) } renderItemModificationDate(item:ListV2Item, index:number){ const dateStringToDisplay = item.lastModifiedFormatted ? item.lastModifiedFormatted : ""; return ( {dateStringToDisplay} ) } renderListAnchor(item:ListV2Item, index:number){ return ( {this.renderListItemContent(item,index)} ) } renderListItemDescription(item: ListV2Item, index: number) { return ( ${item.description} ) } renderListItem(item:ListV2Item, index:number){ return (
  • {this.props.linkItems && !!item.url && this.renderListAnchor(item,index)} {!this.props.linkItems && this.renderListItemContent(item,index)} {this.props.showDescription && this.renderListItemDescription(item,index)}
  • ) } renderComponent(){ return ( ) } }