/* * Copyright (C) 2023 StApps * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ import {AfterContentInit, Component, Input, OnDestroy, ViewContainerRef} from '@angular/core'; import {SCThings} from '@openstapps/core'; /** * Shows a horizontal list of action chips */ @Component({ selector: 'stapps-section', templateUrl: 'section.component.html', styleUrls: ['section.component.scss'], }) export class SectionComponent implements AfterContentInit, OnDestroy { @Input() title = ''; @Input() item?: SCThings; mutationObserver: MutationObserver; swiper?: HTMLElement; constructor(readonly viewContainerRef: ViewContainerRef) {} ngAfterContentInit() { this.mutationObserver = new MutationObserver(() => { const simpleSwiper = this.viewContainerRef.element.nativeElement.querySelector('simple-swiper'); if (!simpleSwiper) return; this.swiper = simpleSwiper; }); this.mutationObserver.observe(this.viewContainerRef.element.nativeElement, { childList: true, subtree: true, }); } slideNext() { if (this.swiper) { this.swiper.scrollBy({ left: this.swiper.offsetWidth, behavior: 'smooth', }); } } slidePrev() { if (this.swiper) { this.swiper.scrollBy({ left: -this.swiper.offsetWidth, behavior: 'smooth', }); } } ngOnDestroy() { this.mutationObserver.disconnect(); } }