@@ -52,13 +52,19 @@ const Label = styled.label`
52
52
}
53
53
` ;
54
54
55
+ const Options = styled . div `
56
+ display: grid;
57
+ grid-template-columns: 50% 60%;
58
+ ` ;
59
+
55
60
export function Example ( ) {
56
61
const [ indentWidth , setIndentWidth ] = useState ( 15 ) ;
57
62
const [ theme , setTheme ] = useState < React . CSSProperties > ( lightTheme as React . CSSProperties ) ;
58
63
const [ displayDataTypes , setDisplayDataTypes ] = useState ( true ) ;
59
64
const [ displayObjectSize , setDisplayObjectSize ] = useState ( true ) ;
60
65
const [ clipboard , setClipboard ] = useState ( true ) ;
61
66
const [ quotes , setQuotes ] = useState < JsonViewProps < object > [ 'quotes' ] > ( "\"" ) ;
67
+ const [ collapsed , setCollapsed ] = useState < JsonViewProps < object > [ 'collapsed' ] > ( true ) ;
62
68
return (
63
69
< Fragment >
64
70
< JsonView
@@ -69,47 +75,65 @@ export function Example() {
69
75
quotes = { quotes }
70
76
enableClipboard = { clipboard }
71
77
style = { theme }
78
+ collapsed = { collapsed }
72
79
/>
73
- < Label >
74
- < span > Theme:</ span >
75
- < select
76
- onChange = { ( evn ) => setTheme ( themesData [ evn . target . value as keyof typeof themesData ] as React . CSSProperties ) }
77
- >
78
- < option value = "light" > light</ option >
79
- < option value = "dark" > dark</ option >
80
- </ select >
81
- </ Label >
82
- < Label >
83
- < span > Quotes:</ span >
84
- < select
85
- value = { quotes ?. toString ( ) }
86
- onChange = { ( evn ) => setQuotes ( evn . target . value as JsonViewProps < object > [ 'quotes' ] ) }
87
- >
88
- < option value = "" > enable quotes</ option >
89
- < option value = { `"` } > " double quotes</ option >
90
- < option value = { `'` } > ' single quotes</ option >
91
- </ select >
92
- </ Label >
93
- < Label >
94
- < span > Indent:</ span >
95
- < input type = "number" value = { indentWidth } onChange = { ( evn ) => setIndentWidth ( Number ( evn . target . value ) ) } />
96
- </ Label >
97
- < Label >
98
- < span > Enable Clipboard:</ span >
99
- < input type = "checkbox" checked = { clipboard } onChange = { ( evn ) => setClipboard ( evn . target . checked ) } />
100
- </ Label >
101
- < Label >
102
- < span > Display Data Types:</ span >
103
- < input type = "checkbox" checked = { displayDataTypes } onChange = { ( evn ) => setDisplayDataTypes ( evn . target . checked ) } />
104
- </ Label >
105
- < Label >
106
- < span > Display Object Size:</ span >
107
- < input
108
- type = "checkbox"
109
- checked = { displayObjectSize }
110
- onChange = { ( evn ) => setDisplayObjectSize ( evn . target . checked ) }
111
- />
112
- </ Label >
80
+ < Options >
81
+ < Label >
82
+ < span > Theme:</ span >
83
+ < select
84
+ onChange = { ( evn ) => setTheme ( themesData [ evn . target . value as keyof typeof themesData ] as React . CSSProperties ) }
85
+ >
86
+ < option value = "light" > light</ option >
87
+ < option value = "dark" > dark</ option >
88
+ </ select >
89
+ </ Label >
90
+ < Label >
91
+ < span > Collapsed:</ span >
92
+ < select
93
+ value = { collapsed ?. toString ( ) }
94
+ onChange = { ( { target : { value } } ) => {
95
+ const val = value === 'false' ? false : value === 'true' ? true : Number ( value ) ;
96
+ setCollapsed ( val ) ;
97
+ } }
98
+ >
99
+ < option value = "false" > false</ option >
100
+ < option value = "true" > true</ option >
101
+ < option value = "1" > 1</ option >
102
+ < option value = "2" > 2</ option >
103
+ </ select >
104
+ </ Label >
105
+ < Label >
106
+ < span > Quotes:</ span >
107
+ < select
108
+ value = { quotes ?. toString ( ) }
109
+ onChange = { ( evn ) => setQuotes ( evn . target . value as JsonViewProps < object > [ 'quotes' ] ) }
110
+ >
111
+ < option value = "" > enable quotes</ option >
112
+ < option value = { `"` } > " double quotes</ option >
113
+ < option value = { `'` } > ' single quotes</ option >
114
+ </ select >
115
+ </ Label >
116
+ < Label >
117
+ < span > Indent:</ span >
118
+ < input type = "number" value = { indentWidth } onChange = { ( evn ) => setIndentWidth ( Number ( evn . target . value ) ) } />
119
+ </ Label >
120
+ < Label >
121
+ < span > Enable Clipboard:</ span >
122
+ < input type = "checkbox" checked = { clipboard } onChange = { ( evn ) => setClipboard ( evn . target . checked ) } />
123
+ </ Label >
124
+ < Label >
125
+ < span > Display Data Types:</ span >
126
+ < input type = "checkbox" checked = { displayDataTypes } onChange = { ( evn ) => setDisplayDataTypes ( evn . target . checked ) } />
127
+ </ Label >
128
+ < Label >
129
+ < span > Display Object Size:</ span >
130
+ < input
131
+ type = "checkbox"
132
+ checked = { displayObjectSize }
133
+ onChange = { ( evn ) => setDisplayObjectSize ( evn . target . checked ) }
134
+ />
135
+ </ Label >
136
+ </ Options >
113
137
</ Fragment >
114
138
) ;
115
139
}
0 commit comments