fix
This commit is contained in:
@@ -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}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user