Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/silent-planets-learn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@tanstack/angular-table-devtools': patch
'@tanstack/preact-table-devtools': patch
'@tanstack/react-table-devtools': patch
'@tanstack/solid-table-devtools': patch
'@tanstack/vue-table-devtools': patch
'@tanstack/table-devtools': patch
---

Hotfix: Fixes TableDevtoolsPanel rendering while using as a standalone component in TanStack Devtools
4 changes: 2 additions & 2 deletions packages/angular-table-devtools/src/TableDevtools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import type { DevtoolsPanelProps } from '@tanstack/devtools-utils/angular'

export interface TableDevtoolsAngularInit extends Partial<DevtoolsPanelProps> {}

function resolvePanelProps(
export function resolvePanelProps(
props?: TableDevtoolsAngularInit,
): DevtoolsPanelProps {
return {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function resolvePanelProps(
): DevtoolsPanelProps {
return {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
}
}

Expand Down
18 changes: 18 additions & 0 deletions packages/angular-table-devtools/tests/panel-props.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { describe, expect, it } from 'vitest'
import { resolvePanelProps } from '../src/TableDevtools'

describe('TableDevtoolsPanel props', () => {
it('treats a standalone panel without devtools props as open', () => {
expect(resolvePanelProps()).toEqual({
theme: 'dark',
devtoolsOpen: true,
})
})

it('preserves an explicit closed state from the devtools plugin', () => {
expect(resolvePanelProps({ devtoolsOpen: false })).toEqual({
theme: 'dark',
devtoolsOpen: false,
})
})
})
2 changes: 1 addition & 1 deletion packages/preact-table-devtools/src/PreactTableDevtools.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ function resolvePanelProps(
): DevtoolsPanelProps {
return {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ function resolvePanelProps(
): DevtoolsPanelProps {
return {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/react-table-devtools/src/ReactTableDevtools.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const [TableDevtoolsPanelBase, TableDevtoolsPanelNoOpBase] =
function resolvePanelProps(props?: TableDevtoolsReactInit): DevtoolsPanelProps {
return {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const [TableDevtoolsPanelBase] = createReactPanel(TableDevtoolsCore)
function resolvePanelProps(props?: TableDevtoolsReactInit): DevtoolsPanelProps {
return {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/solid-table-devtools/src/TableDevtools.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function resolvePanelProps(props?: TableDevtoolsSolidInit): DevtoolsPanelProps {
return props?.theme ?? 'dark'
},
get devtoolsOpen() {
return props?.devtoolsOpen ?? false
return props?.devtoolsOpen ?? true
},
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function resolvePanelProps(props?: TableDevtoolsSolidInit): DevtoolsPanelProps {
return props?.theme ?? 'dark'
},
get devtoolsOpen() {
return props?.devtoolsOpen ?? false
return props?.devtoolsOpen ?? true
},
}
}
Expand Down
4 changes: 2 additions & 2 deletions packages/table-devtools/src/TableDevtools.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import type { TanStackDevtoolsTheme } from '@tanstack/devtools-ui'

export default function TableDevtools(props: {
theme: TanStackDevtoolsTheme
devtoolsOpen: boolean
devtoolsOpen?: boolean
}) {
return (
<ThemeContextProvider theme={props.theme}>
<Show when={props.devtoolsOpen}>
<Show when={props.devtoolsOpen ?? true}>
<TableContextProvider>
<Shell />
</TableContextProvider>
Expand Down
15 changes: 15 additions & 0 deletions packages/table-devtools/tests/panel-lifecycle.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,21 @@ afterEach(() => {
})

describe('TableDevtools panel lifecycle', () => {
it('treats a standalone panel without devtools props as open', async () => {
const { subscribe, table } = createDevtoolsTable()
const cleanupTarget = upsertTableDevtoolsTarget({
table: table as never,
})
const element = document.createElement('div')
const dispose = render(() => <TableDevtools theme="dark" />, element)

await Promise.resolve()
expect(subscribe).toHaveBeenCalledTimes(1)

dispose()
cleanupTarget?.()
})

it('subscribes only while the devtools panel is open', async () => {
const { subscribe, table, unsubscribe } = createDevtoolsTable()
const cleanupTarget = upsertTableDevtoolsTarget({
Expand Down
4 changes: 2 additions & 2 deletions packages/vue-table-devtools/src/VueTableDevtools.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class TableDevtoolsVueCore {
mount(el: HTMLElement, props?: DevtoolsPanelProps) {
void this.core.mount(el, {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
})
}

Expand All @@ -39,7 +39,7 @@ function createPanelWrapper(
return () => {
const devtoolsProps = {
theme: props.theme ?? 'dark',
devtoolsOpen: props.devtoolsOpen ?? false,
devtoolsOpen: props.devtoolsOpen ?? true,
}
return h(Component, {
key: `${devtoolsProps.theme}:${devtoolsProps.devtoolsOpen}`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class TableDevtoolsVueCore {
mount(el: HTMLElement, props?: DevtoolsPanelProps) {
void this.core.mount(el, {
theme: props?.theme ?? 'dark',
devtoolsOpen: props?.devtoolsOpen ?? false,
devtoolsOpen: props?.devtoolsOpen ?? true,
})
}

Expand All @@ -34,7 +34,7 @@ export const TableDevtoolsPanel = defineComponent({
return () => {
const devtoolsProps = {
theme: props.theme ?? 'dark',
devtoolsOpen: props.devtoolsOpen ?? false,
devtoolsOpen: props.devtoolsOpen ?? true,
}
return h(TableDevtoolsPanelBase, {
key: `${devtoolsProps.theme}:${devtoolsProps.devtoolsOpen}`,
Expand Down
Loading