This commit is contained in:
Schmelczer András 2020-01-02 15:46:31 +01:00
commit 3bed56ed4b
13 changed files with 24 additions and 27 deletions

3
.idea/workspace.xml generated
View file

@ -15,9 +15,6 @@
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="FavoritesManager">
<favorites_list name="CompiledCV" />
</component>
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES"> <option name="RECENT_TEMPLATES">
<list> <list>

View file

@ -28,10 +28,7 @@
} }
}, },
"browserslist": [ "browserslist": [
"last 2 version", "defaults"
"not dead",
"iOS >= 9",
"> 0.2%"
], ],
"homepage": "https://github.com/schmelczerandras/timeline#readme", "homepage": "https://github.com/schmelczerandras/timeline#readme",
"devDependencies": { "devDependencies": {
@ -39,6 +36,7 @@
"clean-webpack-plugin": "^3.0.0", "clean-webpack-plugin": "^3.0.0",
"css-loader": "^3.4.0", "css-loader": "^3.4.0",
"file-loader": "^5.0.2", "file-loader": "^5.0.2",
"html-webpack-inline-source-plugin": "0.0.10",
"html-webpack-plugin": "^3.2.0", "html-webpack-plugin": "^3.2.0",
"image-webpack-loader": "^6.0.0", "image-webpack-loader": "^6.0.0",
"mini-css-extract-plugin": "^0.9.0", "mini-css-extract-plugin": "^0.9.0",
@ -57,6 +55,7 @@
"typescript": "^3.7.3", "typescript": "^3.7.3",
"webpack": "^4.41.4", "webpack": "^4.41.4",
"webpack-cli": "^3.3.10", "webpack-cli": "^3.3.10",
"webpack-dev-server": "^3.10.1" "webpack-dev-server": "^3.10.1",
"workbox-webpack-plugin": "^4.3.1"
} }
} }

View file

