1- import { afterNextRender , DestroyRef , Directive , effect , inject , input , isSignal , signal } from '@angular/core' ;
1+ import {
2+ afterNextRender ,
3+ DestroyRef ,
4+ Directive ,
5+ effect ,
6+ ElementRef ,
7+ inject ,
8+ input ,
9+ isSignal ,
10+ signal ,
11+ } from '@angular/core' ;
212import { Pane } from 'tweakpane' ;
13+ import { PaneConfig } from 'tweakpane/dist/types/pane/pane-config' ;
314import { NgtTweakFolder } from './folder' ;
415import { NgtTweakTitle } from './title' ;
516
@@ -13,6 +24,7 @@ export class NgtTweakPane {
1324 left = input < string | number > ( ) ;
1425 bottom = input < string | number > ( ) ;
1526 width = input < string | number > ( '256px' ) ;
27+ container = input < HTMLElement | ElementRef < HTMLElement | undefined > | undefined > ( ) ;
1628
1729 private title = inject ( NgtTweakTitle , { host : true } ) ;
1830 private folder = inject ( NgtTweakFolder , { host : true } ) ;
@@ -22,10 +34,17 @@ export class NgtTweakPane {
2234 this . folder . isSelf = false ;
2335
2436 afterNextRender ( ( ) => {
25- const pane = new Pane ( {
37+ const container = this . container ( ) ;
38+ const paneOptions : PaneConfig = {
2639 title : this . title . title ( ) ,
2740 expanded : this . folder . expanded ( ) ,
28- } ) ;
41+ } ;
42+
43+ if ( container ) {
44+ paneOptions . container = 'nativeElement' in container ? container . nativeElement : container ;
45+ }
46+
47+ const pane = new Pane ( paneOptions ) ;
2948
3049 this . pane . set ( pane ) ;
3150 this . folder . parentFolder . set ( pane ) ;
@@ -59,7 +78,7 @@ export class NgtTweakPane {
5978 } ) ;
6079 }
6180
62- private updateStyleEffect ( propertyName : Exclude < keyof NgtTweakPane , 'pane' | 'title' | 'expanded' > ) {
81+ private updateStyleEffect ( propertyName : Exclude < keyof NgtTweakPane , 'pane' | 'title' | 'expanded' | 'container' > ) {
6382 const pane = this . pane ( ) ;
6483 if ( ! pane ) return ;
6584
0 commit comments