11/** @vitest -environment jsdom */
22import { act , createRef } from 'react'
3- import { DetailsPanel } from '@sim/emcn'
3+ import { DetailsPanel , type DetailsPanelProps } from '@sim/emcn'
44import { createRoot } from 'react-dom/client'
55import { expect , it , vi } from 'vitest'
66
@@ -11,11 +11,12 @@ it('forwards resize events and retains content and refs while closed', () => {
1111 const root = createRoot ( container )
1212 const ref = createRef < HTMLDivElement > ( )
1313 const resize = vi . fn ( )
14- const render = ( open : boolean ) => (
14+ const render = ( open : boolean , width : DetailsPanelProps [ 'width' ] = 520 ) => (
1515 < DetailsPanel
1616 ref = { ref }
1717 open = { open }
18- width = { 520 }
18+ width = { width }
19+ style = { { width : 1 , opacity : 0.9 } }
1920 onResizeStart = { resize }
2021 resizeLabel = 'Resize details'
2122 aria-label = 'Details'
@@ -27,9 +28,13 @@ it('forwards resize events and retains content and refs while closed', () => {
2728 try {
2829 act ( ( ) => root . render ( render ( true ) ) )
2930 const panel = ref . current !
31+ expect ( panel . style . getPropertyValue ( '--details-panel-width' ) ) . toBe ( '520px' )
32+ expect ( panel . style . width ) . toBe ( '' )
33+ expect ( panel . style . opacity ) . toBe ( '0.9' )
3034 expect ( panel . hasAttribute ( 'inert' ) ) . toBe ( false )
3135 const input = panel . querySelector ( 'input' ) !
32- const handle = container . querySelector ( '[role="separator"]' ) !
36+ const handle = container . querySelector < HTMLDivElement > ( '[role="separator"]' ) !
37+ expect ( handle . style . getPropertyValue ( '--details-panel-width' ) ) . toBe ( '520px' )
3338 expect ( handle . getAttribute ( 'aria-label' ) ) . toBe ( 'Resize details' )
3439 expect ( panel . contains ( handle ) ) . toBe ( false )
3540 act ( ( ) => handle . dispatchEvent ( new MouseEvent ( 'mousedown' , { bubbles : true , clientX : 240 } ) ) )
@@ -42,7 +47,9 @@ it('forwards resize events and retains content and refs while closed', () => {
4247 expect ( panel . querySelector ( 'input' ) ) . toBe ( input )
4348 expect ( input . value ) . toBe ( 'Retained query' )
4449 expect ( container . querySelector ( '[role="separator"]' ) ) . toBeNull ( )
45- act ( ( ) => root . render ( render ( true ) ) )
50+ const responsiveWidth = 'clamp(min(320px, 60vw), 520px, 60vw)'
51+ act ( ( ) => root . render ( render ( true , responsiveWidth ) ) )
52+ expect ( panel . style . getPropertyValue ( '--details-panel-width' ) ) . toBe ( responsiveWidth )
4653 expect ( panel . hasAttribute ( 'inert' ) ) . toBe ( false )
4754 expect ( panel . querySelector ( 'input' ) ) . toBe ( input )
4855 expect ( container . querySelector ( '[role="separator"]' ) ) . not . toBeNull ( )
0 commit comments