@ -16,7 +16,10 @@ export class Page extends PageElement {
); );
} }
rootElement.append(...children.map(e => e.getElement()).filter(e => e)); children
.map(e => e.getElement())
.filter(e => e)
.forEach(e => rootElement.appendChild(e));
if (isRootPage) { if (isRootPage) {
this.broadcastEvent({ type: PageEventType.onLoad }, this); this.broadcastEvent({ type: PageEventType.onLoad }, this);

View file

@ -11,7 +11,7 @@
<meta property="og:image" content="https://schmelczer.dev/og-image.jpg"> <meta property="og:image" content="https://schmelczer.dev/og-image.jpg">
<meta name="description" content="You can view my projects on a timeline."> <meta name="description" content="You can view my projects on a timeline.">
<meta name="viewport" content="width=device-width,initial-scale=1" /> <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover" />
<meta name="theme-color" content="#AA4465" /> <meta name="theme-color" content="#AA4465" />
<title>Portfolio - András Schmelczer</title> <title>Portfolio - András Schmelczer</title>

View file

@ -1,10 +1,10 @@
import { ResponsiveImage, url } from "./misc"; import { ResponsiveImage, url } from "./misc";
interface Anchor { export type Anchor = {
type: "a"; type: "a";
href: url; href: url;
text: string; text: string;
} };
export type Video = { export type Video = {
type: "video"; type: "video";

View file

@ -1,5 +1,5 @@
import { url } from "./misc"; import { url } from "./misc";
import { Content, Image, Video } from "./content"; import { Anchor, Content, Image, Video } from "./content";
export interface Portfolio { export interface Portfolio {
config: Config; config: Config;
@ -25,7 +25,7 @@ export interface TimelineElement {
figure: Image | Video; figure: Image | Video;
description: string; description: string;
more?: Content; more?: Content;
link?: url; link?: Anchor;
} }
export interface Footer { export interface Footer {

View file

@ -33,7 +33,6 @@ export class PageBackground extends PageElement {
protected handleEvent(event: PageEvent, parent: PageElement) { protected handleEvent(event: PageEvent, parent: PageElement) {
if (event.type === PageEventType.onLoad) { if (event.type === PageEventType.onLoad) {
this.bindListeners(parent); this.bindListeners(parent);
this.resize(parent);
} else if (event.type === PageEventType.onBodyDimensionsChanged) { } else if (event.type === PageEventType.onBodyDimensionsChanged) {
this.resize(parent, event.data?.deltaHeight); this.resize(parent, event.data?.deltaHeight);
} }

View file

@ -43,7 +43,7 @@ footer#page-footer {
h6 { h6 {
@include insignificant-font(); @include insignificant-font();
opacity: 0.6; opacity: 0.75;
} }
} }
} }

View file

@ -28,12 +28,7 @@ export const generate = (
` `
: "" : ""
} }
${ ${link ? PageContent.parseTypedContent(link) : ""}
link
? `
<a href="${link}" target="_blank">${link}</a>`
: ""
}
</div> </div>
</section> </section>
`; `;

View file

@ -14,7 +14,7 @@ export class PageTimeline extends PageElement {
const elements = timeline.map( const elements = timeline.map(
e => new PageTimelineElement(e, showMore, showLess) e => new PageTimelineElement(e, showMore, showLess)
); );
root.append(...elements.map(e => e.getElement())); elements.map(e => e.getElement()).forEach(e => root.appendChild(e));
super(elements); super(elements);
this.setElement(root); this.setElement(root);
} }

View file

@ -177,7 +177,7 @@ export const portfolio: Portfolio = {
alt: `a picture of the website` alt: `a picture of the website`
}, },
description: `A simple web page where you can view my photos.`, description: `A simple web page where you can view my photos.`,
link: `schmelczer.dev/photos` link: { type: `a`, href: `photos`, text: `schmelczer.dev/photos` }
}, },
{ {
date: `2016 spring`, date: `2016 spring`,
@ -203,7 +203,7 @@ export const portfolio: Portfolio = {
footer: { footer: {
title: `Learn more`, title: `Learn more`,
cv, cv,
email: `andras@schmelczer.dev`, email: `schmelczerandras@gmail.com`,
cvName: `Curriculum vitae`, cvName: `Curriculum vitae`,
lastEditName: `Last modified on `, lastEditName: `Last modified on `,
lastEdit: new Date(2019, 11, 29) // months are 0 indexed lastEdit: new Date(2019, 11, 29) // months are 0 indexed

View file

@ -27,6 +27,8 @@ html {
body { body {
@include main-font(); @include main-font();
height: 100%; height: 100%;
padding: env(safe-area-inset-top, 20px) env(safe-area-inset-right, 20px)
env(safe-area-inset-bottom, 20px) env(safe-area-inset-left, 20px);
& > main { & > main {
height: 100%; height: 100%;

View file

@ -4,6 +4,7 @@ const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const TerserJSPlugin = require("terser-webpack-plugin"); const TerserJSPlugin = require("terser-webpack-plugin");
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin"); const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackInlineSourcePlugin = require("html-webpack-inline-source-plugin");
const isProduction = process.env.NODE_ENV === "production"; const isProduction = process.env.NODE_ENV === "production";
@ -20,11 +21,12 @@ module.exports = {
plugins: [ plugins: [
new CleanWebpackPlugin(), new CleanWebpackPlugin(),
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
hash: true,
xhtml: true, xhtml: true,
minify: true, minify: true,
template: "./src/index.html" template: "./src/index.html",
inlineSource: ".(js|css)$"
}), }),
new HtmlWebpackInlineSourcePlugin(),
new MiniCssExtractPlugin({ new MiniCssExtractPlugin({
filename: "[name].[contenthash].css", filename: "[name].[contenthash].css",
chunkFilename: "[id].[contenthash].css" chunkFilename: "[id].[contenthash].css"