UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

95 lines 3.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); const react_apollo_1 = require("react-apollo"); const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag")); const common_1 = require("../common"); const mobx_react_1 = require("mobx-react"); const context_1 = require("../context"); const helpers_1 = require("../helpers"); function parseParameter(value, type) { switch (type) { case 'number': return parseFloat(value); case 'boolean': return value === 'true' ? true : false; } return value; } exports.parseParameter = parseParameter; function parseVariables(props, context) { const { owner, formElement: { props: { variables, boundVariables, onQuery } } } = props; let currentVariables = onQuery ? helpers_1.simpleHandle(props, onQuery, owner, context) : {}; if (variables) { for (let v of variables) { currentVariables[v.name] = parseParameter(v.value, v.type); } } if (boundVariables) { for (let v of boundVariables) { currentVariables[v.name] = owner.getValue(v.source); } } return currentVariables; } exports.parseVariables = parseVariables; exports.ApolloQuery = props => { const [error, setError] = React.useState(null); const context = React.useContext(context_1.Context); const { owner, formElement: { props: { query, loadingText, target, onError, onResult, propTarget } } } = props; if (!query) { return React.createElement("div", null, "Please specify the query"); } let parsedQuery; try { parsedQuery = graphql_tag_1.default([query]); } catch (ex) { return React.createElement("pre", null, "Query Error: ", ex.message); } let currentVariables = parseVariables(props, context); return (React.createElement(react_apollo_1.Query, { query: parsedQuery, variables: currentVariables, onCompleted: (data) => { if (target) { owner.setValue(target, data[Object.getOwnPropertyNames(data)[0]]); } if (onResult) { helpers_1.simpleHandle(props, onResult, context, data); } }, onError: (data) => { console.log(data); try { if (onError) { helpers_1.simpleHandle(props, onError, context, data); } if (error) { setError(null); } setError(data.message); } catch (ex) { setError(ex); } } }, ({ loading, error, data }) => { if (error) { return React.createElement("pre", null, "Query Error: ", JSON.stringify(error, null, 2)); } if (loading) return loadingText; if (error) return `Error! ${error.message}`; let dataProps = { ...props }; if (propTarget) { dataProps.dataProps = { [propTarget]: data[Object.getOwnPropertyNames(data)[0]] }; } return common_1.createComponents(dataProps); })); }; exports.ApolloQueryView = { Component: mobx_react_1.observer(exports.ApolloQuery) }; //# sourceMappingURL=apollo_query_view.js.map