@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
- if (target == null ? void 0 : target.open) {
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, true);
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, accordionToggleExpanded !== current);
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" : ""} `;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vodafone_de/brix-components",
3
3
  "description": "Brix is the digital design system for vodafone.de",
4
- "version": "11.3.1",
4
+ "version": "11.3.2",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
7
7
  ".": {