This commit is contained in:
iqudoo
2026-06-15 14:55:54 +08:00
parent ac117425d7
commit 1d506e0c71
3 changed files with 15 additions and 37 deletions

View File

@@ -188,9 +188,9 @@ interface PropSidebarProps {
const MOBILE_PROP_MODULES: { id: MobilePropModule; label: string; icon: React.ReactNode }[] = [
{ id: 'properties', label: '属性', icon: <Sliders className="w-4 h-4" /> },
{ id: 'nudge', label: '微调', icon: <Move className="w-4 h-4" /> },
{ id: 'content', label: '内容', icon: <Link2 className="w-4 h-4" /> },
{ id: 'layers', label: '图层', icon: <Layers className="w-4 h-4" /> },
{ id: 'nudge', label: '微调', icon: <Move className="w-4 h-4" /> },
];
export const PropSidebar: React.FC<PropSidebarProps> = ({
@@ -246,27 +246,6 @@ export const PropSidebar: React.FC<PropSidebarProps> = ({
const templateVariables = useMemo(() => extractTemplateVariables(template), [template]);
const addableVisibilityVariables = useMemo(() => {
if (!selectedElem || !isConditionalVisibility(selectedElem)) return [];
const rules = resolveVisibilityRules(selectedElem);
return templateVariables.filter(
(v) => !rules.some((r) => r.target !== 'content' && r.variable === v)
);
}, [selectedElem, templateVariables]);
const visibilityRuleDialogVariableOptions = useMemo(() => {
if (!selectedElem || !visibilityRuleDialog) return [];
const rules = resolveVisibilityRules(selectedElem);
if (visibilityRuleDialog.mode === 'add') {
return addableVisibilityVariables;
}
const usedByOthers = rules
.filter((_, i) => i !== visibilityRuleDialog.index)
.filter((r) => r.target !== 'content')
.map((r) => r.variable);
return templateVariables.filter((v) => !usedByOthers.includes(v));
}, [selectedElem, visibilityRuleDialog, addableVisibilityVariables, templateVariables]);
const editingVisibilityRule = useMemo(() => {
if (!selectedElem || visibilityRuleDialog?.mode !== 'edit') return undefined;
return resolveVisibilityRules(selectedElem)[visibilityRuleDialog.index];
@@ -2314,7 +2293,7 @@ export const PropSidebar: React.FC<PropSidebarProps> = ({
open={visibilityRuleDialog !== null}
mode={visibilityRuleDialog?.mode ?? 'add'}
initialRule={editingVisibilityRule}
variableOptions={visibilityRuleDialogVariableOptions}
variableOptions={templateVariables}
onClose={() => setVisibilityRuleDialog(null)}
onConfirm={handleConfirmVisibilityRule}
/>