37 lines
1.1 KiB
TypeScript
Executable file
37 lines
1.1 KiB
TypeScript
Executable file
import { Portfolio } from '../model/portfolio';
|
|
import { PageBackground } from './background/background';
|
|
import { PageHeader } from './about/about';
|
|
import { PageTimeline } from './timeline/timeline';
|
|
import { PageFooter } from './footer/footer';
|
|
import { PageImageViewer } from './image-viewer/image-viewer';
|
|
import { ContainerPage } from '../framework/container-page';
|
|
|
|
export const create = ({ header, timeline, footer }: Portfolio) => {
|
|
const pageHeader = new PageHeader(header);
|
|
const pageTimeline = new PageTimeline(timeline);
|
|
const pageFooter = new PageFooter(footer);
|
|
|
|
new ContainerPage(document.body.querySelector('#main'), [
|
|
new PageImageViewer(),
|
|
pageHeader,
|
|
pageTimeline,
|
|
pageFooter,
|
|
new PageBackground(pageHeader, [pageTimeline], pageFooter),
|
|
]).setAsMain();
|
|
|
|
addSupportForTabNavigation();
|
|
removeUnnecessaryOutlines();
|
|
};
|
|
|
|
const addSupportForTabNavigation = () =>
|
|
(document.onkeydown = e => {
|
|
if (e.key === ' ') {
|
|
(document.activeElement as HTMLElement)?.click();
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
|
|
const removeUnnecessaryOutlines = () =>
|
|
(document.onclick = e => {
|
|
(e.target as HTMLElement)?.blur();
|
|
});
|