Skip to content

Commit 0f1b557

Browse files
committed
refactor and show note for pages router
1 parent f4b0cc6 commit 0f1b557

File tree

4 files changed

+52
-43
lines changed

4 files changed

+52
-43
lines changed

packages/next/src/next-devtools/dev-overlay/components/errors/dev-tools-indicator/dev-tools-indicator.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,12 +337,13 @@ function DevToolsPopover({
337337
/>
338338

339339
{/* Page Route Info */}
340-
{process.env.__NEXT_DEVTOOL_SEGMENT_EXPLORER && routerType === 'app' ? (
340+
{process.env.__NEXT_DEVTOOL_SEGMENT_EXPLORER ? (
341341
<SegmentsExplorer
342342
isOpen={isSegmentExplorerOpen}
343343
close={closeToRootMenu}
344344
triggerRef={triggerRef}
345345
style={popover}
346+
routerType={routerType}
346347
/>
347348
) : null}
348349

@@ -411,16 +412,15 @@ function DevToolsPopover({
411412
onClick={() => setOpen(OVERLAYS.Preferences)}
412413
index={isTurbopack ? 2 : 3}
413414
/>
414-
{process.env.__NEXT_DEVTOOL_SEGMENT_EXPLORER &&
415-
routerType === 'app' ? (
415+
{process.env.__NEXT_DEVTOOL_SEGMENT_EXPLORER && (
416416
<MenuItem
417417
data-segment-explorer
418418
label="Route Info"
419419
value={<ChevronRight />}
420420
onClick={() => setOpen(OVERLAYS.SegmentExplorer)}
421421
index={isTurbopack ? 3 : 4}
422422
/>
423-
) : null}
423+
)}
424424
</div>
425425
</Context.Provider>
426426
</div>

packages/next/src/next-devtools/dev-overlay/components/overview/segment-explorer.tsx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,23 @@ const isFileNode = (node: SegmentTrieNode) => {
99
return !!node.value?.type && !!node.value?.pagePath
1010
}
1111

12-
function PageSegmentTree({ tree }: { tree: SegmentTrieNode }) {
12+
function PageSegmentTree({
13+
tree,
14+
isAppRouter,
15+
}: {
16+
tree: SegmentTrieNode
17+
isAppRouter: boolean
18+
}) {
1319
return (
1420
<div
1521
className="segment-explorer-content"
1622
data-nextjs-devtool-segment-explorer
1723
>
18-
<PageSegmentTreeLayerPresentation node={tree} level={0} segment="" />
24+
{isAppRouter ? (
25+
<PageSegmentTreeLayerPresentation node={tree} level={0} segment="" />
26+
) : (
27+
<p>Route Info currently is only available for the App Router.</p>
28+
)}
1929
</div>
2030
)
2131
}
@@ -163,13 +173,16 @@ function PageSegmentTreeLayerPresentation({
163173
}
164174

165175
export function SegmentsExplorer(
166-
props: DevToolsInfoPropsCore & HTMLProps<HTMLDivElement>
176+
props: DevToolsInfoPropsCore &
177+
HTMLProps<HTMLDivElement> & {
178+
routerType: 'app' | 'pages'
179+
}
167180
) {
168181
const tree = useSegmentTree()
169-
182+
const isAppRouter = props.routerType === 'app'
170183
return (
171184
<DevToolsInfo title="Route Info" {...props}>
172-
<PageSegmentTree tree={tree} />
185+
<PageSegmentTree tree={tree} isAppRouter={isAppRouter} />
173186
</DevToolsInfo>
174187
)
175188
}

packages/next/src/server/app-render/create-component-tree.tsx

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -654,17 +654,7 @@ async function createComponentTreeInternal({
654654
}
655655

656656
if (isPage) {
657-
const pageFilePath = getConventionPathByType(tree, dir, 'page')
658-
const PageComponent =
659-
isSegmentViewEnabled && pageFilePath
660-
? (pageProps: any) => {
661-
return (
662-
<SegmentViewNode type={nodeName} pagePath={pageFilePath}>
663-
<Component {...pageProps} />
664-
</SegmentViewNode>
665-
)
666-
}
667-
: Component
657+
const PageComponent = Component
668658

669659
// Assign searchParams to props if this is a page
670660
let pageElement: React.ReactNode
@@ -730,10 +720,21 @@ async function createComponentTreeInternal({
730720
)
731721
}
732722
}
723+
724+
const pageFilePath = getConventionPathByType(tree, dir, 'page')
725+
const wrappedPageElement =
726+
isSegmentViewEnabled && pageFilePath ? (
727+
<SegmentViewNode type={nodeName} pagePath={pageFilePath}>
728+
{pageElement}
729+
</SegmentViewNode>
730+
) : (
731+
pageElement
732+
)
733+
733734
return [
734735
actualSegment,
735736
<React.Fragment key={cacheNodeKey}>
736-
{pageElement}
737+
{wrappedPageElement}
737738
{layerAssets}
738739
<OutletBoundary>
739740
<MetadataOutlet ready={getViewportReady} />
@@ -745,18 +746,7 @@ async function createComponentTreeInternal({
745746
isPossiblyPartialResponse,
746747
]
747748
} else {
748-
const layoutFilePath = getConventionPathByType(tree, dir, 'layout')
749-
const SegmentComponent =
750-
isSegmentViewEnabled && layoutFilePath
751-
? (segmentProps: any) => {
752-
return (
753-
<SegmentViewNode type={nodeName} pagePath={layoutFilePath}>
754-
<Component {...segmentProps} />
755-
</SegmentViewNode>
756-
)
757-
}
758-
: Component
759-
749+
const SegmentComponent = Component
760750
const isRootLayoutWithChildrenSlotAndAtLeastOneMoreSlot =
761751
rootLayoutAtThisLevel &&
762752
'children' in parallelRoutes &&
@@ -915,10 +905,21 @@ async function createComponentTreeInternal({
915905
)
916906
}
917907
}
908+
909+
const layoutFilePath = getConventionPathByType(tree, dir, 'layout')
910+
const wrappedSegmentNode =
911+
isSegmentViewEnabled && layoutFilePath ? (
912+
<SegmentViewNode type={nodeName} pagePath={layoutFilePath}>
913+
{segmentNode}
914+
</SegmentViewNode>
915+
) : (
916+
segmentNode
917+
)
918+
918919
// For layouts we just render the component
919920
return [
920921
actualSegment,
921-
segmentNode,
922+
wrappedSegmentNode,
922923
parallelRouteCacheNodeSeedData,
923924
loadingData,
924925
isPossiblyPartialResponse,

test/development/app-dir/segment-explorer/segment-explorer.test.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,10 @@ describe('segment-explorer', () => {
108108
`)
109109
})
110110

111-
it('should not show segment explorer for pages router', async () => {
111+
it('should indicate segment explorer is not available pages router', async () => {
112112
const browser = await next.browser('/pages-router')
113-
114-
// open the devtool button
115-
await openDevToolsIndicatorPopover(browser)
116-
117-
// open the segment explorer
118-
expect(
119-
await browser.hasElementsByCss('[data-segment-explorer]')
120-
).toBeFalse()
113+
expect(await getSegmentExplorerContent(browser)).toMatchInlineSnapshot(
114+
`"Route Info currently is only available for the App Router."`
115+
)
121116
})
122117
})

0 commit comments

Comments
 (0)