/** * @fileoverview Note item component. */ import PropTypes from 'prop-types' import React from 'react' import { isArray } from 'lodash' import CSSModules from 'browser/lib/CSSModules' import { getTodoStatus } from 'browser/lib/getTodoStatus' import styles from './NoteItem.styl' import TodoProcess from './TodoProcess' import i18n from 'browser/lib/i18n' /** * @description Tag element component. * @param {string} tagName * @return {React.Component} */ const TagElement = ({ tagName, color }) => ( #{tagName} ) /** * @description Tag element list component. * @param {Array|null} tags * @param {boolean} showTagsAlphabetically * @return {React.Component} */ const TagElementList = (tags, showTagsAlphabetically, tagConfig) => { if (!isArray(tags)) { return [] } if (showTagsAlphabetically) { return _.sortBy(tags).map(tag => TagElement({ tagName: tag })) } else { return tags.map(tag => TagElement({ tagName: tag, color: tagConfig[tag] })) } } /** * @description Note item component when using normal display mode. * @param {boolean} isActive * @param {Object} note * @param {Function} handleNoteClick * @param {Function} handleNoteContextMenu * @param {Function} handleDragStart * @param {string} dateDisplay */ const NoteItem = ({ isActive, note, dateDisplay, handleNoteClick, handleNoteContextMenu, handleDragStart, pathname, storageName, folderName, viewType, showTagsAlphabetically, tagConfig }) => (