From 49515766aacc0add71ad060a3656cc67daf15664 Mon Sep 17 00:00:00 2001 From: Gui Seek Date: Wed, 14 Aug 2024 18:34:25 -0300 Subject: [PATCH] feat: melhora fluxo que adiciona patrocinadores --- src/app/app.ts | 7 ++++++- src/app/events/sponsor/index.ts | 5 +++-- src/app/events/sponsor/sponsor.added.ts | 16 ++++++++++++++++ src/app/events/sponsor/sponsor.created.ts | 9 +++++++-- src/app/interfaces/event-map.ts | 3 ++- src/config.ts | 4 ++-- 6 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 src/app/events/sponsor/sponsor.added.ts diff --git a/src/app/app.ts b/src/app/app.ts index b003396..96ca415 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -1,11 +1,15 @@ import {EventHandler, FormControl, LayerSchema, Schema} from '@interfaces' import {Form, Canvas, Sidenav, Accordion, DownloadButton} from '@elements' -import {onSponsorCreated, onSponsorSelected} from '@events/sponsor' import {PresentationForm} from '@components/presentation' import {ThemeToggle} from '@components/theme' import {onFormChange} from '@events' import {use} from '@websqnl/di' import {h} from '@utils' +import { + onSponsorAdded, + onSponsorCreated, + onSponsorSelected, +} from '@events/sponsor' import { onPresentationAdded, onPresentationCreated, @@ -74,6 +78,7 @@ export const loadApp = (container: HTMLElement) => { handler.on('sponsor.selected', onSponsorSelected) handler.on('sponsor.created', onSponsorCreated) + handler.on('sponsor.added', onSponsorAdded) control.sponsor.button.onclick = () => { control.sponsor.input.click() diff --git a/src/app/events/sponsor/index.ts b/src/app/events/sponsor/index.ts index 0b2fa1f..3373e59 100644 --- a/src/app/events/sponsor/index.ts +++ b/src/app/events/sponsor/index.ts @@ -1,2 +1,3 @@ -export * from './sponsor.created' -export * from './sponsor.selected' +export * from './sponsor.added'; +export * from './sponsor.created'; +export * from './sponsor.selected'; diff --git a/src/app/events/sponsor/sponsor.added.ts b/src/app/events/sponsor/sponsor.added.ts new file mode 100644 index 0000000..e473759 --- /dev/null +++ b/src/app/events/sponsor/sponsor.added.ts @@ -0,0 +1,16 @@ +import {LayerSchema} from '@interfaces/layer-schema' +import {FormControl} from '@interfaces/form-control' +import {use} from '@websqnl/di' + +export const onSponsorAdded = () => { + const control = use(FormControl) + const layer = use(LayerSchema) + + if (layer.sponsors.length < 2) { + control.sponsor.button.focus() + } else { + control.sponsor.button.disabled = true + const first = control.grid.firstElementChild?.firstElementChild ?? [] + if (first instanceof HTMLInputElement) first.focus() + } +} diff --git a/src/app/events/sponsor/sponsor.created.ts b/src/app/events/sponsor/sponsor.created.ts index ca680c8..ac2ee52 100644 --- a/src/app/events/sponsor/sponsor.created.ts +++ b/src/app/events/sponsor/sponsor.created.ts @@ -1,14 +1,19 @@ +import {EventHandler} from '@interfaces/event-handler' import {LayerSchema} from '@interfaces/layer-schema' import {ImageLayer} from '@models/image-layer' import {Canvas} from '@elements/canvas' import {use} from '@websqnl/di' export const onSponsorCreated = (sponsor: ImageLayer) => { - const layer = use(LayerSchema) const canvas = use(Canvas) + const layer = use(LayerSchema) + const handler = use(EventHandler) canvas.add(sponsor) layer.sponsors.push(sponsor) - sponsor.render().then(canvas.render) + sponsor.render().then(() => { + canvas.render() + handler.emit('sponsor.added', sponsor) + }) } diff --git a/src/app/interfaces/event-map.ts b/src/app/interfaces/event-map.ts index bb5fe91..d7105d2 100644 --- a/src/app/interfaces/event-map.ts +++ b/src/app/interfaces/event-map.ts @@ -4,8 +4,9 @@ import {ImageLayer} from '@models/image-layer' import {Schema} from './schema' export interface EventMap { - 'sponsor.created': ImageLayer 'sponsor.selected': File + 'sponsor.created': ImageLayer + 'sponsor.added': ImageLayer 'presentation.submitted': SubmittedPresentation 'presentation.handled': Presentation diff --git a/src/config.ts b/src/config.ts index 67c44d5..b4be52e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -202,8 +202,8 @@ export const formControl: FormControl = { } formControl.grid.add( - new SliderLabel('Quantidade', 'grid', config.grid.tile), - new CheckboxLabel('Mostrar', 'gridActive', 'true', config.grid.active) + new CheckboxLabel('Mostrar', 'gridActive', 'true', config.grid.active), + new SliderLabel('Quantidade', 'grid', config.grid.tile) ) formControl.logo.add(