/* * << * Davinci * == * Copyright (C) 2016 - 2017 EDP * == * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * >> */ import React, { useCallback, useMemo } from 'react' import { Tag } from 'antd' import Toolbar from './Toolbar' import { IProjectItem, ItemToolbarProps } from './types' const styles = require('./item.less') const ProjectItem: React.FC & { Toolbar: React.FC } = ({ tags, backgroundImg, title, description, onClick, style, children }) => { const handleClick: React.MouseEventHandler = useCallback( (e: React.MouseEvent) => { if (onClick) { onClick(e) } }, [onClick] ) const getBackgroundImg: React.CSSProperties = useMemo(() => { return { backgroundImage: backgroundImg } }, [backgroundImg]) const getTags: React.ReactNode[] = useMemo(() => { return tags && tags.length > 0 ? tags.map((tag) => { return ( {tag.text} ) }) : [] }, [tags]) const body: React.ReactNode = useMemo(() => { return children ?
{children}
: [] }, [children]) return (
{getTags}

{title ? title : ''}

{description ? description : ''}

{body}
) } ProjectItem.Toolbar = Toolbar export default ProjectItem