@atlaskit/navigation-system 5.8.2 → 5.9.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlassian/navigation-system
2
2
 
3
+ ## 5.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`3665e60cbf959`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3665e60cbf959) -
8
+ Fixes a bug that could cause side nav animations to apply on initial load
9
+
3
10
  ## 5.8.2
4
11
 
5
12
  ### Patch Changes
@@ -713,24 +713,36 @@ function SideNavInternal(_ref) {
713
713
  panelId: _constants.sideNavPanelSplitterId
714
714
  });
715
715
  var isFlyoutClosed = (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'closed' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === undefined;
716
+ var isExpandedStateDifferentFromInitial = isExpandedOnMobile || isExpandedOnDesktop !== initialIsExpandedOnDesktop;
716
717
 
717
- // Used to prevent sidebar expand animations from running on the initial render.
718
- // Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
719
- var isFirstRenderRef = (0, _react.useRef)(true);
718
+ /**
719
+ * Used to track (between renders) if the expanded state of the side nav has ever changed since mount.
720
+ *
721
+ * Cannot rely solely on `isExpandedStateDifferentFromInitial` because the expanded state can go back to the initial state.
722
+ */
723
+ var hasExpandedStateChangedRef = (0, _react.useRef)(false);
720
724
  (0, _react.useEffect)(function () {
721
- if (!isFhsEnabled) {
725
+ if (hasExpandedStateChangedRef.current) {
722
726
  return;
723
727
  }
724
- if (isFirstRenderRef.current) {
725
- isFirstRenderRef.current = false;
728
+ if (isExpandedStateDifferentFromInitial) {
729
+ hasExpandedStateChangedRef.current = true;
726
730
  }
727
- }, [isFhsEnabled]);
731
+ }, [isExpandedStateDifferentFromInitial]);
732
+
733
+ /**
734
+ * If the expanded state of the side nav has ever changed since mount.
735
+ *
736
+ * Used to prevent sidebar expand animations from running on the initial load.
737
+ * Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
738
+ */
739
+ var hasExpandedStateChanged = isExpandedStateDifferentFromInitial || hasExpandedStateChangedRef.current;
728
740
 
729
741
  // This is only used for the regular expand and collapse animations, not the flyout animations.
730
- var shouldShowSidebarToggleAnimation =
742
+ var shouldShowSidebarToggleAnimation = isFhsEnabled &&
731
743
  // We do not apply the animation styles on the initial render, as the `@starting-style` rule will cause the sidebar to
732
744
  // slide in initially.
733
- !isFirstRenderRef.current &&
745
+ hasExpandedStateChanged &&
734
746
  // We also do not apply the animation styles if the side nav is in flyout mode to make sure we don't override flyout styles.
735
747
  // If we instead try to unset the `transform` property in the flyout styles using `transform: initial`, it results in the entire
736
748
  // flyout animation being disabled.
@@ -758,7 +770,7 @@ function SideNavInternal(_ref) {
758
770
  style: (0, _defineProperty2.default)({}, _constants.sideNavVar, clampedWidth),
759
771
  ref: mergedRef,
760
772
  "data-testid": testId,
761
- className: (0, _runtime.ax)([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && isFhsEnabled && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
773
+ className: (0, _runtime.ax)([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
762
774
  }), /*#__PURE__*/React.createElement(_hoistUtils.DangerouslyHoistCssVarToDocumentRoot, {
763
775
  variableName: _constants.sideNavLiveWidthVar,
764
776
  value: "0px",
@@ -700,24 +700,36 @@ function SideNavInternal({
700
700
  panelId: sideNavPanelSplitterId
701
701
  });
702
702
  const isFlyoutClosed = (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'closed' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === undefined;
703
+ const isExpandedStateDifferentFromInitial = isExpandedOnMobile || isExpandedOnDesktop !== initialIsExpandedOnDesktop;
703
704
 
704
- // Used to prevent sidebar expand animations from running on the initial render.
705
- // Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
706
- const isFirstRenderRef = useRef(true);
705
+ /**
706
+ * Used to track (between renders) if the expanded state of the side nav has ever changed since mount.
707
+ *
708
+ * Cannot rely solely on `isExpandedStateDifferentFromInitial` because the expanded state can go back to the initial state.
709
+ */
710
+ const hasExpandedStateChangedRef = useRef(false);
707
711
  useEffect(() => {
708
- if (!isFhsEnabled) {
712
+ if (hasExpandedStateChangedRef.current) {
709
713
  return;
710
714
  }
711
- if (isFirstRenderRef.current) {
712
- isFirstRenderRef.current = false;
715
+ if (isExpandedStateDifferentFromInitial) {
716
+ hasExpandedStateChangedRef.current = true;
713
717
  }
714
- }, [isFhsEnabled]);
718
+ }, [isExpandedStateDifferentFromInitial]);
719
+
720
+ /**
721
+ * If the expanded state of the side nav has ever changed since mount.
722
+ *
723
+ * Used to prevent sidebar expand animations from running on the initial load.
724
+ * Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
725
+ */
726
+ const hasExpandedStateChanged = isExpandedStateDifferentFromInitial || hasExpandedStateChangedRef.current;
715
727
 
716
728
  // This is only used for the regular expand and collapse animations, not the flyout animations.
717
- const shouldShowSidebarToggleAnimation =
729
+ const shouldShowSidebarToggleAnimation = isFhsEnabled &&
718
730
  // We do not apply the animation styles on the initial render, as the `@starting-style` rule will cause the sidebar to
719
731
  // slide in initially.
720
- !isFirstRenderRef.current &&
732
+ hasExpandedStateChanged &&
721
733
  // We also do not apply the animation styles if the side nav is in flyout mode to make sure we don't override flyout styles.
722
734
  // If we instead try to unset the `transform` property in the flyout styles using `transform: initial`, it results in the entire
723
735
  // flyout animation being disabled.
@@ -748,7 +760,7 @@ function SideNavInternal({
748
760
  },
749
761
  ref: mergedRef,
750
762
  "data-testid": testId,
751
- className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && isFhsEnabled && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
763
+ className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
752
764
  }), /*#__PURE__*/React.createElement(DangerouslyHoistCssVarToDocumentRoot, {
753
765
  variableName: sideNavLiveWidthVar,
754
766
  value: "0px",
@@ -703,24 +703,36 @@ function SideNavInternal(_ref) {
703
703
  panelId: sideNavPanelSplitterId
704
704
  });
705
705
  var isFlyoutClosed = (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'closed' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === undefined;
706
+ var isExpandedStateDifferentFromInitial = isExpandedOnMobile || isExpandedOnDesktop !== initialIsExpandedOnDesktop;
706
707
 
707
- // Used to prevent sidebar expand animations from running on the initial render.
708
- // Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
709
- var isFirstRenderRef = useRef(true);
708
+ /**
709
+ * Used to track (between renders) if the expanded state of the side nav has ever changed since mount.
710
+ *
711
+ * Cannot rely solely on `isExpandedStateDifferentFromInitial` because the expanded state can go back to the initial state.
712
+ */
713
+ var hasExpandedStateChangedRef = useRef(false);
710
714
  useEffect(function () {
711
- if (!isFhsEnabled) {
715
+ if (hasExpandedStateChangedRef.current) {
712
716
  return;
713
717
  }
714
- if (isFirstRenderRef.current) {
715
- isFirstRenderRef.current = false;
718
+ if (isExpandedStateDifferentFromInitial) {
719
+ hasExpandedStateChangedRef.current = true;
716
720
  }
717
- }, [isFhsEnabled]);
721
+ }, [isExpandedStateDifferentFromInitial]);
722
+
723
+ /**
724
+ * If the expanded state of the side nav has ever changed since mount.
725
+ *
726
+ * Used to prevent sidebar expand animations from running on the initial load.
727
+ * Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
728
+ */
729
+ var hasExpandedStateChanged = isExpandedStateDifferentFromInitial || hasExpandedStateChangedRef.current;
718
730
 
719
731
  // This is only used for the regular expand and collapse animations, not the flyout animations.
720
- var shouldShowSidebarToggleAnimation =
732
+ var shouldShowSidebarToggleAnimation = isFhsEnabled &&
721
733
  // We do not apply the animation styles on the initial render, as the `@starting-style` rule will cause the sidebar to
722
734
  // slide in initially.
723
- !isFirstRenderRef.current &&
735
+ hasExpandedStateChanged &&
724
736
  // We also do not apply the animation styles if the side nav is in flyout mode to make sure we don't override flyout styles.
725
737
  // If we instead try to unset the `transform` property in the flyout styles using `transform: initial`, it results in the entire
726
738
  // flyout animation being disabled.
@@ -748,7 +760,7 @@ function SideNavInternal(_ref) {
748
760
  style: _defineProperty({}, sideNavVar, clampedWidth),
749
761
  ref: mergedRef,
750
762
  "data-testid": testId,
751
- className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && isFhsEnabled && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
763
+ className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
752
764
  }), /*#__PURE__*/React.createElement(DangerouslyHoistCssVarToDocumentRoot, {
753
765
  variableName: sideNavLiveWidthVar,
754
766
  value: "0px",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/navigation-system",
3
- "version": "5.8.2",
3
+ "version": "5.9.0",
4
4
  "description": "The latest navigation system for Atlassian apps.",
5
5
  "repository": "https://bitbucket.org/atlassian/atlassian-frontend-mirror",
6
6
  "author": "Atlassian Pty Ltd",