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' ;
2
12
import { Pane } from 'tweakpane' ;
13
+ import { PaneConfig } from 'tweakpane/dist/types/pane/pane-config' ;
3
14
import { NgtTweakFolder } from './folder' ;
4
15
import { NgtTweakTitle } from './title' ;
5
16
@@ -13,6 +24,7 @@ export class NgtTweakPane {
13
24
left = input < string | number > ( ) ;
14
25
bottom = input < string | number > ( ) ;
15
26
width = input < string | number > ( '256px' ) ;
27
+ container = input < HTMLElement | ElementRef < HTMLElement | undefined > | undefined > ( ) ;
16
28
17
29
private title = inject ( NgtTweakTitle , { host : true } ) ;
18
30
private folder = inject ( NgtTweakFolder , { host : true } ) ;
@@ -22,10 +34,17 @@ export class NgtTweakPane {
22
34
this . folder . isSelf = false ;
23
35
24
36
afterNextRender ( ( ) => {
25
- const pane = new Pane ( {
37
+ const container = this . container ( ) ;
38
+ const paneOptions : PaneConfig = {
26
39
title : this . title . title ( ) ,
27
40
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 ) ;
29
48
30
49
this . pane . set ( pane ) ;
31
50
this . folder . parentFolder . set ( pane ) ;
@@ -59,7 +78,7 @@ export class NgtTweakPane {
59
78
} ) ;
60
79
}
61
80
62
- private updateStyleEffect ( propertyName : Exclude < keyof NgtTweakPane , 'pane' | 'title' | 'expanded' > ) {
81
+ private updateStyleEffect ( propertyName : Exclude < keyof NgtTweakPane , 'pane' | 'title' | 'expanded' | 'container' > ) {
63
82
const pane = this . pane ( ) ;
64
83
if ( ! pane ) return ;
65
84
0 commit comments