@gravity-ui/navigation 5.0.0-beta.3 → 5.0.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/build/cjs/assets/icons/divider-collapsed-compact.svg.js +41 -0
- package/build/cjs/assets/icons/divider-collapsed-compact.svg.js.map +1 -0
- package/build/cjs/components/AsideHeader/AsideHeader.css +1 -1
- package/build/cjs/components/AsideHeader/AsideHeader.js +3 -3
- package/build/cjs/components/AsideHeader/AsideHeader.js.map +1 -1
- package/build/cjs/components/AsideHeader/AsideHeader.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +17 -4
- package/build/cjs/components/AsideHeader/AsideHeaderContext.js +10 -8
- package/build/cjs/components/AsideHeader/AsideHeaderContext.js.map +1 -1
- package/build/cjs/components/AsideHeader/FooterLayoutContext.d.ts +7 -0
- package/build/cjs/components/AsideHeader/FooterLayoutContext.js +10 -0
- package/build/cjs/components/AsideHeader/FooterLayoutContext.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.css +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +23 -15
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +10 -5
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.d.ts +9 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js +27 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +71 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js +122 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.d.ts +3 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js +23 -22
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +2 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js +13 -13
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.css +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +11 -5
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +63 -165
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.css +25 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.d.ts +7 -2
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +26 -8
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +8 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +27 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +8 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/index.d.ts +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.d.ts +21 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js +146 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +4 -2
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +57 -7
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/FirstPanel.js +29 -9
- package/build/cjs/components/AsideHeader/components/FirstPanel.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.css +1 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.d.ts +19 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.js +95 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js +8 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/constants.d.ts +1 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/constants.js +6 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/constants.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/FooterBar/index.d.ts +1 -0
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.d.ts +2 -0
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js +12 -1
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/Header.js +9 -6
- package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +2 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js +4 -3
- package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.css +2 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +4 -2
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js +12 -9
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.css +2 -0
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -3
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/Panels.js +6 -3
- package/build/cjs/components/AsideHeader/components/Panels.js.map +1 -1
- package/build/cjs/components/AsideHeader/hooks/useIsExpanded.d.ts +3 -1
- package/build/cjs/components/AsideHeader/hooks/useIsExpanded.js +34 -11
- package/build/cjs/components/AsideHeader/hooks/useIsExpanded.js.map +1 -1
- package/build/cjs/components/AsideHeader/i18n/en.json.js +4 -1
- package/build/cjs/components/AsideHeader/i18n/en.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/i18n/index.d.ts +4 -4
- package/build/cjs/components/AsideHeader/i18n/ru.json.js +4 -1
- package/build/cjs/components/AsideHeader/i18n/ru.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/index.d.ts +3 -2
- package/build/cjs/components/AsideHeader/types.d.ts +30 -14
- package/build/cjs/components/AsideHeader/types.js.map +1 -1
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +3 -2
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js +31 -9
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
- package/build/cjs/components/AsideHeader/utils/getGroupHeight.d.ts +1 -1
- package/build/cjs/components/AsideHeader/utils/getGroupHeight.js +5 -5
- package/build/cjs/components/AsideHeader/utils/getGroupHeight.js.map +1 -1
- package/build/cjs/components/Footer/desktop/Footer.js +1 -1
- package/build/cjs/components/Footer/desktop/Footer.js.map +1 -1
- package/build/cjs/components/Footer/mobile/Footer.js +1 -1
- package/build/cjs/components/Footer/mobile/Footer.js.map +1 -1
- package/build/cjs/components/HotkeysPanel/HotkeysPanel.d.ts +6 -4
- package/build/cjs/components/HotkeysPanel/HotkeysPanel.js +4 -7
- package/build/cjs/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
- package/build/cjs/components/Logo/Logo.css +1 -1
- package/build/cjs/components/Logo/Logo.d.ts +7 -3
- package/build/cjs/components/Logo/Logo.js +9 -6
- package/build/cjs/components/Logo/Logo.js.map +1 -1
- package/build/cjs/components/Logo/Logo.module.scss.js +1 -1
- package/build/cjs/components/MobileHeader/MobileHeader.d.ts +4 -8
- package/build/cjs/components/MobileHeader/MobileHeader.js +24 -20
- package/build/cjs/components/MobileHeader/MobileHeader.js.map +1 -1
- package/build/cjs/components/MobileHeader/OverlapPanel/OverlapPanel.d.ts +2 -2
- package/build/cjs/components/MobileHeader/OverlapPanel/OverlapPanel.js +2 -2
- package/build/cjs/components/MobileHeader/OverlapPanel/OverlapPanel.js.map +1 -1
- package/build/cjs/components/MobileLogo/MobileLogo.d.ts +1 -1
- package/build/cjs/components/MobileLogo/MobileLogo.js +2 -2
- package/build/cjs/components/MobileLogo/MobileLogo.js.map +1 -1
- package/build/cjs/components/Settings/Settings.css +1 -1
- package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.css +1 -1
- package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.js +5 -1
- package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.js.map +1 -1
- package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.module.scss.js +1 -1
- package/build/cjs/components/constants.d.ts +6 -2
- package/build/cjs/components/constants.js +11 -3
- package/build/cjs/components/constants.js.map +1 -1
- package/build/cjs/components/types.d.ts +11 -6
- package/build/cjs/components/utils/getCollapsedWidth.d.ts +1 -0
- package/build/cjs/components/utils/getCollapsedWidth.js +10 -0
- package/build/cjs/components/utils/getCollapsedWidth.js.map +1 -0
- package/build/cjs/index.js +4 -0
- package/build/cjs/index.js.map +1 -1
- package/build/esm/assets/icons/divider-collapsed-compact.svg.js +18 -0
- package/build/esm/assets/icons/divider-collapsed-compact.svg.js.map +1 -0
- package/build/esm/components/AsideHeader/AsideHeader.css +1 -1
- package/build/esm/components/AsideHeader/AsideHeader.js +3 -3
- package/build/esm/components/AsideHeader/AsideHeader.js.map +1 -1
- package/build/esm/components/AsideHeader/AsideHeader.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +17 -4
- package/build/esm/components/AsideHeader/AsideHeaderContext.js +10 -9
- package/build/esm/components/AsideHeader/AsideHeaderContext.js.map +1 -1
- package/build/esm/components/AsideHeader/FooterLayoutContext.d.ts +7 -0
- package/build/esm/components/AsideHeader/FooterLayoutContext.js +7 -0
- package/build/esm/components/AsideHeader/FooterLayoutContext.js.map +1 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.css +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +24 -16
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +10 -5
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.d.ts +9 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js +25 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js.map +1 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +71 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js +117 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.d.ts +3 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js +23 -22
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +2 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js +13 -13
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.css +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +11 -5
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +62 -164
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.css +25 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.d.ts +7 -2
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +26 -8
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +8 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +25 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +4 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js.map +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/index.d.ts +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.d.ts +21 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js +144 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js.map +1 -0
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +4 -2
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +57 -9
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
- package/build/esm/components/AsideHeader/components/FirstPanel.js +30 -10
- package/build/esm/components/AsideHeader/components/FirstPanel.js.map +1 -1
- package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.css +1 -0
- package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.d.ts +19 -0
- package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.js +93 -0
- package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.js.map +1 -0
- package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js +4 -0
- package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js.map +1 -0
- package/build/esm/components/AsideHeader/components/FooterBar/constants.d.ts +1 -0
- package/build/esm/components/AsideHeader/components/FooterBar/constants.js +4 -0
- package/build/esm/components/AsideHeader/components/FooterBar/constants.js.map +1 -0
- package/build/esm/components/AsideHeader/components/FooterBar/index.d.ts +1 -0
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.d.ts +2 -0
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js +12 -1
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/Header.js +10 -7
- package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +2 -0
- package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +5 -4
- package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.css +2 -0
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +4 -2
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js +13 -10
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.css +2 -0
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -3
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
- package/build/esm/components/AsideHeader/components/Panels.js +6 -3
- package/build/esm/components/AsideHeader/components/Panels.js.map +1 -1
- package/build/esm/components/AsideHeader/hooks/useIsExpanded.d.ts +3 -1
- package/build/esm/components/AsideHeader/hooks/useIsExpanded.js +35 -12
- package/build/esm/components/AsideHeader/hooks/useIsExpanded.js.map +1 -1
- package/build/esm/components/AsideHeader/i18n/en.json.js +4 -2
- package/build/esm/components/AsideHeader/i18n/en.json.js.map +1 -1
- package/build/esm/components/AsideHeader/i18n/index.d.ts +4 -4
- package/build/esm/components/AsideHeader/i18n/ru.json.js +4 -2
- package/build/esm/components/AsideHeader/i18n/ru.json.js.map +1 -1
- package/build/esm/components/AsideHeader/index.d.ts +3 -2
- package/build/esm/components/AsideHeader/types.d.ts +30 -14
- package/build/esm/components/AsideHeader/types.js.map +1 -1
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +3 -2
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js +31 -9
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
- package/build/esm/components/AsideHeader/utils/getGroupHeight.d.ts +1 -1
- package/build/esm/components/AsideHeader/utils/getGroupHeight.js +6 -6
- package/build/esm/components/AsideHeader/utils/getGroupHeight.js.map +1 -1
- package/build/esm/components/Footer/desktop/Footer.js +1 -1
- package/build/esm/components/Footer/desktop/Footer.js.map +1 -1
- package/build/esm/components/Footer/mobile/Footer.js +1 -1
- package/build/esm/components/Footer/mobile/Footer.js.map +1 -1
- package/build/esm/components/HotkeysPanel/HotkeysPanel.d.ts +6 -4
- package/build/esm/components/HotkeysPanel/HotkeysPanel.js +4 -7
- package/build/esm/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
- package/build/esm/components/Logo/Logo.css +1 -1
- package/build/esm/components/Logo/Logo.d.ts +7 -3
- package/build/esm/components/Logo/Logo.js +9 -6
- package/build/esm/components/Logo/Logo.js.map +1 -1
- package/build/esm/components/Logo/Logo.module.scss.js +1 -1
- package/build/esm/components/MobileHeader/MobileHeader.d.ts +4 -8
- package/build/esm/components/MobileHeader/MobileHeader.js +25 -21
- package/build/esm/components/MobileHeader/MobileHeader.js.map +1 -1
- package/build/esm/components/MobileHeader/OverlapPanel/OverlapPanel.d.ts +2 -2
- package/build/esm/components/MobileHeader/OverlapPanel/OverlapPanel.js +2 -2
- package/build/esm/components/MobileHeader/OverlapPanel/OverlapPanel.js.map +1 -1
- package/build/esm/components/MobileLogo/MobileLogo.d.ts +1 -1
- package/build/esm/components/MobileLogo/MobileLogo.js +2 -2
- package/build/esm/components/MobileLogo/MobileLogo.js.map +1 -1
- package/build/esm/components/Settings/Settings.css +1 -1
- package/build/esm/components/Settings/SettingsMenu/SettingsMenu.css +1 -1
- package/build/esm/components/Settings/SettingsMenu/SettingsMenu.js +5 -1
- package/build/esm/components/Settings/SettingsMenu/SettingsMenu.js.map +1 -1
- package/build/esm/components/Settings/SettingsMenu/SettingsMenu.module.scss.js +1 -1
- package/build/esm/components/constants.d.ts +6 -2
- package/build/esm/components/constants.js +7 -3
- package/build/esm/components/constants.js.map +1 -1
- package/build/esm/components/types.d.ts +11 -6
- package/build/esm/components/utils/getCollapsedWidth.d.ts +1 -0
- package/build/esm/components/utils/getCollapsedWidth.js +8 -0
- package/build/esm/components/utils/getCollapsedWidth.js.map +1 -0
- package/build/esm/index.js +2 -1
- package/build/esm/index.js.map +1 -1
- package/codemods/bin/cli.js +19 -6
- package/codemods/transforms/compactToIsExpanded.ts +345 -0
- package/codemods/transforms/compactToPinned.ts +135 -0
- package/codemods/transforms/v5.ts +36 -0
- package/package.json +2 -2
- package/build/cjs/components/ActionBar/__stories__/ActionBar.stories.d.ts +0 -20
- package/build/cjs/components/ActionBar/__stories__/ActionBarShowcase.d.ts +0 -2
- package/build/cjs/components/ActionBar/__stories__/ActionBarSingleSection.d.ts +0 -2
- package/build/cjs/components/ActionBar/__stories__/ActionBarStretchGroupShowcase.d.ts +0 -2
- package/build/cjs/components/ActionBar/__tests__/helpersPlaywright.d.ts +0 -5
- package/build/cjs/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +0 -23
- package/build/cjs/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +0 -13
- package/build/cjs/components/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +0 -3
- package/build/cjs/components/AsideHeader/__stories__/moc.d.ts +0 -17
- package/build/cjs/components/AsideHeader/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.d.ts +0 -2
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js +0 -16
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js.map +0 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.css +0 -9
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +0 -9
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js +0 -34
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js.map +0 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js +0 -8
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js.map +0 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +0 -24
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js +0 -29
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js.map +0 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/index.d.ts +0 -2
- package/build/cjs/components/AsideHeader/components/FooterItem/__stories__/FooterItem.stories.d.ts +0 -6
- package/build/cjs/components/AsideHeader/components/FooterItem/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/Footer/desktop/__stories__/Footer.stories.d.ts +0 -8
- package/build/cjs/components/Footer/desktop/__stories__/FooterShowcase.d.ts +0 -4
- package/build/cjs/components/Footer/desktop/__stories__/moc.d.ts +0 -3
- package/build/cjs/components/Footer/desktop/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/Footer/mobile/__stories__/MobileFooter.stories.d.ts +0 -8
- package/build/cjs/components/Footer/mobile/__stories__/MobileFooterShowcase.d.ts +0 -4
- package/build/cjs/components/Footer/mobile/__stories__/moc.d.ts +0 -3
- package/build/cjs/components/Footer/mobile/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/HotkeysPanel/__stories__/HotkeysPanel.stories.d.ts +0 -5
- package/build/cjs/components/HotkeysPanel/__stories__/HotkeysPanelShowcase.d.ts +0 -6
- package/build/cjs/components/HotkeysPanel/__stories__/moc.d.ts +0 -2
- package/build/cjs/components/HotkeysPanel/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/Logo/__stories__/Logo.stories.d.ts +0 -7
- package/build/cjs/components/Logo/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +0 -6
- package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +0 -2
- package/build/cjs/components/MobileHeader/BurgerMenu/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/MobileHeader/OverlapPanel/__stories__/OverlapPanel.stories.d.ts +0 -6
- package/build/cjs/components/MobileHeader/OverlapPanel/__stories__/moc.d.ts +0 -2
- package/build/cjs/components/MobileHeader/OverlapPanel/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +0 -4
- package/build/cjs/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +0 -3
- package/build/cjs/components/MobileHeader/__stories__/moc.d.ts +0 -1
- package/build/cjs/components/MobileHeader/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/MobileLogo/__stories__/MobileLogo.stories.d.ts +0 -6
- package/build/cjs/components/MobileLogo/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/Settings/__stories__/Settings.stories.d.ts +0 -5
- package/build/cjs/components/Settings/__stories__/SettingsDemo.d.ts +0 -14
- package/build/cjs/components/Settings/__stories__/SettingsMobileDemo.d.ts +0 -8
- package/build/cjs/components/Settings/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/ActionBar/__stories__/ActionBar.stories.d.ts +0 -20
- package/build/esm/components/ActionBar/__stories__/ActionBarShowcase.d.ts +0 -2
- package/build/esm/components/ActionBar/__stories__/ActionBarSingleSection.d.ts +0 -2
- package/build/esm/components/ActionBar/__stories__/ActionBarStretchGroupShowcase.d.ts +0 -2
- package/build/esm/components/ActionBar/__tests__/helpersPlaywright.d.ts +0 -5
- package/build/esm/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +0 -23
- package/build/esm/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +0 -13
- package/build/esm/components/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +0 -3
- package/build/esm/components/AsideHeader/__stories__/moc.d.ts +0 -17
- package/build/esm/components/AsideHeader/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.d.ts +0 -2
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js +0 -14
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js.map +0 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.css +0 -9
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +0 -9
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js +0 -32
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js.map +0 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js +0 -4
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js.map +0 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +0 -24
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js +0 -26
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js.map +0 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/index.d.ts +0 -2
- package/build/esm/components/AsideHeader/components/FooterItem/__stories__/FooterItem.stories.d.ts +0 -6
- package/build/esm/components/AsideHeader/components/FooterItem/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/Footer/desktop/__stories__/Footer.stories.d.ts +0 -8
- package/build/esm/components/Footer/desktop/__stories__/FooterShowcase.d.ts +0 -4
- package/build/esm/components/Footer/desktop/__stories__/moc.d.ts +0 -3
- package/build/esm/components/Footer/desktop/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/Footer/mobile/__stories__/MobileFooter.stories.d.ts +0 -8
- package/build/esm/components/Footer/mobile/__stories__/MobileFooterShowcase.d.ts +0 -4
- package/build/esm/components/Footer/mobile/__stories__/moc.d.ts +0 -3
- package/build/esm/components/Footer/mobile/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/HotkeysPanel/__stories__/HotkeysPanel.stories.d.ts +0 -5
- package/build/esm/components/HotkeysPanel/__stories__/HotkeysPanelShowcase.d.ts +0 -6
- package/build/esm/components/HotkeysPanel/__stories__/moc.d.ts +0 -2
- package/build/esm/components/HotkeysPanel/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/Logo/__stories__/Logo.stories.d.ts +0 -7
- package/build/esm/components/Logo/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +0 -6
- package/build/esm/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +0 -2
- package/build/esm/components/MobileHeader/BurgerMenu/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/MobileHeader/OverlapPanel/__stories__/OverlapPanel.stories.d.ts +0 -6
- package/build/esm/components/MobileHeader/OverlapPanel/__stories__/moc.d.ts +0 -2
- package/build/esm/components/MobileHeader/OverlapPanel/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +0 -4
- package/build/esm/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +0 -3
- package/build/esm/components/MobileHeader/__stories__/moc.d.ts +0 -1
- package/build/esm/components/MobileHeader/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/MobileLogo/__stories__/MobileLogo.stories.d.ts +0 -6
- package/build/esm/components/MobileLogo/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/Settings/__stories__/Settings.stories.d.ts +0 -5
- package/build/esm/components/Settings/__stories__/SettingsDemo.d.ts +0 -14
- package/build/esm/components/Settings/__stories__/SettingsMobileDemo.d.ts +0 -8
- package/build/esm/components/Settings/__tests__/helpersPlaywright.d.ts +0 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { HTMLAttributeAnchorTarget } from 'react';
|
|
2
2
|
import { AlertProps, IconProps, QAProps } from '@gravity-ui/uikit';
|
|
3
|
+
import { SetCollapseBlocker } from './AsideHeader/types';
|
|
3
4
|
export type MenuItemType = 'regular' | 'action' | 'divider';
|
|
4
5
|
export type OpenModalSubscriber = (open: boolean) => void;
|
|
5
6
|
export interface MakeItemParams {
|
|
@@ -15,13 +16,16 @@ export interface MenuItem extends QAProps {
|
|
|
15
16
|
iconQa?: string;
|
|
16
17
|
href?: string;
|
|
17
18
|
current?: boolean;
|
|
18
|
-
onItemClick?: (item: MenuItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent
|
|
19
|
+
onItemClick?: (item: MenuItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent>, options: {
|
|
20
|
+
setCollapseBlocker: SetCollapseBlocker | undefined;
|
|
21
|
+
}) => void;
|
|
19
22
|
onItemClickCapture?: (event: React.SyntheticEvent) => void;
|
|
20
23
|
itemWrapper?: (p: MakeItemParams, makeItem: (p: MakeItemParams) => React.ReactNode, opts: {
|
|
21
|
-
|
|
22
|
-
compact: boolean;
|
|
24
|
+
isExpanded: boolean;
|
|
23
25
|
item: MenuItem;
|
|
24
26
|
ref: React.RefObject<HTMLElement>;
|
|
27
|
+
/** Call with `true` when a popup opens, `false` when it closes, to block sidebar collapse while open. */
|
|
28
|
+
setCollapseBlocker: SetCollapseBlocker | undefined;
|
|
25
29
|
}) => React.ReactNode;
|
|
26
30
|
preventUserRemoving?: boolean;
|
|
27
31
|
rightAdornment?: React.ReactNode;
|
|
@@ -46,8 +50,8 @@ export interface MenuGroup {
|
|
|
46
50
|
collapsible?: boolean;
|
|
47
51
|
/** Initial collapsed state when collapsible is true */
|
|
48
52
|
collapsedByDefault?: boolean;
|
|
49
|
-
/** Current collapsed state */
|
|
50
|
-
collapsed
|
|
53
|
+
/** Current collapsed state. When undefined, collapsedByDefault is used for display. */
|
|
54
|
+
collapsed?: boolean;
|
|
51
55
|
}
|
|
52
56
|
export interface LogoProps {
|
|
53
57
|
text: (() => React.ReactNode) | string;
|
|
@@ -59,7 +63,8 @@ export interface LogoProps {
|
|
|
59
63
|
textSize?: number;
|
|
60
64
|
href?: string;
|
|
61
65
|
target?: HTMLAttributeAnchorTarget;
|
|
62
|
-
|
|
66
|
+
/** Wrapper function for the logo. The `isExpanded` parameter indicates if the navigation is expanded. */
|
|
67
|
+
wrapper?: (node: React.ReactNode, isExpanded: boolean) => React.ReactNode;
|
|
63
68
|
onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
|
|
64
69
|
'aria-label'?: string;
|
|
65
70
|
'aria-labelledby'?: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getCollapsedWidth(isCompactMode?: boolean): number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE, ASIDE_HEADER_COLLAPSED_WIDTH } from '../constants.js';
|
|
2
|
+
|
|
3
|
+
function getCollapsedWidth(isCompactMode) {
|
|
4
|
+
return isCompactMode ? ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE : ASIDE_HEADER_COLLAPSED_WIDTH;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export { getCollapsedWidth };
|
|
8
|
+
//# sourceMappingURL=getCollapsedWidth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCollapsedWidth.js","sources":["../../../../../src/components/utils/getCollapsedWidth.ts"],"sourcesContent":["import {\n ASIDE_HEADER_COLLAPSED_WIDTH,\n ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE,\n} from '../constants';\n\nexport function getCollapsedWidth(isCompactMode?: boolean): number {\n return isCompactMode ? ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE : ASIDE_HEADER_COLLAPSED_WIDTH;\n}\n"],"names":[],"mappings":";;AAKM,SAAU,iBAAiB,CAAC,aAAuB,EAAA;IACrD,OAAO,aAAa,GAAG,yCAAyC,GAAG,4BAA4B;AACnG;;;;"}
|
package/build/esm/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export { AsideHeader } from './components/AsideHeader/AsideHeader.js';
|
|
2
|
-
export { AsideHeaderContextProvider, useAsideHeaderContext } from './components/AsideHeader/AsideHeaderContext.js';
|
|
2
|
+
export { AsideHeaderContextProvider, useAsideHeaderContext, useAsideHeaderContextOptional } from './components/AsideHeader/AsideHeaderContext.js';
|
|
3
3
|
export { FooterItem } from './components/AsideHeader/components/FooterItem/FooterItem.js';
|
|
4
4
|
export { PageLayout } from './components/AsideHeader/components/PageLayout/PageLayout.js';
|
|
5
5
|
export { PageLayoutAside } from './components/AsideHeader/components/PageLayout/PageLayoutAside.js';
|
|
6
6
|
export { AsideFallback } from './components/AsideHeader/components/PageLayout/AsideFallback.js';
|
|
7
|
+
export { FooterLayoutContext, useFooterLayout } from './components/AsideHeader/FooterLayoutContext.js';
|
|
7
8
|
export { ActionBar } from './components/ActionBar/ActionBar.js';
|
|
8
9
|
export { Title } from './components/Title/Title.js';
|
|
9
10
|
export { HotkeysPanel } from './components/HotkeysPanel/HotkeysPanel.js';
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
package/codemods/bin/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ const {program} = require('commander');
|
|
|
9
9
|
const PACKAGE_DIR = path.dirname(__dirname);
|
|
10
10
|
const TRANSFORMS_DIR = path.join(PACKAGE_DIR, 'transforms');
|
|
11
11
|
|
|
12
|
-
const AVAILABLE_TRANSFORMS = ['v4'];
|
|
12
|
+
const AVAILABLE_TRANSFORMS = ['v4', 'v5'];
|
|
13
13
|
|
|
14
14
|
// Get available transforms
|
|
15
15
|
const availableTransforms = fs
|
|
@@ -114,18 +114,30 @@ program
|
|
|
114
114
|
});
|
|
115
115
|
});
|
|
116
116
|
|
|
117
|
-
//
|
|
117
|
+
// Command to run v4 transforms
|
|
118
118
|
program
|
|
119
119
|
.command('v4 <path>')
|
|
120
|
-
.description('Run
|
|
120
|
+
.description('Run v4 migration transforms')
|
|
121
121
|
.option('-d, --dry', 'Dry run (no changes will be made)')
|
|
122
122
|
.option('-v, --verbose', 'Verbose output')
|
|
123
123
|
.option('--ignore-pattern <pattern>', 'Ignore files matching this pattern')
|
|
124
124
|
.action((targetPath, options) => {
|
|
125
|
-
console.log('Running
|
|
125
|
+
console.log('Running v4 migration transforms...');
|
|
126
126
|
runTransform('v4', targetPath, options);
|
|
127
127
|
});
|
|
128
128
|
|
|
129
|
+
// Command to run v5 transforms
|
|
130
|
+
program
|
|
131
|
+
.command('v5 <path>')
|
|
132
|
+
.description('Run v5 migration transforms (compact → isExpanded)')
|
|
133
|
+
.option('-d, --dry', 'Dry run (no changes will be made)')
|
|
134
|
+
.option('-v, --verbose', 'Verbose output')
|
|
135
|
+
.option('--ignore-pattern <pattern>', 'Ignore files matching this pattern')
|
|
136
|
+
.action((targetPath, options) => {
|
|
137
|
+
console.log('Running v5 migration transforms...');
|
|
138
|
+
runTransform('v5', targetPath, options);
|
|
139
|
+
});
|
|
140
|
+
|
|
129
141
|
// Help command
|
|
130
142
|
program
|
|
131
143
|
.command('help')
|
|
@@ -138,8 +150,9 @@ program
|
|
|
138
150
|
program.on('--help', () => {
|
|
139
151
|
console.log('');
|
|
140
152
|
console.log('Examples:');
|
|
141
|
-
console.log(' $ navigation-codemod
|
|
142
|
-
console.log(' $ navigation-codemod
|
|
153
|
+
console.log(' $ navigation-codemod v4 ./src');
|
|
154
|
+
console.log(' $ navigation-codemod v5 ./src');
|
|
155
|
+
console.log(' $ navigation-codemod v5 ./src --dry');
|
|
143
156
|
console.log(' $ navigation-codemod list');
|
|
144
157
|
console.log('');
|
|
145
158
|
console.log('Available transforms:');
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/* eslint-disable no-param-reassign */
|
|
2
|
+
import {execSync} from 'child_process';
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
API,
|
|
6
|
+
ASTPath,
|
|
7
|
+
ArrowFunctionExpression,
|
|
8
|
+
Collection,
|
|
9
|
+
FileInfo,
|
|
10
|
+
FunctionExpression,
|
|
11
|
+
JSCodeshift,
|
|
12
|
+
JSXAttribute,
|
|
13
|
+
JSXIdentifier,
|
|
14
|
+
ObjectPattern,
|
|
15
|
+
ObjectProperty,
|
|
16
|
+
} from 'jscodeshift';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Codemod to transform `compact` prop to `isExpanded` with inverted boolean logic.
|
|
20
|
+
*
|
|
21
|
+
* Transformations:
|
|
22
|
+
* - compact={true} → isExpanded={false}
|
|
23
|
+
* - compact={false} → isExpanded={true}
|
|
24
|
+
* - compact (shorthand) → isExpanded={false}
|
|
25
|
+
* - compact={someVar} → isExpanded={!someVar}
|
|
26
|
+
* - compact={!someVar} → isExpanded={someVar}
|
|
27
|
+
* - compact={expression} → isExpanded={!(expression)}
|
|
28
|
+
*
|
|
29
|
+
* Special case for destructured parameters:
|
|
30
|
+
* - renderFooter={({ compact }) => <FooterItem compact={compact} />}
|
|
31
|
+
* - → renderFooter={({ isExpanded }) => <FooterItem isExpanded={isExpanded} />}
|
|
32
|
+
* - (No inversion when the value is the renamed destructured parameter)
|
|
33
|
+
*
|
|
34
|
+
* Also handles:
|
|
35
|
+
* - Function parameter destructuring: ({ compact }) => → ({ isExpanded }) =>
|
|
36
|
+
* - Callback second parameter: (node, compact) => → (node, isExpanded) =>
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
const TARGET_JSX_COMPONENTS = new Set(['FooterItem', 'MobileLogo', 'Item']);
|
|
40
|
+
|
|
41
|
+
const RENDER_CALLBACK_PROPS = new Set(['renderFooter', 'collapseButtonWrapper']);
|
|
42
|
+
|
|
43
|
+
export default function transformer(file: FileInfo, api: API) {
|
|
44
|
+
const j = api.jscodeshift;
|
|
45
|
+
const root = j(file.source);
|
|
46
|
+
|
|
47
|
+
// First pass: rename destructuring parameters and callback params
|
|
48
|
+
const hasDestructuringUpdate = updateDestructuringParams(root, j);
|
|
49
|
+
const hasCallbackParamUpdate = updateCallbackSecondParam(root, j);
|
|
50
|
+
|
|
51
|
+
// Second pass: update JSX props with awareness of renamed identifiers
|
|
52
|
+
const hasJsxPropsUpdate = updateJsxProps(root, j);
|
|
53
|
+
|
|
54
|
+
if (!hasJsxPropsUpdate && !hasDestructuringUpdate && !hasCallbackParamUpdate) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const output = root.toSource();
|
|
59
|
+
|
|
60
|
+
// Format with Prettier to ensure consistent output
|
|
61
|
+
// Uses project's prettier config if available (searches from cwd)
|
|
62
|
+
// Falls back to unformatted output if Prettier is not installed or fails
|
|
63
|
+
try {
|
|
64
|
+
const formatted = execSync('prettier --parser typescript', {
|
|
65
|
+
input: output,
|
|
66
|
+
encoding: 'utf-8',
|
|
67
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
68
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
69
|
+
});
|
|
70
|
+
return formatted;
|
|
71
|
+
} catch {
|
|
72
|
+
// Prettier not installed or failed - return unformatted output
|
|
73
|
+
// User can run their own formatter afterwards
|
|
74
|
+
return output;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Inverts a JSX expression value.
|
|
80
|
+
* - true → false
|
|
81
|
+
* - false → true
|
|
82
|
+
* - someVar → !someVar
|
|
83
|
+
* - !someVar → someVar
|
|
84
|
+
* - (expression) → !(expression)
|
|
85
|
+
*/
|
|
86
|
+
function invertExpression(j: JSCodeshift, expr: any): any {
|
|
87
|
+
// Handle literal booleans - modify in place to preserve formatting
|
|
88
|
+
if (j.BooleanLiteral.check(expr) || j.Literal.check(expr)) {
|
|
89
|
+
const value = expr.value;
|
|
90
|
+
if (typeof value === 'boolean') {
|
|
91
|
+
expr.value = !value;
|
|
92
|
+
return expr;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Handle unary negation: !something → something
|
|
97
|
+
if (j.UnaryExpression.check(expr) && expr.operator === '!') {
|
|
98
|
+
return expr.argument;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Handle identifiers and other expressions: something → !something
|
|
102
|
+
return j.unaryExpression('!', expr);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Update JSX props: compact → isExpanded with inverted value
|
|
107
|
+
* Special handling: if value is an identifier that was renamed from destructuring,
|
|
108
|
+
* just rename it without inversion.
|
|
109
|
+
*/
|
|
110
|
+
function updateJsxProps(root: Collection, j: JSCodeshift): boolean {
|
|
111
|
+
let hasChanges = false;
|
|
112
|
+
|
|
113
|
+
root.find(j.JSXAttribute, {
|
|
114
|
+
name: {type: 'JSXIdentifier', name: 'compact'},
|
|
115
|
+
}).forEach((path: ASTPath<JSXAttribute>) => {
|
|
116
|
+
const jsxElement = path.parentPath.parentPath;
|
|
117
|
+
|
|
118
|
+
// Check if this is on a target component
|
|
119
|
+
if (jsxElement && j.JSXOpeningElement.check(jsxElement.node)) {
|
|
120
|
+
const elementName = jsxElement.node.name;
|
|
121
|
+
let componentName: string | null = null;
|
|
122
|
+
|
|
123
|
+
if (j.JSXIdentifier.check(elementName)) {
|
|
124
|
+
componentName = elementName.name;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Only transform if it's a target component or if we can't determine
|
|
128
|
+
if (componentName && !TARGET_JSX_COMPONENTS.has(componentName)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const attrNode = path.node;
|
|
134
|
+
const attrValue = attrNode.value;
|
|
135
|
+
|
|
136
|
+
// Rename compact → isExpanded
|
|
137
|
+
(attrNode.name as JSXIdentifier).name = 'isExpanded';
|
|
138
|
+
|
|
139
|
+
if (attrValue === null) {
|
|
140
|
+
// Shorthand: compact → isExpanded={false}
|
|
141
|
+
attrNode.value = j.jsxExpressionContainer(j.booleanLiteral(false));
|
|
142
|
+
hasChanges = true;
|
|
143
|
+
} else if (j.JSXExpressionContainer.check(attrValue)) {
|
|
144
|
+
const expr = attrValue.expression;
|
|
145
|
+
|
|
146
|
+
if (!j.JSXEmptyExpression.check(expr)) {
|
|
147
|
+
// Check if this is a simple identifier named 'compact'
|
|
148
|
+
// that might be from a renamed destructuring parameter
|
|
149
|
+
if (j.Identifier.check(expr) && expr.name === 'compact') {
|
|
150
|
+
// Just rename it to isExpanded in place (no inversion)
|
|
151
|
+
// This handles the case: compact={compact} → isExpanded={isExpanded}
|
|
152
|
+
expr.name = 'isExpanded';
|
|
153
|
+
} else if (j.Identifier.check(expr) && expr.name === 'isExpanded') {
|
|
154
|
+
// Already renamed by destructuring pass, leave as is
|
|
155
|
+
} else {
|
|
156
|
+
// Invert the expression
|
|
157
|
+
attrValue.expression = invertExpression(j, expr);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
hasChanges = true;
|
|
161
|
+
} else if (j.StringLiteral.check(attrValue)) {
|
|
162
|
+
// Edge case: compact="true" or compact="false" (unusual but handle it)
|
|
163
|
+
const strValue = attrValue.value;
|
|
164
|
+
if (strValue === 'true') {
|
|
165
|
+
attrNode.value = j.jsxExpressionContainer(j.booleanLiteral(false));
|
|
166
|
+
hasChanges = true;
|
|
167
|
+
} else if (strValue === 'false') {
|
|
168
|
+
attrNode.value = j.jsxExpressionContainer(j.booleanLiteral(true));
|
|
169
|
+
hasChanges = true;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
return hasChanges;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Update destructuring parameters in render callbacks:
|
|
179
|
+
* renderFooter={({ compact }) => ...} → renderFooter={({ isExpanded }) => ...}
|
|
180
|
+
*/
|
|
181
|
+
function updateDestructuringParams(root: Collection, j: JSCodeshift): boolean {
|
|
182
|
+
let hasChanges = false;
|
|
183
|
+
|
|
184
|
+
// Find JSX attributes that are render callbacks
|
|
185
|
+
root.find(j.JSXAttribute).forEach((attrPath: ASTPath<JSXAttribute>) => {
|
|
186
|
+
const attrName = attrPath.node.name;
|
|
187
|
+
if (!j.JSXIdentifier.check(attrName)) return;
|
|
188
|
+
|
|
189
|
+
if (!RENDER_CALLBACK_PROPS.has(attrName.name)) return;
|
|
190
|
+
|
|
191
|
+
const attrValue = attrPath.node.value;
|
|
192
|
+
if (!j.JSXExpressionContainer.check(attrValue)) return;
|
|
193
|
+
|
|
194
|
+
const expr = attrValue.expression;
|
|
195
|
+
if (!j.ArrowFunctionExpression.check(expr) && !j.FunctionExpression.check(expr)) return;
|
|
196
|
+
|
|
197
|
+
const funcExpr = expr as ArrowFunctionExpression | FunctionExpression;
|
|
198
|
+
const params = funcExpr.params;
|
|
199
|
+
|
|
200
|
+
// Look for destructuring pattern with 'compact'
|
|
201
|
+
params.forEach((param) => {
|
|
202
|
+
if (j.ObjectPattern.check(param)) {
|
|
203
|
+
const objPattern = param as ObjectPattern;
|
|
204
|
+
objPattern.properties.forEach((prop) => {
|
|
205
|
+
if (j.ObjectProperty.check(prop) || j.Property.check(prop)) {
|
|
206
|
+
const key = (prop as ObjectProperty).key;
|
|
207
|
+
if (j.Identifier.check(key) && key.name === 'compact') {
|
|
208
|
+
key.name = 'isExpanded';
|
|
209
|
+
hasChanges = true;
|
|
210
|
+
|
|
211
|
+
// Also update the value if it's a shorthand (compact → isExpanded)
|
|
212
|
+
const value = (prop as ObjectProperty).value;
|
|
213
|
+
if (j.Identifier.check(value) && value.name === 'compact') {
|
|
214
|
+
value.name = 'isExpanded';
|
|
215
|
+
|
|
216
|
+
// Rename all references to 'compact' in the function body to 'isExpanded'
|
|
217
|
+
// and invert ternary expressions where compact is the test
|
|
218
|
+
j(funcExpr)
|
|
219
|
+
.find(j.Identifier, {name: 'compact'})
|
|
220
|
+
.forEach((identPath) => {
|
|
221
|
+
// Skip if this is the parameter itself
|
|
222
|
+
if (identPath.value !== value) {
|
|
223
|
+
identPath.value.name = 'isExpanded';
|
|
224
|
+
|
|
225
|
+
// Check if this identifier is the test of a conditional expression
|
|
226
|
+
if (
|
|
227
|
+
identPath.parent &&
|
|
228
|
+
j.ConditionalExpression.check(
|
|
229
|
+
identPath.parent.value,
|
|
230
|
+
) &&
|
|
231
|
+
identPath.parent.value.test === identPath.value
|
|
232
|
+
) {
|
|
233
|
+
// Swap consequent and alternate to invert the logic
|
|
234
|
+
const temp = identPath.parent.value.consequent;
|
|
235
|
+
identPath.parent.value.consequent =
|
|
236
|
+
identPath.parent.value.alternate;
|
|
237
|
+
identPath.parent.value.alternate = temp;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
// Also find object properties that are render callbacks
|
|
250
|
+
root.find(j.ObjectProperty).forEach((propPath: ASTPath<ObjectProperty>) => {
|
|
251
|
+
const propKey = propPath.node.key;
|
|
252
|
+
if (!j.Identifier.check(propKey)) return;
|
|
253
|
+
|
|
254
|
+
if (!RENDER_CALLBACK_PROPS.has(propKey.name) && propKey.name !== 'wrapper') return;
|
|
255
|
+
|
|
256
|
+
const propValue = propPath.node.value;
|
|
257
|
+
if (!j.ArrowFunctionExpression.check(propValue) && !j.FunctionExpression.check(propValue))
|
|
258
|
+
return;
|
|
259
|
+
|
|
260
|
+
const funcExpr = propValue as ArrowFunctionExpression | FunctionExpression;
|
|
261
|
+
const params = funcExpr.params;
|
|
262
|
+
|
|
263
|
+
// Look for destructuring pattern with 'compact'
|
|
264
|
+
params.forEach((param) => {
|
|
265
|
+
if (j.ObjectPattern.check(param)) {
|
|
266
|
+
const objPattern = param as ObjectPattern;
|
|
267
|
+
objPattern.properties.forEach((prop) => {
|
|
268
|
+
if (j.ObjectProperty.check(prop) || j.Property.check(prop)) {
|
|
269
|
+
const key = (prop as ObjectProperty).key;
|
|
270
|
+
if (j.Identifier.check(key) && key.name === 'compact') {
|
|
271
|
+
key.name = 'isExpanded';
|
|
272
|
+
hasChanges = true;
|
|
273
|
+
|
|
274
|
+
const value = (prop as ObjectProperty).value;
|
|
275
|
+
if (j.Identifier.check(value) && value.name === 'compact') {
|
|
276
|
+
value.name = 'isExpanded';
|
|
277
|
+
|
|
278
|
+
// Rename all references to 'compact' in the function body to 'isExpanded'
|
|
279
|
+
// and invert ternary expressions where compact is the test
|
|
280
|
+
j(funcExpr)
|
|
281
|
+
.find(j.Identifier, {name: 'compact'})
|
|
282
|
+
.forEach((identPath) => {
|
|
283
|
+
// Skip if this is the parameter itself
|
|
284
|
+
if (identPath.value !== value) {
|
|
285
|
+
identPath.value.name = 'isExpanded';
|
|
286
|
+
|
|
287
|
+
// Check if this identifier is the test of a conditional expression
|
|
288
|
+
if (
|
|
289
|
+
identPath.parent &&
|
|
290
|
+
j.ConditionalExpression.check(
|
|
291
|
+
identPath.parent.value,
|
|
292
|
+
) &&
|
|
293
|
+
identPath.parent.value.test === identPath.value
|
|
294
|
+
) {
|
|
295
|
+
// Swap consequent and alternate to invert the logic
|
|
296
|
+
const temp = identPath.parent.value.consequent;
|
|
297
|
+
identPath.parent.value.consequent =
|
|
298
|
+
identPath.parent.value.alternate;
|
|
299
|
+
identPath.parent.value.alternate = temp;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
return hasChanges;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Update callback second parameter:
|
|
316
|
+
* wrapper: (node, compact) => ... → wrapper: (node, isExpanded) => ...
|
|
317
|
+
*/
|
|
318
|
+
function updateCallbackSecondParam(root: Collection, j: JSCodeshift): boolean {
|
|
319
|
+
let hasChanges = false;
|
|
320
|
+
|
|
321
|
+
// Find 'wrapper' property in objects (e.g., logo={{ wrapper: (node, compact) => ... }})
|
|
322
|
+
root.find(j.ObjectProperty, {
|
|
323
|
+
key: {type: 'Identifier', name: 'wrapper'},
|
|
324
|
+
}).forEach((propPath: ASTPath<ObjectProperty>) => {
|
|
325
|
+
const propValue = propPath.node.value;
|
|
326
|
+
|
|
327
|
+
if (!j.ArrowFunctionExpression.check(propValue) && !j.FunctionExpression.check(propValue)) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
const funcExpr = propValue as ArrowFunctionExpression | FunctionExpression;
|
|
332
|
+
const params = funcExpr.params;
|
|
333
|
+
|
|
334
|
+
// Check if second parameter is 'compact'
|
|
335
|
+
if (params.length >= 2) {
|
|
336
|
+
const secondParam = params[1];
|
|
337
|
+
if (j.Identifier.check(secondParam) && secondParam.name === 'compact') {
|
|
338
|
+
secondParam.name = 'isExpanded';
|
|
339
|
+
hasChanges = true;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
return hasChanges;
|
|
345
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/* eslint-disable no-param-reassign */
|
|
2
|
+
import {execSync} from 'child_process';
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
API,
|
|
6
|
+
ASTPath,
|
|
7
|
+
Collection,
|
|
8
|
+
FileInfo,
|
|
9
|
+
JSCodeshift,
|
|
10
|
+
JSXAttribute,
|
|
11
|
+
JSXIdentifier,
|
|
12
|
+
} from 'jscodeshift';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Codemod to transform AsideHeader/PageLayout `compact` → `pinned` and `onChangeCompact` → `onChangePinned`.
|
|
16
|
+
*
|
|
17
|
+
* Only applies to JSX elements: AsideHeader, PageLayout.
|
|
18
|
+
*
|
|
19
|
+
* Transformations:
|
|
20
|
+
* - compact={true} → pinned={false}
|
|
21
|
+
* - compact={false} → pinned={true}
|
|
22
|
+
* - compact (shorthand) → pinned={false}
|
|
23
|
+
* - compact={someVar} → pinned={!someVar}
|
|
24
|
+
* - onChangeCompact={fn} → onChangePinned={fn} (rename only, callback now receives pinned)
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const LAYOUT_JSX_COMPONENTS = new Set(['AsideHeader', 'PageLayout']);
|
|
28
|
+
|
|
29
|
+
function isLayoutComponent(path: ASTPath<JSXAttribute>, j: JSCodeshift): boolean {
|
|
30
|
+
const openingElement = path.parentPath?.node;
|
|
31
|
+
if (!openingElement || !j.JSXOpeningElement.check(openingElement)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const name = openingElement.name;
|
|
35
|
+
if (!j.JSXIdentifier.check(name)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return LAYOUT_JSX_COMPONENTS.has(name.name);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Inverts a JSX expression value.
|
|
43
|
+
*/
|
|
44
|
+
function invertExpression(j: JSCodeshift, expr: any): any {
|
|
45
|
+
if (j.BooleanLiteral.check(expr) || j.Literal.check(expr)) {
|
|
46
|
+
const value = expr.value;
|
|
47
|
+
if (typeof value === 'boolean') {
|
|
48
|
+
expr.value = !value;
|
|
49
|
+
return expr;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (j.UnaryExpression.check(expr) && expr.operator === '!') {
|
|
53
|
+
return expr.argument;
|
|
54
|
+
}
|
|
55
|
+
return j.unaryExpression('!', expr);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function updateCompactToPinned(root: Collection, j: JSCodeshift): boolean {
|
|
59
|
+
let hasChanges = false;
|
|
60
|
+
|
|
61
|
+
root.find(j.JSXAttribute, {name: {type: 'JSXIdentifier', name: 'compact'}}).forEach(
|
|
62
|
+
(path: ASTPath<JSXAttribute>) => {
|
|
63
|
+
if (!isLayoutComponent(path, j)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const attrNode = path.node;
|
|
68
|
+
const attrValue = attrNode.value;
|
|
69
|
+
|
|
70
|
+
(attrNode.name as JSXIdentifier).name = 'pinned';
|
|
71
|
+
|
|
72
|
+
if (attrValue === null) {
|
|
73
|
+
attrNode.value = j.jsxExpressionContainer(j.booleanLiteral(false));
|
|
74
|
+
hasChanges = true;
|
|
75
|
+
} else if (j.JSXExpressionContainer.check(attrValue)) {
|
|
76
|
+
const expr = attrValue.expression;
|
|
77
|
+
if (!j.JSXEmptyExpression.check(expr)) {
|
|
78
|
+
attrValue.expression = invertExpression(j, expr);
|
|
79
|
+
}
|
|
80
|
+
hasChanges = true;
|
|
81
|
+
} else if (j.StringLiteral.check(attrValue)) {
|
|
82
|
+
if (attrValue.value === 'true') {
|
|
83
|
+
attrNode.value = j.jsxExpressionContainer(j.booleanLiteral(false));
|
|
84
|
+
} else if (attrValue.value === 'false') {
|
|
85
|
+
attrNode.value = j.jsxExpressionContainer(j.booleanLiteral(true));
|
|
86
|
+
}
|
|
87
|
+
hasChanges = true;
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
return hasChanges;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function updateOnChangeCompactToOnChangePinned(root: Collection, j: JSCodeshift): boolean {
|
|
96
|
+
let hasChanges = false;
|
|
97
|
+
|
|
98
|
+
root.find(j.JSXAttribute, {
|
|
99
|
+
name: {type: 'JSXIdentifier', name: 'onChangeCompact'},
|
|
100
|
+
}).forEach((path: ASTPath<JSXAttribute>) => {
|
|
101
|
+
if (!isLayoutComponent(path, j)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
(path.node.name as JSXIdentifier).name = 'onChangePinned';
|
|
105
|
+
hasChanges = true;
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
return hasChanges;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export default function transformer(file: FileInfo, api: API) {
|
|
112
|
+
const j = api.jscodeshift;
|
|
113
|
+
const root = j(file.source);
|
|
114
|
+
|
|
115
|
+
const hasCompactUpdate = updateCompactToPinned(root, j);
|
|
116
|
+
const hasOnChangeUpdate = updateOnChangeCompactToOnChangePinned(root, j);
|
|
117
|
+
|
|
118
|
+
if (!hasCompactUpdate && !hasOnChangeUpdate) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const output = root.toSource();
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
const formatted = execSync('prettier --parser typescript', {
|
|
126
|
+
input: output,
|
|
127
|
+
encoding: 'utf-8',
|
|
128
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
129
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
130
|
+
});
|
|
131
|
+
return formatted;
|
|
132
|
+
} catch {
|
|
133
|
+
return output;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type {API, FileInfo, Options} from 'jscodeshift';
|
|
2
|
+
|
|
3
|
+
import compactToIsExpanded from './compactToIsExpanded';
|
|
4
|
+
import compactToPinned from './compactToPinned';
|
|
5
|
+
|
|
6
|
+
export default function transform(file: FileInfo, api: API, options: Options) {
|
|
7
|
+
let source = file.source;
|
|
8
|
+
let hasChanges = false;
|
|
9
|
+
|
|
10
|
+
const transforms = [
|
|
11
|
+
{name: 'compact-to-is-expanded', transform: compactToIsExpanded},
|
|
12
|
+
{name: 'compact-to-pinned', transform: compactToPinned},
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
for (const {name, transform: transformFn} of transforms) {
|
|
16
|
+
try {
|
|
17
|
+
const result = transformFn({source, path: file.path}, api);
|
|
18
|
+
if (result && result !== source) {
|
|
19
|
+
source = result;
|
|
20
|
+
hasChanges = true;
|
|
21
|
+
|
|
22
|
+
if (options && options.verbose) {
|
|
23
|
+
console.log(`✓ Applied ${name}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
} catch (error) {
|
|
27
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
28
|
+
console.error(`Error applying ${name}:`, errorMessage);
|
|
29
|
+
if (options && options.verbose && error instanceof Error) {
|
|
30
|
+
console.error(error.stack);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return hasChanges ? source : null;
|
|
36
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/navigation",
|
|
3
|
-
"version": "5.0.0
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Gravity UI Navigation components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@gravity-ui/prettier-config": "^1.0.0",
|
|
71
71
|
"@gravity-ui/stylelint-config": "^4.0.1",
|
|
72
72
|
"@gravity-ui/tsconfig": "^1.0.0",
|
|
73
|
-
"@gravity-ui/uikit": "^7.
|
|
73
|
+
"@gravity-ui/uikit": "^7.31.0",
|
|
74
74
|
"@jest/globals": "^30.0.5",
|
|
75
75
|
"@playwright/experimental-ct-react": "^1.49.1",
|
|
76
76
|
"@playwright/test": "^1.49.1",
|