@curveball/browser
Version:
Automatic API browser generator. A middleware that turns your JSON responses into HTML if accessed by a browser.
33 lines • 1.56 kB
JavaScript
import * as React from 'react';
import { Button } from './button.js';
import { getFieldsFromTemplatedUri } from '../../util.js';
export function TemplatedLinks(props) {
const result = [];
for (const link of props.resourceState.links.getAll()) {
if (props.options.hiddenRels.includes(link.rel) || link.rel in props.options.navigationLinks) {
continue;
}
// We're only interested in templated links
if (!link.templated) {
continue;
}
const fieldData = getFieldsFromTemplatedUri(link.href);
if (!fieldData) {
// Unparsable
continue;
}
const [target, hiddenFields, fields] = fieldData;
const title = link.title || link.rel;
result.push(React.createElement("form", { method: "GET", action: target, className: "long-form" },
React.createElement("h3", { key: "h3" }, title),
Object.entries(hiddenFields).map(([field, value]) => React.createElement("input", { type: "hidden", name: field, value: value, key: field + '-' + value })),
fields.map(field => React.createElement(React.Fragment, { key: field + '-' + field },
React.createElement("label", null, field),
React.createElement("input", { type: "text", name: field }))),
React.createElement("div", { className: "buttonRow" },
React.createElement(Button, { method: "GET" }))));
link.rendered = true;
}
return result;
}
//# sourceMappingURL=templated-links.js.map