UNPKG

@availity/native-form

Version:

Submit JSON data via a native form, not AJAX. Useful when you need to open a new page with a POST action.

120 lines (116 loc) 4.08 kB
var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/index.js import { avWebQLApi } from "@availity/api-axios"; // src/flattenObject.js var parseValue = (value) => value === void 0 || value === null ? value : value.toString(); var flattenObject = (ob) => Object.keys(ob).reduce((toReturn, k) => { if (Object.prototype.toString.call(ob[k]) === "[object Date]") { toReturn[k] = ob[k].toJSON(); } else if (ob[k] && typeof ob[k] === "object") { const flatObject = flattenObject(ob[k]); const isArray = Array.isArray(ob[k]); for (const k2 of Object.keys(flatObject)) { toReturn[`${k}${isArray ? k2.replace(/^(\d+)(\..*)?/, "[$1]$2") : `.${k2}`}`] = parseValue(flatObject[k2]); } } else { toReturn[k] = parseValue(ob[k]); } return toReturn; }, {}); var flattenObject_default = flattenObject; // src/index.js var ssoTypeQuery = ` query ssoTypeFindById($id: ID!){ configurationFindOne(id: $id){ ...on Saml{ type } ...on OpenId{ type } } } `; var nativeForm = (_0, ..._1) => __async(void 0, [_0, ..._1], function* (spaceId, params = {}, formAttributes = {}, type, clientId = "clientId") { var _a, _b, _c; if (!spaceId) throw new Error("spaceId is required and was not provided"); let typeLower = type == null ? void 0 : type.toLowerCase(); if (typeLower !== "saml" && typeLower !== "openid") { try { const { data } = yield avWebQLApi.create( { query: ssoTypeQuery, variables: { id: spaceId }, operationName: "ssoTypeFindById" }, { headers: { "X-Client-ID": clientId } } ); typeLower = (_c = (_b = (_a = data == null ? void 0 : data.data) == null ? void 0 : _a.configurationFindOne) == null ? void 0 : _b.type) == null ? void 0 : _c.toLowerCase(); } catch (error) { if (error.response) { throw new Error("The server responded with an error"); } else if (error.request) { throw new Error("No response received"); } else { throw new Error("An error occurred while setting up request, check your configurations"); } } } const mergedOptions = __spreadValues({ method: "post", action: `/ms/api/availity/internal/spc/magneto/sso/v1/${typeLower}/${spaceId}`, target: "_blank" }, formAttributes); const form = document.createElement("form"); for (const key of Object.keys(mergedOptions)) { form.setAttribute(key, mergedOptions[key]); } const flat = flattenObject_default(params); const fields = Object.keys(flat).map((key) => { const name = key.replaceAll(/\[\d+]/g, "[]"); const value = flat[key]; return `<input type="hidden" name="${name}" value="${value}" />`; }).join(""); form.insertAdjacentHTML("beforeend", fields); document.body.appendChild(form); form.submit(); }); var index_default = nativeForm; export { index_default as default };