@vodafone_de/brix-components 11.3.1 → 11.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -131,16 +131,19 @@ const Accordion = ({
|
|
|
131
131
|
...props
|
|
132
132
|
}) => {
|
|
133
133
|
const ref = useRef(null);
|
|
134
|
+
const lastOpenStateRef = useRef(expanded);
|
|
134
135
|
const [toggle, setToggle] = useState(expanded ? accordionToggleExpanded : accordionToggleCollapsed);
|
|
135
136
|
const [animated, setAnimated] = useState(true);
|
|
136
137
|
useEffect(() => {
|
|
137
138
|
const target = ref.current;
|
|
138
139
|
const observer = new MutationObserver(() => {
|
|
139
|
-
|
|
140
|
+
const currentOpen = (target == null ? void 0 : target.open) ?? false;
|
|
141
|
+
if (currentOpen !== lastOpenStateRef.current) {
|
|
142
|
+
lastOpenStateRef.current = currentOpen;
|
|
140
143
|
setAnimated(false);
|
|
141
|
-
setToggle(accordionToggleExpanded);
|
|
144
|
+
setToggle(currentOpen ? accordionToggleExpanded : accordionToggleCollapsed);
|
|
142
145
|
if (props.handleOnToggle) {
|
|
143
|
-
props.handleOnToggle(uid,
|
|
146
|
+
props.handleOnToggle(uid, currentOpen);
|
|
144
147
|
}
|
|
145
148
|
}
|
|
146
149
|
});
|
|
@@ -151,7 +154,7 @@ const Accordion = ({
|
|
|
151
154
|
});
|
|
152
155
|
}
|
|
153
156
|
return () => observer.disconnect();
|
|
154
|
-
}, []);
|
|
157
|
+
}, [uid, props]);
|
|
155
158
|
useEffect(() => {
|
|
156
159
|
if (expanded && accordionToggleExpanded === toggle) {
|
|
157
160
|
return;
|
|
@@ -168,9 +171,11 @@ const Accordion = ({
|
|
|
168
171
|
const handleToggle = (event) => {
|
|
169
172
|
event.preventDefault();
|
|
170
173
|
const current = toggle;
|
|
174
|
+
const willExpand = accordionToggleExpanded !== current;
|
|
175
|
+
lastOpenStateRef.current = willExpand;
|
|
171
176
|
setToggle(accordionToggleExpanded === current ? accordionToggleCollapsing : accordionToggleExpanded);
|
|
172
177
|
if (props.handleOnToggle) {
|
|
173
|
-
props.handleOnToggle(uid,
|
|
178
|
+
props.handleOnToggle(uid, willExpand);
|
|
174
179
|
}
|
|
175
180
|
};
|
|
176
181
|
const onTransition = (open) => {
|
|
@@ -179,6 +184,10 @@ const Accordion = ({
|
|
|
179
184
|
}
|
|
180
185
|
if (!open) {
|
|
181
186
|
setToggle(accordionToggleCollapsed);
|
|
187
|
+
lastOpenStateRef.current = false;
|
|
188
|
+
}
|
|
189
|
+
if (open) {
|
|
190
|
+
lastOpenStateRef.current = true;
|
|
182
191
|
}
|
|
183
192
|
};
|
|
184
193
|
const className = `${props.className ? props.className : ""} ${accordionToggleCollapsing === toggle ? "collapsing" : ""} `;
|