@gravity-ui/navigation 5.0.0-beta.2 → 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/{control-menu-button.svg.js → divider-collapsed-compact.svg.js} +7 -7
- 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 +28 -3
- package/build/cjs/components/AsideHeader/AsideHeaderContext.js +10 -4
- 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 +103 -45
- 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/constants.d.ts +1 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/constants.js +2 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/constants.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +0 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +0 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/index.d.ts +0 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.d.ts +3 -4
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +67 -15
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.d.ts +3 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.js +17 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.js.map +1 -0
- 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/getIsMenuItem.d.ts +2 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getIsMenuItem.js +13 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getIsMenuItem.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +73 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js +144 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js.map +1 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.d.ts +5 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js +45 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js.map +1 -0
- 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 +16 -11
- 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 +35 -5
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +79 -124
- 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 +9 -2
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +46 -73
- 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/constants.d.ts +0 -3
- package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js +0 -4
- package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +5 -9
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +57 -73
- package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/FirstPanel.js +45 -20
- 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 +13 -5
- 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 -1
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js +19 -6
- 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 +8 -2
- package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/Panels.d.ts +1 -1
- package/build/cjs/components/AsideHeader/components/Panels.js +17 -3
- package/build/cjs/components/AsideHeader/components/Panels.js.map +1 -1
- package/build/cjs/components/AsideHeader/hooks/useDelayedToggle.d.ts +6 -0
- package/build/cjs/components/AsideHeader/hooks/useDelayedToggle.js +57 -0
- package/build/cjs/components/AsideHeader/hooks/useDelayedToggle.js.map +1 -0
- package/build/cjs/components/AsideHeader/hooks/useIsExpanded.d.ts +9 -0
- package/build/cjs/components/AsideHeader/hooks/useIsExpanded.js +67 -0
- package/build/cjs/components/AsideHeader/hooks/useIsExpanded.js.map +1 -0
- 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 +40 -9
- package/build/cjs/components/AsideHeader/types.js.map +1 -1
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +6 -1
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js +41 -6
- package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
- package/build/cjs/components/AsideHeader/utils/getGroupHeight.d.ts +2 -0
- package/build/cjs/components/AsideHeader/utils/getGroupHeight.js +16 -0
- package/build/cjs/components/AsideHeader/utils/getGroupHeight.js.map +1 -0
- 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 +5 -3
- 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 +19 -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/BurgerMenu/BurgerCompositeBar/BurgerCompositeBar.css +1 -1
- package/build/cjs/components/MobileHeader/BurgerMenu/BurgerCompositeBar/BurgerCompositeBar.module.scss.js +1 -1
- package/build/cjs/components/MobileHeader/MobileHeader.d.ts +1 -1
- package/build/cjs/components/MobileHeader/MobileHeader.js +6 -6
- package/build/cjs/components/MobileHeader/MobileHeader.js.map +1 -1
- package/build/cjs/components/MobileHeader/types.d.ts +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 +10 -4
- package/build/cjs/components/constants.js +17 -5
- package/build/cjs/components/constants.js.map +1 -1
- package/build/cjs/components/types.d.ts +24 -12
- 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/{control-menu-button.svg.js → divider-collapsed-compact.svg.js} +7 -7
- 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 +28 -3
- package/build/esm/components/AsideHeader/AsideHeaderContext.js +10 -5
- 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 +104 -46
- 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/constants.d.ts +1 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/constants.js +2 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/constants.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +0 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +0 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/index.d.ts +0 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.d.ts +3 -4
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +67 -15
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.d.ts +3 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.js +15 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/buildExpandedFromFlatList.js.map +1 -0
- 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/getIsMenuItem.d.ts +2 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getIsMenuItem.js +11 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getIsMenuItem.js.map +1 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +73 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js +136 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js.map +1 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.d.ts +5 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js +43 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js.map +1 -0
- 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 +18 -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 +35 -5
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +80 -126
- 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 +9 -2
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +49 -76
- 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/constants.d.ts +0 -3
- package/build/esm/components/AsideHeader/components/CompositeBar/constants.js +1 -3
- package/build/esm/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +5 -9
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +57 -72
- package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
- package/build/esm/components/AsideHeader/components/FirstPanel.js +46 -21
- 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 +15 -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 -1
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js +20 -7
- 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 +8 -2
- package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
- package/build/esm/components/AsideHeader/components/Panels.d.ts +1 -1
- package/build/esm/components/AsideHeader/components/Panels.js +18 -4
- package/build/esm/components/AsideHeader/components/Panels.js.map +1 -1
- package/build/esm/components/AsideHeader/hooks/useDelayedToggle.d.ts +6 -0
- package/build/esm/components/AsideHeader/hooks/useDelayedToggle.js +55 -0
- package/build/esm/components/AsideHeader/hooks/useDelayedToggle.js.map +1 -0
- package/build/esm/components/AsideHeader/hooks/useIsExpanded.d.ts +9 -0
- package/build/esm/components/AsideHeader/hooks/useIsExpanded.js +65 -0
- package/build/esm/components/AsideHeader/hooks/useIsExpanded.js.map +1 -0
- 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 +40 -9
- package/build/esm/components/AsideHeader/types.js.map +1 -1
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +6 -1
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js +41 -6
- package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
- package/build/esm/components/AsideHeader/utils/getGroupHeight.d.ts +2 -0
- package/build/esm/components/AsideHeader/utils/getGroupHeight.js +14 -0
- package/build/esm/components/AsideHeader/utils/getGroupHeight.js.map +1 -0
- 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 +5 -3
- 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 +19 -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/BurgerMenu/BurgerCompositeBar/BurgerCompositeBar.css +1 -1
- package/build/esm/components/MobileHeader/BurgerMenu/BurgerCompositeBar/BurgerCompositeBar.module.scss.js +1 -1
- package/build/esm/components/MobileHeader/MobileHeader.d.ts +1 -1
- package/build/esm/components/MobileHeader/MobileHeader.js +7 -7
- package/build/esm/components/MobileHeader/MobileHeader.js.map +1 -1
- package/build/esm/components/MobileHeader/types.d.ts +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 +10 -4
- package/build/esm/components/constants.js +11 -5
- package/build/esm/components/constants.js.map +1 -1
- package/build/esm/components/types.d.ts +24 -12
- 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/unifyInterfaces.ts +1 -0
- package/codemods/transforms/v5.ts +36 -0
- package/package.json +5 -4
- package/build/cjs/assets/icons/control-menu-button.svg.js.map +0 -1
- 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 -21
- 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 -13
- package/build/cjs/components/AsideHeader/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.css +0 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.d.ts +0 -12
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +0 -44
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +0 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.module.scss.js +0 -8
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.module.scss.js.map +0 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/index.d.ts +0 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.d.ts +0 -2
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.js +0 -29
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.js.map +0 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.css +0 -2
- 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/assets/icons/control-menu-button.svg.js.map +0 -1
- 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 -21
- 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 -13
- package/build/esm/components/AsideHeader/__tests__/helpersPlaywright.d.ts +0 -2
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.css +0 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.d.ts +0 -12
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +0 -42
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +0 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.module.scss.js +0 -4
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.module.scss.js.map +0 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/index.d.ts +0 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.d.ts +0 -2
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.js +0 -27
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useVisibleMenuItems.js.map +0 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.css +0 -2
- 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsMenu.js","sources":["../../../../../../src/components/Settings/SettingsMenu/SettingsMenu.tsx"],"sourcesContent":["import React from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {createBlock} from '../../utils/cn';\nimport {useCurrent, useStableCallback} from '../helpers';\nimport {Item, SettingsMenuProps} from '../types';\n\nimport styles from './SettingsMenu.module.scss';\n\nconst b = createBlock('settings-menu', styles);\n\nexport interface SettingsMenuInstance {\n handleKeyDown(event: React.KeyboardEvent): boolean;\n clearFocus(): void;\n}\n\nexport const SettingsMenu = React.forwardRef<SettingsMenuInstance, SettingsMenuProps>(\n // eslint-disable-next-line prefer-arrow-callback\n function SettingsMenu({items, onChange, activeItemId}, ref) {\n const [focusItemId, setFocusId] = React.useState<string>();\n const containerRef = React.useRef<HTMLDivElement>(null);\n const handleChange = useStableCallback(onChange);\n const getFocused = useCurrent(focusItemId);\n\n React.useImperativeHandle(\n ref,\n () => ({\n handleKeyDown(event) {\n if (!containerRef.current) {\n return false;\n }\n const focused = getFocused();\n if (focused && event.key === 'Enter') {\n handleChange(focused);\n return true;\n } else if (event.key === 'ArrowDown') {\n setFocusId(focusNext(containerRef.current, focused, 1));\n return true;\n } else if (event.key === 'ArrowUp') {\n setFocusId(focusNext(containerRef.current, focused, -1));\n return true;\n }\n return false;\n },\n clearFocus() {\n setFocusId(undefined);\n },\n }),\n [getFocused, handleChange],\n );\n\n return (\n <div ref={containerRef} className={b()}>\n {items.map((firstLevelItem) => {\n if ('groupTitle' in firstLevelItem) {\n return (\n <div key={firstLevelItem.groupTitle} className={b('group')}>\n <span className={b('group-heading')}>\n {firstLevelItem.groupTitle}\n </span>\n {firstLevelItem.items.map((item) => {\n return renderMenuItem(\n item,\n onChange,\n activeItemId,\n focusItemId,\n );\n })}\n </div>\n );\n }\n return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);\n })}\n </div>\n );\n },\n);\n\nfunction renderMenuItem(\n item: Item,\n onChange: (id: string) => void,\n activeItemId: string | undefined,\n focusItemId: string | undefined,\n) {\n return (\n <span\n key={item.title}\n className={b('item', {\n selected: activeItemId === item.id,\n disabled: item.disabled,\n focused: focusItemId === item.id,\n badge: item.withBadge,\n })}\n onClick={() => {\n if (!item.disabled) {\n onChange(item.id);\n }\n }}\n data-id={item.id}\n >\n {item.icon ? <Icon size={16} {...item.icon} className={b('item-icon')} /> : undefined}\n <span>{item.title}</span>\n </span>\n );\n}\n\nfunction focusNext(container: HTMLElement, focused: string | undefined, direction: number) {\n const elements = container.querySelectorAll(`.${b('item')}:not(.${b('item')}_disabled)`);\n if (elements.length === 0) {\n return undefined;\n }\n\n let currentIndex = direction > 0 ? -1 : 0;\n if (focused) {\n currentIndex = Array.prototype.findIndex.call(\n elements,\n (element) => element.getAttribute('data-id') === focused,\n );\n }\n\n currentIndex = (elements.length + currentIndex + direction) % elements.length;\n return elements[currentIndex].getAttribute('data-id') ?? undefined;\n}\n"],"names":["React"],"mappings":";;;;;;AAUA,MAAM,CAAC,GAAG,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC;AAOjC,MAAA,YAAY,GAAGA,cAAK,CAAC,UAAU;AACxC;AACA,SAAS,YAAY,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAC,EAAE,GAAG,EAAA;IACtD,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAGA,cAAK,CAAC,QAAQ,EAAU;
|
|
1
|
+
{"version":3,"file":"SettingsMenu.js","sources":["../../../../../../src/components/Settings/SettingsMenu/SettingsMenu.tsx"],"sourcesContent":["import React from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {createBlock} from '../../utils/cn';\nimport {useCurrent, useStableCallback} from '../helpers';\nimport {Item, SettingsMenuProps} from '../types';\n\nimport styles from './SettingsMenu.module.scss';\n\nconst b = createBlock('settings-menu', styles);\n\nexport interface SettingsMenuInstance {\n handleKeyDown(event: React.KeyboardEvent): boolean;\n clearFocus(): void;\n}\n\nexport const SettingsMenu = React.forwardRef<SettingsMenuInstance, SettingsMenuProps>(\n // eslint-disable-next-line prefer-arrow-callback\n function SettingsMenu({items, onChange, activeItemId}, ref) {\n const [focusItemId, setFocusId] = React.useState<string>();\n const [scrolled, setScrolled] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const handleChange = useStableCallback(onChange);\n const getFocused = useCurrent(focusItemId);\n\n const handleScroll = React.useCallback((event: React.UIEvent<HTMLDivElement>) => {\n setScrolled(event.currentTarget.scrollTop > 0);\n }, []);\n\n React.useImperativeHandle(\n ref,\n () => ({\n handleKeyDown(event) {\n if (!containerRef.current) {\n return false;\n }\n const focused = getFocused();\n if (focused && event.key === 'Enter') {\n handleChange(focused);\n return true;\n } else if (event.key === 'ArrowDown') {\n setFocusId(focusNext(containerRef.current, focused, 1));\n return true;\n } else if (event.key === 'ArrowUp') {\n setFocusId(focusNext(containerRef.current, focused, -1));\n return true;\n }\n return false;\n },\n clearFocus() {\n setFocusId(undefined);\n },\n }),\n [getFocused, handleChange],\n );\n\n return (\n <div ref={containerRef} className={b({scrolled})} onScroll={handleScroll}>\n {items.map((firstLevelItem) => {\n if ('groupTitle' in firstLevelItem) {\n return (\n <div key={firstLevelItem.groupTitle} className={b('group')}>\n <span className={b('group-heading')}>\n {firstLevelItem.groupTitle}\n </span>\n {firstLevelItem.items.map((item) => {\n return renderMenuItem(\n item,\n onChange,\n activeItemId,\n focusItemId,\n );\n })}\n </div>\n );\n }\n return renderMenuItem(firstLevelItem, onChange, activeItemId, focusItemId);\n })}\n </div>\n );\n },\n);\n\nfunction renderMenuItem(\n item: Item,\n onChange: (id: string) => void,\n activeItemId: string | undefined,\n focusItemId: string | undefined,\n) {\n return (\n <span\n key={item.title}\n className={b('item', {\n selected: activeItemId === item.id,\n disabled: item.disabled,\n focused: focusItemId === item.id,\n badge: item.withBadge,\n })}\n onClick={() => {\n if (!item.disabled) {\n onChange(item.id);\n }\n }}\n data-id={item.id}\n >\n {item.icon ? <Icon size={16} {...item.icon} className={b('item-icon')} /> : undefined}\n <span>{item.title}</span>\n </span>\n );\n}\n\nfunction focusNext(container: HTMLElement, focused: string | undefined, direction: number) {\n const elements = container.querySelectorAll(`.${b('item')}:not(.${b('item')}_disabled)`);\n if (elements.length === 0) {\n return undefined;\n }\n\n let currentIndex = direction > 0 ? -1 : 0;\n if (focused) {\n currentIndex = Array.prototype.findIndex.call(\n elements,\n (element) => element.getAttribute('data-id') === focused,\n );\n }\n\n currentIndex = (elements.length + currentIndex + direction) % elements.length;\n return elements[currentIndex].getAttribute('data-id') ?? undefined;\n}\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var styles = {"gn-settings-menu__group-heading":"SettingsMenu-module__gn-settings-menu__group-heading___b3rMA","gnSettingsMenuGroupHeading":"SettingsMenu-module__gn-settings-menu__group-heading___b3rMA","gn-settings-menu__group":"SettingsMenu-module__gn-settings-menu__group___zBrCj","gnSettingsMenuGroup":"SettingsMenu-module__gn-settings-menu__group___zBrCj","gn-settings-menu__item":"SettingsMenu-module__gn-settings-menu__item___QGz0Y","gnSettingsMenuItem":"SettingsMenu-module__gn-settings-menu__item___QGz0Y","gn-settings-menu__item-icon":"SettingsMenu-module__gn-settings-menu__item-icon___B-h-X","gnSettingsMenuItemIcon":"SettingsMenu-module__gn-settings-menu__item-icon___B-h-X","gn-settings-menu__item_focused":"SettingsMenu-module__gn-settings-menu__item_focused___pKQBC","gnSettingsMenuItemFocused":"SettingsMenu-module__gn-settings-menu__item_focused___pKQBC","gn-settings-menu__item_selected":"SettingsMenu-module__gn-settings-menu__item_selected___Og2Jr","gnSettingsMenuItemSelected":"SettingsMenu-module__gn-settings-menu__item_selected___Og2Jr","gn-settings-menu__item_disabled":"SettingsMenu-module__gn-settings-menu__item_disabled___xv9E8","gnSettingsMenuItemDisabled":"SettingsMenu-module__gn-settings-menu__item_disabled___xv9E8","gn-settings-menu__item_badge":"SettingsMenu-module__gn-settings-menu__item_badge___I-O-X","gnSettingsMenuItemBadge":"SettingsMenu-module__gn-settings-menu__item_badge___I-O-X"};
|
|
1
|
+
var styles = {"gn-settings-menu":"SettingsMenu-module__gn-settings-menu___ChFyc","gnSettingsMenu":"SettingsMenu-module__gn-settings-menu___ChFyc","gn-settings-menu_scrolled":"SettingsMenu-module__gn-settings-menu_scrolled___QYbnX","gnSettingsMenuScrolled":"SettingsMenu-module__gn-settings-menu_scrolled___QYbnX","gn-settings-menu__group-heading":"SettingsMenu-module__gn-settings-menu__group-heading___b3rMA","gnSettingsMenuGroupHeading":"SettingsMenu-module__gn-settings-menu__group-heading___b3rMA","gn-settings-menu__group":"SettingsMenu-module__gn-settings-menu__group___zBrCj","gnSettingsMenuGroup":"SettingsMenu-module__gn-settings-menu__group___zBrCj","gn-settings-menu__item":"SettingsMenu-module__gn-settings-menu__item___QGz0Y","gnSettingsMenuItem":"SettingsMenu-module__gn-settings-menu__item___QGz0Y","gn-settings-menu__item-icon":"SettingsMenu-module__gn-settings-menu__item-icon___B-h-X","gnSettingsMenuItemIcon":"SettingsMenu-module__gn-settings-menu__item-icon___B-h-X","gn-settings-menu__item_focused":"SettingsMenu-module__gn-settings-menu__item_focused___pKQBC","gnSettingsMenuItemFocused":"SettingsMenu-module__gn-settings-menu__item_focused___pKQBC","gn-settings-menu__item_selected":"SettingsMenu-module__gn-settings-menu__item_selected___Og2Jr","gnSettingsMenuItemSelected":"SettingsMenu-module__gn-settings-menu__item_selected___Og2Jr","gn-settings-menu__item_disabled":"SettingsMenu-module__gn-settings-menu__item_disabled___xv9E8","gnSettingsMenuItemDisabled":"SettingsMenu-module__gn-settings-menu__item_disabled___xv9E8","gn-settings-menu__item_badge":"SettingsMenu-module__gn-settings-menu__item_badge___I-O-X","gnSettingsMenuItemBadge":"SettingsMenu-module__gn-settings-menu__item_badge___I-O-X"};
|
|
2
2
|
|
|
3
3
|
export { styles as default };
|
|
4
4
|
//# sourceMappingURL=SettingsMenu.module.scss.js.map
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
export declare const ASIDE_HEADER_ICON_SIZE =
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
1
|
+
export declare const ASIDE_HEADER_ICON_SIZE = 16;
|
|
2
|
+
export declare const ASIDE_HEADER_COLLAPSED_WIDTH = 56;
|
|
3
|
+
export declare const ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE = 40;
|
|
4
|
+
export declare const ASIDE_HEADER_EXPANDED_WIDTH = 240;
|
|
5
|
+
export declare const ITEM_HEIGHT = 36;
|
|
6
|
+
export declare const ITEM_HEIGHT_COMPACT = 28;
|
|
5
7
|
export declare const HEADER_DIVIDER_HEIGHT = 29;
|
|
8
|
+
export declare const HEADER_DIVIDER_HEIGHT_COMPACT = 22;
|
|
9
|
+
export declare const ASIDE_HEADER_EXPAND_TRANSITION_DELAY = 150;
|
|
10
|
+
export declare const ASIDE_HEADER_EXPAND_DELAY = 250;
|
|
11
|
+
export declare const ITEM_GAP = 2;
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
const ASIDE_HEADER_ICON_SIZE =
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
1
|
+
const ASIDE_HEADER_ICON_SIZE = 16;
|
|
2
|
+
const ASIDE_HEADER_COLLAPSED_WIDTH = 56;
|
|
3
|
+
const ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE = 40;
|
|
4
|
+
const ASIDE_HEADER_EXPANDED_WIDTH = 240;
|
|
5
|
+
const ITEM_HEIGHT = 36;
|
|
6
|
+
const ITEM_HEIGHT_COMPACT = 28;
|
|
5
7
|
const HEADER_DIVIDER_HEIGHT = 29;
|
|
8
|
+
const HEADER_DIVIDER_HEIGHT_COMPACT = 22;
|
|
9
|
+
const ASIDE_HEADER_EXPAND_TRANSITION_DELAY = 150;
|
|
10
|
+
const ASIDE_HEADER_EXPAND_DELAY = 250;
|
|
11
|
+
const ITEM_GAP = 2;
|
|
6
12
|
|
|
7
|
-
export {
|
|
13
|
+
export { ASIDE_HEADER_COLLAPSED_WIDTH, ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE, ASIDE_HEADER_EXPANDED_WIDTH, ASIDE_HEADER_EXPAND_DELAY, ASIDE_HEADER_EXPAND_TRANSITION_DELAY, ASIDE_HEADER_ICON_SIZE, HEADER_DIVIDER_HEIGHT, HEADER_DIVIDER_HEIGHT_COMPACT, ITEM_GAP, ITEM_HEIGHT, ITEM_HEIGHT_COMPACT };
|
|
8
14
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../src/components/constants.ts"],"sourcesContent":["export const ASIDE_HEADER_ICON_SIZE =
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/components/constants.ts"],"sourcesContent":["export const ASIDE_HEADER_ICON_SIZE = 16;\nexport const ASIDE_HEADER_COLLAPSED_WIDTH = 56;\nexport const ASIDE_HEADER_COLLAPSED_WIDTH_COMPACT_MODE = 40;\nexport const ASIDE_HEADER_EXPANDED_WIDTH = 240;\nexport const ITEM_HEIGHT = 36;\nexport const ITEM_HEIGHT_COMPACT = 28;\nexport const HEADER_DIVIDER_HEIGHT = 29;\nexport const HEADER_DIVIDER_HEIGHT_COMPACT = 22;\nexport const ASIDE_HEADER_EXPAND_TRANSITION_DELAY = 150;\nexport const ASIDE_HEADER_EXPAND_DELAY = 250;\nexport const ITEM_GAP = 2;\n"],"names":[],"mappings":"AAAO,MAAM,sBAAsB,GAAG;AAC/B,MAAM,4BAA4B,GAAG;AACrC,MAAM,yCAAyC,GAAG;AAClD,MAAM,2BAA2B,GAAG;AACpC,MAAM,WAAW,GAAG;AACpB,MAAM,mBAAmB,GAAG;AAC5B,MAAM,qBAAqB,GAAG;AAC9B,MAAM,6BAA6B,GAAG;AACtC,MAAM,oCAAoC,GAAG;AAC7C,MAAM,yBAAyB,GAAG;AAClC,MAAM,QAAQ,GAAG;;;;"}
|
|
@@ -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,33 +16,43 @@ export interface MenuItem extends QAProps {
|
|
|
15
16
|
iconQa?: string;
|
|
16
17
|
href?: string;
|
|
17
18
|
current?: boolean;
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
onItemClick?: (item: MenuItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent>, options: {
|
|
20
|
+
setCollapseBlocker: SetCollapseBlocker | undefined;
|
|
21
|
+
}) => void;
|
|
20
22
|
onItemClickCapture?: (event: React.SyntheticEvent) => void;
|
|
21
23
|
itemWrapper?: (p: MakeItemParams, makeItem: (p: MakeItemParams) => React.ReactNode, opts: {
|
|
22
|
-
|
|
23
|
-
compact: boolean;
|
|
24
|
+
isExpanded: boolean;
|
|
24
25
|
item: MenuItem;
|
|
25
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;
|
|
26
29
|
}) => React.ReactNode;
|
|
27
30
|
preventUserRemoving?: boolean;
|
|
28
31
|
rightAdornment?: React.ReactNode;
|
|
29
32
|
type?: MenuItemType;
|
|
30
|
-
afterMoreButton?: boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Order number. Used to determine the display order in the side menu
|
|
33
|
-
*/
|
|
34
|
-
order?: number;
|
|
35
33
|
/**
|
|
36
34
|
* Visibility flag in the side menu
|
|
37
35
|
*/
|
|
38
36
|
hidden?: boolean;
|
|
39
37
|
/**
|
|
40
|
-
* The
|
|
38
|
+
* The group ID to which the menu item belongs. Used for grouping menu items
|
|
41
39
|
*/
|
|
42
|
-
|
|
40
|
+
groupId?: string;
|
|
43
41
|
className?: string;
|
|
44
42
|
}
|
|
43
|
+
export interface MenuGroup {
|
|
44
|
+
id: string;
|
|
45
|
+
title: string;
|
|
46
|
+
icon?: IconProps['data'];
|
|
47
|
+
/** Hide the group from display */
|
|
48
|
+
hidden?: boolean;
|
|
49
|
+
/** Allow collapsing the group via UI */
|
|
50
|
+
collapsible?: boolean;
|
|
51
|
+
/** Initial collapsed state when collapsible is true */
|
|
52
|
+
collapsedByDefault?: boolean;
|
|
53
|
+
/** Current collapsed state. When undefined, collapsedByDefault is used for display. */
|
|
54
|
+
collapsed?: boolean;
|
|
55
|
+
}
|
|
45
56
|
export interface LogoProps {
|
|
46
57
|
text: (() => React.ReactNode) | string;
|
|
47
58
|
className?: string;
|
|
@@ -52,7 +63,8 @@ export interface LogoProps {
|
|
|
52
63
|
textSize?: number;
|
|
53
64
|
href?: string;
|
|
54
65
|
target?: HTMLAttributeAnchorTarget;
|
|
55
|
-
|
|
66
|
+
/** Wrapper function for the logo. The `isExpanded` parameter indicates if the navigation is expanded. */
|
|
67
|
+
wrapper?: (node: React.ReactNode, isExpanded: boolean) => React.ReactNode;
|
|
56
68
|
onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
|
|
57
69
|
'aria-label'?: string;
|
|
58
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
|
+
}
|