docbrown/app/javascript/listings/singleListing/SingleListing.jsx
Katie Davis 76453b41fb
Updates ESLint rules to error on default imports (#12512)
* add rule

* add named imports

* more missed files

* so many files
2021-02-02 10:24:03 -05:00

125 lines
2.7 KiB
JavaScript

import { h, Component } from 'preact';
import PropTypes from 'prop-types';
import { Header } from './Header';
import { AuthorInfo } from './AuthorInfo';
import { listingPropTypes } from './listingPropTypes';
export class SingleListing extends Component {
listingContent = (
listing,
currentUserId,
onChangeCategory,
onOpenModal,
onAddTag,
) => {
return (
<div className="relative">
<Header
listing={listing}
currentUserId={currentUserId}
onTitleClick={onOpenModal}
onAddTag={onAddTag}
/>
<div
className="mb-4"
dangerouslySetInnerHTML={{ __html: listing.processed_html }} // eslint-disable-line react/no-danger
/>
<AuthorInfo listing={listing} onCategoryClick={onChangeCategory} />
</div>
);
};
listingInline = (
listing,
currentUserId,
onChangeCategory,
onOpenModal,
onAddTag,
) => {
return (
<div
className="single-listing relative crayons-card"
id={`single-listing-${listing.id}`}
data-testid={`single-listing-${listing.id}`}
>
<div className="listing-content p-4">
{this.listingContent(
listing,
currentUserId,
onChangeCategory,
onOpenModal,
onAddTag,
)}
</div>
</div>
);
};
listingModal = (
listing,
currentUserId,
onChangeCategory,
onOpenModal,
onAddTag,
) => {
return (
<div
className="single-listing relative"
id={`single-listing-${listing.id}`}
data-testid={`single-listing-${listing.id}`}
>
<div className="listing-content">
{this.listingContent(
listing,
currentUserId,
onChangeCategory,
onOpenModal,
onAddTag,
)}
</div>
</div>
);
};
render() {
const {
listing,
currentUserId,
onChangeCategory,
onOpenModal,
isOpen,
onAddTag,
} = this.props;
return isOpen
? this.listingModal(
listing,
currentUserId,
onChangeCategory,
onOpenModal,
onAddTag,
)
: this.listingInline(
listing,
currentUserId,
onChangeCategory,
onOpenModal,
onAddTag,
);
}
}
SingleListing.propTypes = {
listing: listingPropTypes.isRequired,
onOpenModal: PropTypes.func.isRequired,
onChangeCategory: PropTypes.func.isRequired,
isOpen: PropTypes.bool.isRequired,
currentUserId: PropTypes.number,
onAddTag: PropTypes.func.isRequired,
};
SingleListing.defaultProps = {
currentUserId: null,
};
SingleListing.displayName = 'SingleListing';