diff --git a/projects/ui/src/lib/popup/popup.component.scss b/projects/ui/src/lib/popup/popup.component.scss index 7018515..9ec70c7 100644 --- a/projects/ui/src/lib/popup/popup.component.scss +++ b/projects/ui/src/lib/popup/popup.component.scss @@ -58,6 +58,7 @@ justify-content: center; align-items: center; opacity: 0; + z-index: 100; &.shown { animation: showOverlay 0.2s ease 0s 1 forwards; diff --git a/src/app/components/main/sections/game-page/game-page.component.html b/src/app/components/main/sections/game-page/game-page.component.html index 2b7577c..2edbe48 100644 --- a/src/app/components/main/sections/game-page/game-page.component.html +++ b/src/app/components/main/sections/game-page/game-page.component.html @@ -1,12 +1,15 @@ - + + + +

😳🕶🤏

Church-key listicle whatever hoodie hexagon pour-over ascot paleo tacos, organic aesthetic tbh meggings raclette.

-
--> - +
@@ -41,10 +44,13 @@
- + + Play - + \ No newline at end of file diff --git a/src/app/components/main/sections/game-page/game-page.component.ts b/src/app/components/main/sections/game-page/game-page.component.ts index 29cdec3..b9bec65 100644 --- a/src/app/components/main/sections/game-page/game-page.component.ts +++ b/src/app/components/main/sections/game-page/game-page.component.ts @@ -1,12 +1,10 @@ -import { inject, OnDestroy, TemplateRef, ViewChild } from '@angular/core'; -import { Component, OnInit } from '@angular/core'; -import { NavigationEnd, Router } from '@angular/router'; -import { PopupConfiguration } from 'projects/ui/src/lib/popup/popup.class'; -import { PopupDirective } from 'projects/ui/src/lib/popup/popup.directive'; -import { PopupService } from 'projects/ui/src/lib/popup/popup.service'; -import { first, Subscription } from 'rxjs'; -import { Game } from 'src/app/interfaces/game.interface'; -import { UiService } from 'src/app/services/ui.service'; +import { Component, inject, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core' +import { NavigationEnd, Router } from '@angular/router' +import { PopupDirective } from 'projects/ui/src/lib/popup/popup.directive' +import { PopupService } from 'projects/ui/src/lib/popup/popup.service' +import { Subscription } from 'rxjs' +import { Game } from 'src/app/interfaces/game.interface' +import { UiService } from 'src/app/services/ui.service' @Component({ selector: 'app-game-page', @@ -14,7 +12,10 @@ import { UiService } from 'src/app/services/ui.service'; styleUrls: ['./game-page.component.scss'], }) export class GamePageComponent implements OnInit, OnDestroy { - // @ViewChild(PopupDirective, { static: true }) popupPortal!: PopupDirective; + // File: name.component.ts + // 3. Получить в классе компонента элемент с директивой (портал из 1 пункта) + @ViewChild(PopupDirective, { static: true }) popupPortal!: PopupDirective; + uiService = inject(UiService) subs: Map = new Map(); game: Game = { @@ -40,8 +41,11 @@ export class GamePageComponent implements OnInit, OnDestroy { ] constructor( - private router: Router - ) {} // private popup: PopupService + private router: Router, + + // 4. Импортировать сервис для попап окон + private popup: PopupService + ) {} ngOnInit(): void { this.observeNavigation() @@ -64,39 +68,24 @@ export class GamePageComponent implements OnInit, OnDestroy { return this.tempImages[Math.floor(0 + Math.random() * ((this.tempImages.length - 1) + 1 - 0))] } - // openPopup(template?: TemplateRef) { - // this.subs.set( - // 'popup-events', - // this.popup - // .open(this.popupPortal, undefined, { - // header: { closable: false, title: 'Warning' }, - // actions: [ - // { - // title: 'I understand, delete file', - // event: 'delete', - // appearance: 'primary', - // }, - // { - // title: 'Do not delete', - // event: 'cancel', - // appearance: 'outline', - // }, - // // { - // // title: 'Primary button', - // // event: 'button-2', - // // appearance: 'primary', - // // }, - // ], - // overlay: { - // closable: true, - // // background: 'rgba(255, 255, 255, 1)', - // }, - // body: 'Humblebrag chillwave sriracha, ramps polaroid distillery edison bulb palo santo etsy sus pabst knausgaard typewriter dreamcatcher.', - // theme: 'dark', - // }) - // .subscribe((event) => { - // console.log(`event: ${event}`); - // }) - // ); - // } + // 5. Написать метод для вызова попап окна, куда аргументом передается + // шаблон тела окна (из пункта 2) + openPopup(template?: TemplateRef) { + // Здесь мы подписываемся на ивента попап окна и сохраняем подписку, чтобы потом + // при дестрое компонента можно было от них отписаться + this.subs.set( + 'popup-events', + // при вызове передается: + // 1. popupPortal - портал для спавна оверлея с окном (пункт 1 в html, пункт 3 в ts), + // 2. template - шаблон тела окна, если он есть + // 3. объект с настройками окна (необязательный параметр), где можно кастомизировать внешний вид + // типа PopupConfig (\projects\ui\src\lib\popup\popup.class.ts) + this.popup + .open(this.popupPortal, template, {}) + .subscribe((event) => { + // здесь описываются обработчики по нажатию на кнопки действий в попап окне + console.log(`event: ${event}`); + }) + ); + } }