import React, { useRef, useState, useEffect, useCallback } from 'react'; import PropTypes from 'prop-types'; import { usePopup } from '../../../utils/hooks/'; import { PageStore } from '../../../utils/stores/'; import { PopupMain } from '../../_shared'; import { ManageItemDate } from './ManageMediaItem'; function ManageItemCommentAuthor(props) { if (void 0 !== props.name && void 0 !== props.url) { return ( {props.name} ); } if (void 0 !== props.name) { return props.name; } if (void 0 !== props.url) { return props.url; } return N/A; } function ManageItemCommentActions(props) { const [popupContentRef, PopupContent, PopupTrigger] = usePopup(); const [isOpenPopup, setIsOpenPopup] = useState(false); function onPopupShow() { setIsOpenPopup(true); } function onPopupHide() { setIsOpenPopup(false); } function onCancel() { popupContentRef.current.tryToHide(); if ('function' === typeof props.onCancel) { props.onCancel(); } } function onProceed() { popupContentRef.current.tryToHide(); if ('function' === typeof props.onProceed) { props.onProceed(); } } const positionState = { updating: false, pending: 0 }; const onWindowResize = useCallback(function () { if (positionState.updating) { positionState.pending = positionState.pending + 1; } else { positionState.updating = true; const popupElem = props.containerRef.current.querySelector('.popup'); if (popupElem) { const containerClientRect = props.containerRef.current.getBoundingClientRect(); popupElem.style.position = 'fixed'; popupElem.style.left = containerClientRect.x + 'px'; if (document.body.offsetHeight < 32 + popupElem.offsetHeight + window.scrollY + containerClientRect.top) { popupElem.style.top = containerClientRect.y - popupElem.offsetHeight + 'px'; } else { popupElem.style.top = containerClientRect.y + containerClientRect.height + 'px'; } } setTimeout(() => { positionState.updating = false; if (positionState.pending) { positionState.pending = 0; onWindowResize(); } }, 8); } }, []); useEffect(() => { if (isOpenPopup) { PageStore.on('window_scroll', onWindowResize); PageStore.on('window_resize', onWindowResize); onWindowResize(); } else { PageStore.removeListener('window_scroll', onWindowResize); PageStore.removeListener('window_resize', onWindowResize); } }, [isOpenPopup]); return (
{void 0 === props.media_url ? null : ( View media )} {void 0 === props.media_url || props.hideDeleteAction ? null : |}
Comment removal You're willing to remove comment?

); } export function ManageCommentsItem(props) { const actionsContainerRef = useRef(null); const [selected, setSelected] = useState(false); function onRowCheck() { setSelected(!selected); } function onClickProceed() { if ('function' === typeof props.onProceedRemoval) { props.onProceedRemoval(props.uid); } } useEffect(() => { if ('function' === typeof props.onCheckRow) { props.onCheckRow(props.uid, selected); } }, [selected]); useEffect(() => { setSelected(props.selectedRow); }, [props.selectedRow]); return (
{void 0 === props.text ? N/A : props.text} {void 0 === props.text || (void 0 === props.media_url && props.hideDeleteAction) ? null : ( )}
); } ManageCommentsItem.propTypes = { author_name: PropTypes.string, author_url: PropTypes.string, author_thumbnail_url: PropTypes.string, add_date: PropTypes.string, text: PropTypes.string, selectedRow: PropTypes.bool.isRequired, hideDeleteAction: PropTypes.bool.isRequired, uid: PropTypes.string.isRequired, };