// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; import * as classnames from "classnames"; import AccessTime from '@material-ui/icons/AccessTime'; import Announcement from '@material-ui/icons/Announcement'; import ArrowDropDown from '@material-ui/icons/ArrowDropDown'; import BubbleChart from '@material-ui/icons/BubbleChart'; import Cached from '@material-ui/icons/Cached'; import Code from '@material-ui/icons/Code'; import ChevronLeft from '@material-ui/icons/ChevronLeft'; import ChevronRight from '@material-ui/icons/ChevronRight'; import Close from '@material-ui/icons/Close'; import ContentCopy from '@material-ui/icons/ContentCopy'; import CreateNewFolder from '@material-ui/icons/CreateNewFolder'; import Delete from '@material-ui/icons/Delete'; import Edit from '@material-ui/icons/Edit'; import FolderIcon from '@material-ui/icons/Folder'; import GetApp from '@material-ui/icons/GetApp'; import Help from '@material-ui/icons/Help'; import Inbox from '@material-ui/icons/Inbox'; import Info from '@material-ui/icons/Info'; import Input from '@material-ui/icons/Input'; import Menu from '@material-ui/icons/Menu'; import MoreVert from '@material-ui/icons/MoreVert'; import NotificationsIcon from '@material-ui/icons/Notifications'; import People from '@material-ui/icons/People'; import Person from '@material-ui/icons/Person'; import PersonAdd from '@material-ui/icons/PersonAdd'; import PlayArrow from '@material-ui/icons/PlayArrow'; import RateReview from '@material-ui/icons/RateReview'; import Search from '@material-ui/icons/Search'; import Star from '@material-ui/icons/Star'; import StarBorder from '@material-ui/icons/StarBorder'; export enum IconTypes { ACCESS_TIME = 'access_time', ANNOUNCEMENT = 'announcement', ARROW_DROP_DOWN = 'arrow_drop_down', BUBBLE_CHART = 'bubble_chart', CACHED = 'cached', CODE = 'code', CHEVRON_LEFT = 'chevron_left', CHEVRON_RIGHT = 'chevron-right', COLLECTION = 'collection', CLOSE = 'close', CONTENT_COPY = 'content_copy', CREATE_NEW_FOLDER = 'create_new_folder', DELETE = 'delete', EDIT = 'edit', FOLDER = 'folder', GET_APP = 'get_app', HELP = 'help', INBOX = 'inbox', INFO = 'info', INPUT = 'input', MENU = 'menu', MORE_VERT = 'more_vert', NOTIFICATIONS = 'notifications', PEOPLE = 'people', PERSON = 'person', PERSON_ADD = 'person_add', PLAY_ARROW = 'play_arrow', RATE_REVIEW = 'rate_review', SEARCH = 'search', STAR = 'star', STAR_BORDER = 'star_border' } interface IconBaseDataProps { icon: IconTypes; className?: string; } type IconBaseProps = IconBaseDataProps; interface IconBaseState { icon: IconTypes; } const getSpecificIcon = (props: any) => ({ [IconTypes.ACCESS_TIME]: , [IconTypes.ANNOUNCEMENT]: , [IconTypes.ARROW_DROP_DOWN]: , [IconTypes.BUBBLE_CHART]: , [IconTypes.CACHED]: , [IconTypes.CODE]: , [IconTypes.CHEVRON_LEFT]: , [IconTypes.CHEVRON_RIGHT]: , [IconTypes.COLLECTION]: , [IconTypes.CLOSE]: , [IconTypes.CONTENT_COPY]: , [IconTypes.CREATE_NEW_FOLDER]: , [IconTypes.DELETE]: , [IconTypes.EDIT]: , [IconTypes.FOLDER]: , [IconTypes.GET_APP]: , [IconTypes.HELP]: , [IconTypes.INBOX]: , [IconTypes.INFO]: , [IconTypes.INPUT]: , [IconTypes.MENU]: , [IconTypes.MORE_VERT]: , [IconTypes.NOTIFICATIONS]: , [IconTypes.PEOPLE]: , [IconTypes.PERSON]: , [IconTypes.PERSON_ADD]: , [IconTypes.PLAY_ARROW]: , [IconTypes.RATE_REVIEW]: , [IconTypes.SEARCH]: , [IconTypes.STAR]: , [IconTypes.STAR_BORDER]: }); class IconBase extends React.Component { state = { icon: IconTypes.FOLDER, }; render() { return getSpecificIcon(this.props)[this.props.icon]; } } export default IconBase;