@@ -46,9 +46,15 @@ pub fn init_toolbar(
46
46
let clear = create_clear_element ( & document, canvas, state) ?;
47
47
toolbar. append_child ( & clear) ?;
48
48
49
+ let preview_toolbar = document. get_element_by_id ( "preview-toolbar" ) . unwrap ( ) ;
50
+
49
51
// add preview
50
52
let preview_image_list = create_preview_image_element ( & document, canvas, preview, state) ?;
51
- toolbar. append_child ( & preview_image_list) ?;
53
+ preview_toolbar. append_child ( & preview_image_list) ?;
54
+
55
+ // clear all preview list
56
+ let preview_clear = create_preview_clear_element ( & document, & preview, state) ?;
57
+ preview_toolbar. append_child ( & preview_clear) ?;
52
58
53
59
Ok ( ( ) )
54
60
}
@@ -220,10 +226,9 @@ fn create_clear_element(
220
226
state : & Rc < RefCell < State > > ,
221
227
) -> Result < Element , JsValue > {
222
228
let element = document. create_element ( "div" ) ?;
223
- element. set_inner_html ( "Clear" ) ;
224
229
element. set_attribute (
225
230
"style" ,
226
- "height: 50px; width: 50px; display: flex; align-items: center; justify-content: center; font-size: 11px; border: 1px solid #9b9b9b;" ,
231
+ "height: 50px; width: 50px; display: flex; align-items: center; justify-content: center; font-size: 11px; border: 1px solid #9b9b9b; background-image:url(https://image.flaticon.com/icons/svg/35/35480.svg); background-size: 100%; " ,
227
232
) ?;
228
233
229
234
let context = canvas
@@ -266,7 +271,7 @@ fn create_preview_image_element(
266
271
let element = document. create_element ( "div" ) ?;
267
272
element. set_attribute (
268
273
"style" ,
269
- "height: 50px; width: 50px; display: flex; align-items: center; justify-content: center; font-size: 11px; border: 1px solid #9b9b9b; background-image:url(https://image.flaticon.com/icons/svg/1562/1562881.svg); background-size: 100%;" ,
274
+ "height: 50px; width: 50px; display: flex; align-items: center; justify-content: center; background-image:url(https://image.flaticon.com/icons/svg/1562/1562881.svg); background-size: 100%;" ,
270
275
) ?;
271
276
272
277
let canvas = canvas. clone ( ) ;
@@ -296,3 +301,39 @@ fn create_preview_image_element(
296
301
297
302
Ok ( element)
298
303
}
304
+
305
+ fn create_preview_clear_element (
306
+ document : & Document ,
307
+ preview : & Element ,
308
+ state : & Rc < RefCell < State > > ,
309
+ ) -> Result < Element , JsValue > {
310
+ let element = document. create_element ( "div" ) ?;
311
+ element. set_attribute (
312
+ "style" ,
313
+ "height: 50px; width: 50px; margin-left: 1em; display: flex; align-items: center; justify-content: center; background-image:url(https://image.flaticon.com/icons/svg/1276/1276490.svg); background-size: 100%;" ,
314
+ ) ?;
315
+
316
+ let state = state. clone ( ) ;
317
+ let preview = preview. clone ( ) ;
318
+
319
+ let handle_click = Closure :: wrap ( Box :: new ( move || {
320
+ let mut child_has = true ;
321
+ while child_has {
322
+ let mut i = preview. child_nodes ( ) . length ( ) - 1 ;
323
+ match preview. child_nodes ( ) . item ( i) {
324
+ Some ( v) => {
325
+ preview. remove_child ( & v) . unwrap ( ) ;
326
+ }
327
+ None => {
328
+ child_has = false ;
329
+ }
330
+ }
331
+ i -= 1 ;
332
+ }
333
+ state. borrow_mut ( ) . delete_all_images ( ) ;
334
+ } ) as Box < dyn FnMut ( ) > ) ;
335
+ element. add_event_listener_with_callback ( "click" , handle_click. as_ref ( ) . unchecked_ref ( ) ) ?;
336
+ handle_click. forget ( ) ;
337
+
338
+ Ok ( element)
339
+ }
0 commit comments