| 
									
										
										
										
											2020-10-14 12:15:09 +02:00
										 |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement"; | 
					
						
							| 
									
										
										
										
											2021-06-17 13:17:16 +02:00
										 |  |  | import {Utils} from "../../Utils"; | 
					
						
							|  |  |  | import Combine from "../Base/Combine"; | 
					
						
							| 
									
										
										
										
											2020-06-24 00:35:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  | export class SlideShow extends BaseUIElement { | 
					
						
							| 
									
										
										
										
											2020-06-24 00:35:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-14 19:21:33 +02:00
										 |  |  |     private readonly embeddedElements: UIEventSource<BaseUIElement[]>; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constructor(embeddedElements: UIEventSource<BaseUIElement[]>) { | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  |         super() | 
					
						
							| 
									
										
										
										
											2021-06-17 13:17:16 +02:00
										 |  |  |         this.embeddedElements =embeddedElements; | 
					
						
							| 
									
										
										
										
											2021-06-18 01:25:13 +02:00
										 |  |  |         this.SetStyle("scroll-snap-type: x mandatory; overflow-x: scroll") | 
					
						
							|  |  |  |     }    | 
					
						
							| 
									
										
										
										
											2021-06-14 19:21:33 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     protected InnerConstructElement(): HTMLElement { | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  |         const el = document.createElement("div") | 
					
						
							| 
									
										
										
										
											2021-06-15 16:18:58 +02:00
										 |  |  |         el.style.minWidth = "min-content" | 
					
						
							|  |  |  |         el.style.display = "flex" | 
					
						
							| 
									
										
										
										
											2021-06-18 01:25:13 +02:00
										 |  |  |         el.style.justifyContent = "center" | 
					
						
							| 
									
										
										
										
											2021-06-14 19:21:33 +02:00
										 |  |  |         this.embeddedElements.addCallbackAndRun(elements => { | 
					
						
							| 
									
										
										
										
											2021-06-18 01:25:13 +02:00
										 |  |  |              | 
					
						
							|  |  |  |             if(elements.length > 1){ | 
					
						
							|  |  |  |                 el.style.justifyContent = "unset" | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |              | 
					
						
							| 
									
										
										
										
											2021-06-15 16:18:58 +02:00
										 |  |  |             while (el.firstChild) { | 
					
						
							|  |  |  |                 el.removeChild(el.lastChild) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-17 13:17:16 +02:00
										 |  |  |             elements = Utils.NoNull(elements).map(el => new Combine([el])  | 
					
						
							|  |  |  |                 .SetClass("block relative ml-1 bg-gray-200 m-1 rounded slideshow-item") | 
					
						
							| 
									
										
										
										
											2021-06-18 01:25:13 +02:00
										 |  |  |                 .SetStyle("min-width: 150px; width: max-content; height: var(--image-carousel-height);max-height: var(--image-carousel-height);scroll-snap-align: start;") | 
					
						
							| 
									
										
										
										
											2021-06-17 13:17:16 +02:00
										 |  |  |             ) | 
					
						
							|  |  |  |              | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  |             for (const element of elements ?? []) { | 
					
						
							| 
									
										
										
										
											2021-06-14 19:21:33 +02:00
										 |  |  |                 el.appendChild(element.ConstructElement()) | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-01-29 03:23:53 +01:00
										 |  |  |         }); | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-15 16:18:58 +02:00
										 |  |  |         const wrapper = document.createElement("div") | 
					
						
							|  |  |  |         wrapper.style.maxWidth = "100%" | 
					
						
							|  |  |  |         wrapper.style.overflowX = "auto" | 
					
						
							|  |  |  |         wrapper.appendChild(el) | 
					
						
							|  |  |  |         return wrapper; | 
					
						
							| 
									
										
										
										
											2021-01-29 03:23:53 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-13 03:29:44 +02:00
										 |  |  | } |