import React, { useEffect, useState } from "react"; import { IconClose } from "../../../icons"; import { useDashboardContext } from "../DashboardContext"; import MultiSelect from "./MultiSelect"; import { __ } from "@wordpress/i18n"; import Select from "react-select"; import { applyFilters } from "@wordpress/hooks"; import { toast } from "react-toastify"; import { decodeEntities } from "@wordpress/html-entities"; import useDebounce from "../hooks/useDebounce"; import { addQueryArgs } from "@wordpress/url"; import { useQuery } from "@tanstack/react-query"; import apiFetch from "@wordpress/api-fetch"; import useAuthorsQuery from "../hooks/useAuthorsQuery"; import useAuthorsSearchQuery from "../hooks/useAuthorsSearchQuery"; const GridQuickEdit = ({ data, setQuickEdit, setCategoriesPosts, docCategoriesQueryParams }) => { const { docData, docId: selectedDocId, termId: selectedTermId } = data; const [saveText, setSaveText] = useState("Save"); const [quickEditData, setQuickEditData] = useState({ author: "", title: "", slug: "", comment_status: "", status: "", date: "", password: "", }); const [currentDocUser, setCurrentDocUser] = useState({}); const { usersLoading, authors, authorParams, setAuthorParams, isNextPageAvailable } = useAuthorsQuery('authors', { per_page:10, page:1 }); const { searchLoading, searchedUsers, setUserSearchValue } = useAuthorsSearchQuery(); const [privacyOption, setPrivacyOption] = useState(""); useEffect(() => { setQuickEditData({ author: docData?.author, title: docData.title, slug: docData.slug, comment_status: docData.comment_status, status: docData.status, date: docData?.date, password: docData?.password, }); setCurrentDocUser({ value: docData.author, label: docData.author_info.name, }); if (docData.status == "private") { setPrivacyOption("private"); } else if (docData?.content?.protected || docData?.password?.length > 0) { setPrivacyOption("password"); } else { setPrivacyOption("none"); } }, [docData]); const statusOptions = [ { value: "publish", label: __("Published", "betterdocs") }, { value: "pending", label: __("Pending review", "betterdocs") }, { value: "draft", label: __("Draft", "betterdocs") }, ]; return (

{decodeEntities(quickEditData.title)}

setQuickEdit((prevState) => { return { ...prevState, isOpen: !prevState.isOpen }; }) } className="betterdocs-quick-edit-close" >
option.value === quickEditData.status, )} onChange={(selectedOption) => { setQuickEditData((state) => ({ ...state, status: selectedOption?.value, })); }} options={statusOptions} classNamePrefix="quick-edit-select-fields" />
setQuickEditData((state) => ({ ...state, title: event.target.value, })) } />
setQuickEditData((state) => ({ ...state, slug: event.target.value, })) } />
{ setQuickEditData((state) => ({ ...state, date: e?.target?.value, })); }} />
{ setPrivacyOption(e.target.value); const defaultData = { ...quickEditData, status: docData?.status }; if( docData?.password?.length > 0 ) { defaultData['password'] = docData?.password; } setQuickEditData((prev) => (defaultData)); }} />
{ setPrivacyOption(e.target.value); if ( quickEditData?.hasOwnProperty( "password", ) ) { delete quickEditData["password"]; } setQuickEditData((prev) => ({ ...quickEditData, status: "private", })); }} />
{ setPrivacyOption(e.target.value); setQuickEditData((prev) => ({ ...quickEditData, title: quickEditData?.title?.replace( "Private:", "", ), status: "publish", password:"" })); }} />
{privacyOption === "password" && (
0 ? quickEditData?.password : "" } onChange={(e) => { setQuickEditData((state) => ({ ...state, status: docData?.status == "private" ? "publish" : docData?.status, password: e?.target?.value, })); }} />
)} {betterdocs_admin?.multiple_kb == 1 && applyFilters("quick_edit_mkb_filter", "", [ docData, setQuickEditData, MultiSelect, ])}
setQuickEditData((prev) => ({ ...prev, comment_status: event.target.checked ? "open" : "closed", })) } />
); }; export default GridQuickEdit;