From 154048f766f05de916fbaef3e9810d456868030f Mon Sep 17 00:00:00 2001 From: Oleg Isonen Date: Sat, 8 Feb 2025 21:06:35 +0000 Subject: [PATCH] handle css insert --- .../sections/advanced/advanced.tsx | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/apps/builder/app/builder/features/style-panel/sections/advanced/advanced.tsx b/apps/builder/app/builder/features/style-panel/sections/advanced/advanced.tsx index 81d5112763a3..371818f6dc0e 100644 --- a/apps/builder/app/builder/features/style-panel/sections/advanced/advanced.tsx +++ b/apps/builder/app/builder/features/style-panel/sections/advanced/advanced.tsx @@ -150,14 +150,14 @@ const getNewPropertyDescription = (item: null | SearchItem) => { const insertStyles = (text: string) => { const parsedStyles = parseCss(`selector{${text}}`); if (parsedStyles.length === 0) { - return false; + return []; } const batch = createBatchUpdate(); for (const { property, value } of parsedStyles) { batch.setProperty(property)(value); } batch.publish({ listed: true }); - return true; + return parsedStyles; }; const sortedProperties = Object.keys(propertiesData) @@ -180,9 +180,11 @@ const sortedProperties = Object.keys(propertiesData) const AddProperty = ({ onSelect, onClose, + onSubmit, }: { onSelect: (value: StyleProperty) => void; onClose: () => void; + onSubmit: (value: string) => void; }) => { const [item, setItem] = useState({ value: "", @@ -223,10 +225,8 @@ const AddProperty = ({ {...combobox.getComboboxProps()} onSubmit={(event) => { event.preventDefault(); - const isInserted = insertStyles(item.value); - if (isInserted) { - onClose(); - } + onSubmit(item.value); + onClose(); }} > @@ -534,13 +534,19 @@ const AdvancedProperty = memo( export const Section = () => { const [isAdding, setIsAdding] = useState(false); const advancedProperties = useStore($advancedProperties); - let [recentProperties, setRecentProperties] = useState([]); + const [recentProperties, setRecentProperties] = useState([]); // In case the property was deleted, it will be removed from advanced, so we need to remove it from recent too. - recentProperties = recentProperties.filter((property) => + const recentPropertiesCleaned = recentProperties.filter((property) => advancedProperties.includes(property) ); + const addRecentProperties = (properties: StyleProperty[]) => { + setRecentProperties( + Array.from(new Set([...recentProperties, ...properties])) + ); + }; + return ( { onAdd={() => setIsAdding(true)} > - {recentProperties.map((property, index, properties) => ( + {recentPropertiesCleaned.map((property, index, properties) => ( { { listed: true } ); } - setRecentProperties( - Array.from(new Set([...recentProperties, property])) - ); + addRecentProperties([property]); + }} + onSubmit={(value) => { + const styles = insertStyles(value); + const insertedProperties = styles.map(({ property }) => property); + addRecentProperties(insertedProperties); }} onClose={() => setIsAdding(false)} /> @@ -585,10 +594,12 @@ export const Section = () => { /> )} - {recentProperties.length > 0 && } + {recentPropertiesCleaned.length > 0 && } {advancedProperties - .filter((property) => recentProperties.includes(property) === false) + .filter( + (property) => recentPropertiesCleaned.includes(property) === false + ) .map((property) => ( ))}