import { ComponentOptionsType, ExcelComponent } from 'core/ExcelComponent'; import * as actions from 'redux/action-creators'; import { $, Dom } from 'core/Dom'; import { ActiveRoute } from 'core/routes/ActiveRoute'; import { deleteTable } from 'redux/action-creators'; export class Header extends ExcelComponent { static className = 'excel__header'; constructor($root: Dom, options: ComponentOptionsType) { super($root, { ...options, name: 'Header', eventListeners: ['input', 'click'], subscribe: ['title'], }); } toHTML(): string { const { title } = this.store.getState(); return `
delete
exit_to_app
`; } onInput(event: InputEvent) { const $target = $(event.target as HTMLInputElement); this.dispatchToStore(actions.changeTitle($target.text)); } onClick(event: MouseEvent) { const target = event.target as HTMLElement; if (!target) return; const $btn = $(target).closest('[data-button]'); if (!$btn.$el) return; const btnEvent = $btn?.data?.button; switch (btnEvent) { case 'exit': { ActiveRoute.navigateTo = ''; break; } case 'delete-table': { confirm('Действительно хочешь удалить ?') && this.dispatchToStore(deleteTable(this.store.getState().id)); break; } default: break; } } }