import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation, } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { MatPaginator } from '@angular/material/paginator'; import { MatSort } from '@angular/material/sort'; import { Subject, takeUntil } from 'rxjs'; import { fuseAnimations } from '@fuse/animations'; import { FuseConfirmationService } from '@fuse/services/confirmation'; import { Popup } from '../models/popup'; import { PopupService } from '../services/popup.service'; @Component({ selector: 'popup-redit', templateUrl: './redit.component.html', styles: [ /* language=SCSS */ ` .inventory-grid { grid-template-columns: 48px auto 40px; @screen sm { grid-template-columns: 48px auto 112px 72px; } @screen md { grid-template-columns: 48px 112px auto 112px 72px; } @screen lg { grid-template-columns: 48px 112px auto 112px 96px 96px 72px; } } `, ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: fuseAnimations, }) export class ReditComponent implements OnInit, AfterViewInit, OnDestroy { @ViewChild(MatPaginator) private _paginator!: MatPaginator; @ViewChild(MatSort) private _sort!: MatSort; isLoading = false; searchInputControl = new FormControl(); popupForm!: FormGroup; editMode: boolean = false; categories = categories; popup: Popup | undefined; private _unsubscribeAll: Subject = new Subject(); /** * Constructor */ constructor( private _changeDetectorRef: ChangeDetectorRef, private _fuseConfirmationService: FuseConfirmationService, private _formBuilder: FormBuilder, private _route: ActivatedRoute, private _router: Router, private _popupService: PopupService ) {} // ----------------------------------------------------------------------------------------------------- // @ Lifecycle hooks // ----------------------------------------------------------------------------------------------------- /** * On init */ ngOnInit(): void { // Create the contact form this.popupForm = this._formBuilder.group({ id: [''], index: [''], title: [''], widthSize: [''], heightSize: [''], topMargin: [''], leftMargin: [''], site: [''], useOrNot: [''], content: [''], }); this._popupService.popup$ .pipe(takeUntil(this._unsubscribeAll)) .subscribe((popup: Popup | undefined) => { if (!popup) { return; } this.popup = popup; this.popupForm.patchValue(popup); // Mark for check this._changeDetectorRef.markForCheck(); }); } /** * After view init */ ngAfterViewInit(): void {} /** * On destroy */ ngOnDestroy(): void { // Unsubscribe from all subscriptions this._unsubscribeAll.next(null); this._unsubscribeAll.complete(); } // ----------------------------------------------------------------------------------------------------- // @ Public methods // ----------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------- // @ Private methods // ----------------------------------------------------------------------------------------------------- /** * Create product */ __createProduct(): void {} /** * Toggle product details * * @param productId */ __toggleDetails(productId: string): void {} /** * Toggle edit mode * * @param editMode */ toggleEditMode(editMode: boolean | null = null): void { if (editMode === null) { this.editMode = !this.editMode; } else { this.editMode = editMode; } // Mark for check this._changeDetectorRef.markForCheck(); } /** * Track by function for ngFor loops * * @param index * @param item */ __trackByFn(index: number, item: any): any { return item.id || index; } } export const categories = [ { id: 'b899ec30-b85a-40ab-bb1f-18a596d5c6de', parentId: null, name: 'test.com', slug: 'mens', }, { id: '07986d93-d4eb-4de1-9448-2538407f7254', parentId: null, name: 'kgon.com', slug: 'ladies', }, { id: 'ad12aa94-3863-47f8-acab-a638ef02a3e9', parentId: null, name: 'kkk.com', slug: 'unisex', }, ];