import React, {useEffect, useReducer, useRef, useState} from "react"; import localizeSettings from "./localizeSettings"; import {__} from "@wordpress/i18n"; import {createPortal} from "react-dom"; import DisplayShopLabelTooltip from "../components/DisplayShopLabelTooltip"; import DisplayShopLabelNotice from "../components/DisplayShopLabelNotice"; import SchemaConditionTooltip from "../components/SchemaConditionTooltip"; import ProductConditionTooltip from "../components/ProductConditionTooltip"; import LockIcon from "../components/LockIcon"; import {FreemiusOverlay} from "../components/FreemiusOverlay"; const {conditions, globalSettings} = localizeSettings; type State = { hulk_woo_pcm_productCondition: string; hulk_woo_pcm_productConditionCustom: string; hulk_woo_pcm_productConditionCustomGroup: string; hulk_woo_pcm_productConditionLabel: string; hulk_woo_pcm_productConditionShopLabel: string; }; type Action = Partial; const ProductQuickEditMetaSettings = () => { const elementRef = useRef(null); const [count, setCount] = useState(0); const [settings, setSettings] = useState({}); useEffect(() => { const $ = (window as any).jQuery; function handler() { const elementTr = this as HTMLTableRowElement; elementRef.current = elementTr.querySelector( "#hulk_woo_pcm_settings", ); setCount((prevState) => prevState + 1); if (elementTr.classList.contains("quick-edit-row")) { const postId = elementTr .getAttribute("id") ?.replace("post-", "") .replace("edit-", ""); const inlineData = elementTr .closest(".wp-list-table") ?.querySelector( `[id='post-${postId}'] .hulk_woo_pcm_inline_data`, ); if (!inlineData) { return; } setSettings({ hulk_woo_pcm_productCondition: inlineData.getAttribute( "data-hulk_woo_pcm_productCondition", ) ?? "", hulk_woo_pcm_productConditionCustom: inlineData.getAttribute( "data-hulk_woo_pcm_productConditionCustom", ) ?? "", hulk_woo_pcm_productConditionCustomGroup: inlineData.getAttribute( "data-hulk_woo_pcm_productConditionCustomGroup", ) ?? "", hulk_woo_pcm_productConditionLabel: inlineData.getAttribute( "data-hulk_woo_pcm_productConditionLabel", ) ?? "", hulk_woo_pcm_productConditionShopLabel: inlineData.getAttribute( "data-hulk_woo_pcm_productConditionShopLabel", ) ?? "", }); } else { setSettings({ hulk_woo_pcm_productCondition: "", hulk_woo_pcm_productConditionCustom: "", hulk_woo_pcm_productConditionCustomGroup: "", hulk_woo_pcm_productConditionLabel: "", hulk_woo_pcm_productConditionShopLabel: "", }); } } $(document).on("focus.hulk_woo_pcm", ".inline-edit-row", handler); return () => { $(document).off("focus.hulk_woo_pcm"); }; }, []); if (count > 0 && elementRef.current) { return createPortal( , elementRef.current, ); } return null; }; function MainComponent({settings}: { settings: Action }) { const [state, dispatch] = useReducer( (prevState: State, action: Action) => ({...prevState, ...action}), { hulk_woo_pcm_productCondition: "", hulk_woo_pcm_productConditionCustom: "", hulk_woo_pcm_productConditionCustomGroup: "", hulk_woo_pcm_productConditionLabel: "", hulk_woo_pcm_productConditionShopLabel: "", ...settings, }, ); return ( <>
{state.hulk_woo_pcm_productCondition && ( <> {state.hulk_woo_pcm_productCondition === "other" && (
)}
)} ); } export default ProductQuickEditMetaSettings;