@lumx/react 3.13.3-alpha.1 → 3.13.3-alpha.3

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.
package/index.js CHANGED
@@ -523,7 +523,6 @@ const CSS_PREFIX = 'lumx';
523
523
  * you need to update their scss counterpart as well
524
524
  */
525
525
  const DIALOG_TRANSITION_DURATION = 400;
526
- const EXPANSION_PANEL_TRANSITION_DURATION = 400;
527
526
  const NOTIFICATION_TRANSITION_DURATION = 200;
528
527
 
529
528
  /**
@@ -7157,13 +7156,13 @@ const ExpansionPanel = forwardRef((props, ref) => {
7157
7156
  }, label);
7158
7157
  const toggleOpen = event => {
7159
7158
  const shouldOpen = !isOpen;
7160
- if (isFunction(onOpen) && shouldOpen) {
7159
+ if (onOpen && shouldOpen) {
7161
7160
  onOpen(event);
7162
7161
  }
7163
- if (isFunction(onClose) && !shouldOpen) {
7162
+ if (onClose && !shouldOpen) {
7164
7163
  onClose(event);
7165
7164
  }
7166
- if (isFunction(onToggleOpen)) {
7165
+ if (onToggleOpen) {
7167
7166
  onToggleOpen(shouldOpen, event);
7168
7167
  }
7169
7168
  };
@@ -7180,17 +7179,32 @@ const ExpansionPanel = forwardRef((props, ref) => {
7180
7179
  }));
7181
7180
  const wrapperRef = useRef(null);
7182
7181
 
7183
- /** Hide the children at the end of the transition */
7184
- const isChildrenVisible = useTransitionVisibility(wrapperRef, !!isOpen, EXPANSION_PANEL_TRANSITION_DURATION);
7185
-
7186
- // Switch max height on/off to activate the CSS transition (updates when children changes).
7187
- const [maxHeight, setMaxHeight] = useState('0');
7188
- useEffect(() => {
7189
- const height = isOpen ? get(wrapperRef.current, 'offsetHeight', 0) : 0;
7190
- setMaxHeight(`${height}px`);
7182
+ // Children visible while the open/close transition is running
7183
+ const [isChildrenVisible, setChildrenVisible] = React__default.useState(isOpen);
7184
+ const isOpenRef = React__default.useRef(isOpen);
7185
+ React__default.useEffect(() => {
7186
+ if (isOpen) {
7187
+ setChildrenVisible(true);
7188
+ } else if (!IS_BROWSER) {
7189
+ // Outside a browser we can't wait for the transition
7190
+ setChildrenVisible(false);
7191
+ }
7192
+ isOpenRef.current = isOpen;
7191
7193
  }, [isOpen]);
7192
- const onTransitionEnd = React__default.useCallback(() => {
7193
- setMaxHeight(undefined);
7194
+
7195
+ // Change children visibility on transition end
7196
+ React__default.useEffect(() => {
7197
+ const {
7198
+ current: wrapper
7199
+ } = wrapperRef;
7200
+ if (!IS_BROWSER || !wrapper) {
7201
+ return undefined;
7202
+ }
7203
+ const onTransitionEnd = () => {
7204
+ setChildrenVisible(isOpenRef.current);
7205
+ };
7206
+ wrapper.addEventListener('transitionend', onTransitionEnd);
7207
+ return () => wrapper.removeEventListener('transitionend', onTransitionEnd);
7194
7208
  }, []);
7195
7209
  return /*#__PURE__*/React__default.createElement("section", _extends({
7196
7210
  ref: ref
@@ -7210,15 +7224,11 @@ const ExpansionPanel = forwardRef((props, ref) => {
7210
7224
  emphasis: Emphasis.low,
7211
7225
  icon: isOpen ? mdiChevronUp : mdiChevronDown,
7212
7226
  "aria-expanded": isOpen || 'false'
7213
- })))), (isOpen || isChildrenVisible) && /*#__PURE__*/React__default.createElement("div", {
7227
+ })))), /*#__PURE__*/React__default.createElement("div", {
7214
7228
  className: `${CLASSNAME$Z}__wrapper`,
7215
- style: {
7216
- maxHeight
7217
- },
7218
- onTransitionEnd: onTransitionEnd
7219
- }, /*#__PURE__*/React__default.createElement("div", {
7220
- className: `${CLASSNAME$Z}__container`,
7221
7229
  ref: wrapperRef
7230
+ }, (isOpen || isChildrenVisible) && /*#__PURE__*/React__default.createElement("div", {
7231
+ className: `${CLASSNAME$Z}__container`
7222
7232
  }, /*#__PURE__*/React__default.createElement("div", {
7223
7233
  className: `${CLASSNAME$Z}__content`
7224
7234
  }, content), footer && /*#__PURE__*/React__default.createElement("div", {