Merged 2.0.0-m3

This commit is contained in:
Philipp Czora
2018-10-19 08:44:03 +02:00
27 changed files with 1002 additions and 229 deletions

View File

@@ -1,6 +1,6 @@
//@flow
import React from "react";
import { withContextPath } from "./urls";
import {withContextPath} from "./urls";
type Props = {
src: string,
@@ -9,9 +9,18 @@ type Props = {
};
class Image extends React.Component<Props> {
createImageSrc = () => {
const { src } = this.props;
if (src.startsWith("http")) {
return src;
}
return withContextPath(src);
};
render() {
const { src, alt, className } = this.props;
return <img className={className} src={withContextPath(src)} alt={alt} />;
const { alt, className } = this.props;
return <img className={className} src={this.createImageSrc()} alt={alt} />;
}
}

View File

@@ -1,6 +1,6 @@
//@flow
import * as React from "react";
import { Route, Link } from "react-router-dom";
import {Link, Route} from "react-router-dom";
// TODO mostly copy of PrimaryNavigationLink

View File

@@ -5,6 +5,21 @@ export function withContextPath(path: string) {
return contextPath + path;
}
export function withEndingSlash(url: string) {
if (url.endsWith("/")) {
return url;
}
return url + "/";
}
export function concat(base: string, ...parts: string[]) {
let url = base;
for ( let p of parts) {
url = withEndingSlash(url) + p;
}
return url;
}
export function getPageFromMatch(match: any) {
let page = parseInt(match.params.page, 10);
if (isNaN(page) || !page) {

View File

@@ -1,5 +1,27 @@
// @flow
import { getPageFromMatch } from "./urls";
import {concat, getPageFromMatch, withEndingSlash} from "./urls";
describe("tests for withEndingSlash", () => {
it("should append missing slash", () => {
expect(withEndingSlash("abc")).toBe("abc/");
});
it("should not append a second slash", () => {
expect(withEndingSlash("abc/")).toBe("abc/");
});
});
describe("concat tests", () => {
it("should concat the parts to a single url", () => {
expect(concat("a")).toBe("a");
expect(concat("a", "b")).toBe("a/b");
expect(concat("a", "b", "c")).toBe("a/b/c");
});
});
describe("tests for getPageFromMatch", () => {
function createMatch(page: string) {