@@ -31,7 +31,26 @@ export class Block {
3131 this . element . innerHTML = `
3232 <div class="row">
3333 <div class="handle" data-swapy-handle><i>drag_indicator</i></div>
34- <nav class="max toolbar round fill">
34+ <h6 class="max" id="${ id } -title">Block</h6>
35+ <button id="${ id } -duplicate" class="chip square">
36+ <i>content_copy</i>
37+ <div class="tooltip">
38+ Duplicate
39+ </div>
40+ </button>
41+ <button class="circle error chip" id="${ id } -delete">
42+ <i>delete</i>
43+ </button>
44+ <label class="checkbox icon">
45+ <input type="checkbox" id="${ id } -hidden">
46+ <span>
47+ <i>expand_less</i>
48+ <i>expand_more</i>
49+ </span>
50+ </label>
51+ </div>
52+ <div id="${ id } -content" class="block-content">
53+ <nav class="margin max toolbar round fill">
3554 <a class="active" data-ui="#${ id } -question">
3655 <i>help</i>
3756 <span class="l">Question</span>
@@ -53,12 +72,6 @@ export class Block {
5372 <span class="l">Page Break</span>
5473 </a>
5574 </nav>
56- <button class="circle error" id="${ id } -delete">
57- <i>delete</i>
58- </button>
59- </div>
60-
61- <div class="block-content">
6275 <div class="page padding active" id="${ id } -question">
6376 <div class="prefix field label border round">
6477 <i>star</i>
@@ -89,7 +102,7 @@ export class Block {
89102 <label>Header</label>
90103 <i>arrow_drop_down</i>
91104 </div>
92- <div class="field label border round no-margin ">
105+ <div class="field label border round">
93106 <input type="text" id="${ id } -title">
94107 <label>Title</label>
95108 </div>
@@ -130,9 +143,30 @@ export class Block {
130143 } ) ;
131144 }
132145
146+ setHidden ( state : boolean ) {
147+ const content = this . element . querySelector ( `#${ this . id } -content` ) as HTMLElement ;
148+
149+ // Update the block's hidden property
150+ ( this as any ) . hidden = state ;
151+
152+ if ( state ) {
153+ this . element . classList . add ( "block-collapsed" ) ;
154+ } else {
155+ this . element . classList . remove ( "block-collapsed" ) ;
156+ }
157+ }
158+
133159 mount ( ) {
134160 const id = this . id ;
135161
162+ const hiddenCheckbox = this . element . querySelector ( `#${ id } -hidden` ) as HTMLInputElement ;
163+ hiddenCheckbox . addEventListener ( "change" , ( ) => {
164+ this . setHidden ( hiddenCheckbox . checked ) ;
165+ } ) ;
166+
167+ // Restore UI on mount
168+ this . setHidden ( hiddenCheckbox . checked ) ;
169+
136170 const questionEl = this . element . querySelector ( `#${ id } -question-container` ) as HTMLElement ;
137171 const answerEl = this . element . querySelector ( `#${ id } -answer-container` ) as HTMLElement ;
138172 const notesEl = this . element . querySelector ( `#${ id } -notes-container` ) as HTMLElement ;
0 commit comments