Aktuální verze knihovny, kompatibilní s novou aplikací app.foxentry.com.
Foxentry Javascript API v2 umožňuje ovládat validaci namapovaných inputů přímo z Javascriptu. Knihovna je určená pro novou aplikaci Foxentry a pracuje nad inputy, které jsou nakonfigurované a namapované v rámci vašeho projektu.
Pro použití Javascript API v2 je potřeba mít vytvořený Foxentry projekt v aplikaci app.foxentry.com a mít na webu vložený integrační javascript knihovny.
Ve verzi v2 je také dostupná globální funkce onFoxentryProjectLoad. Pokud ji deklarujete ve svém kódu, knihovna ji po svém načtení automaticky zavolá.
function onFoxentryProjectLoad() {
console.warn("Foxentry v2 je načtené");
}Metoda isReady() indikuje, zda je knihovna plně načtená a připravená k použití. Tuto metodu doporučujeme použít před spuštěním validace nebo před čtením stavů validace.
var ready = Foxentry.isReady();
console.warn(ready);true nebo false
Metoda validate() provede validaci nad všemi namapovanými inputy uvnitř zadaného rodiče. Pokud rodiče nepředáte, validace proběhne nad všemi namapovanými inputy.
Parametry
parent- nepovinný rodičovský element nebo selector typuHtmlElementOrSelector
await Foxentry.validate();var form = document.querySelector("#orderForm");
await Foxentry.validate(form);Foxentry.validate("#orderForm").then(function () {
console.warn("Validace dokončena");
});Metoda getValidationStatus() vrací aktuální stav validací namapovaných inputů. Pokud je předán parametr parent, vrací pouze stav inputů uvnitř daného rodiče. Pokud parametr nepředáte, vrací stav všech namapovaných inputů.
Parametry
parent- nepovinný rodičovský element nebo selector typuHtmlElementOrSelector
var status = Foxentry.getValidationStatus();
console.warn(status);var status = Foxentry.getValidationStatus("#orderForm");
console.warn(status.isValid);
console.warn(status.inputs);export interface InputValidationInfo {
type: string;
isValid: boolean;
isLoading: boolean;
mark: 'valid' | 'invalid' | 'alert' | null;
message: string | null;
ref: HTMLElement;
}
export interface InputsValidationStatus {
inputs: InputValidationInfo[];
isValid: boolean;
isLoading: boolean;
}inputs- seznam všech namapovaných inputů v daném rozsahu a jejich aktuálních validačních stavůisValid- informace, zda jsou všechny zahrnuté inputy aktuálně validníisLoading- informace, zda u některého ze zahrnutých inputů právě probíhá validace
type- namapovaný typ inputuisValid- informace, zda je konkrétní input aktuálně vyhodnocen jako validníisLoading- informace, zda u konkrétního inputu právě probíhá validacemark- stav inputu; může nabývat hodnotvalid,invalid,alertnebonull, pokud není nastavena žádná značkamessage- validační zpráva pro daný input; pokud není k dispozici, vracínullref- reference na konkrétní DOM element inputu
{
"inputs": [
{
"type": "street",
"isValid": true,
"isLoading": false,
"mark": "valid",
"message": null,
"ref": "HTMLElement"
},
{
"type": "streetWithNumber",
"isValid": false,
"isLoading": false,
"mark": "invalid",
"message": "Zadaná hodnota není validní",
"ref": "HTMLElement"
}
],
"isValid": false,
"isLoading": false
}Metody validate() a getValidationStatus() mohou přijímat nepovinný parametr parent, který omezuje zpracování pouze na namapované inputy uvnitř zadaného rodiče.
type HtmlElementOrSelector = HTMLElement | JQuery | string | nullPředat je možné:
HTMLElement- konkrétní DOM element, například formulář nebo kontejnerJQuery- jQuery objekt obsahující rodičovský elementstring- CSS selector, podle kterého se rodičovský element dohledánull- prázdná hodnota; prakticky stejné použití, jako když parametr nepředáte
Pokud parametr parent nepředáte, budou zpracovány všechny namapované inputy na stránce.
var formElement = document.querySelector("#orderForm");
var jqueryForm = $("#orderForm");
var selector = "#orderForm";
var emptyParent = null;Metoda setCallbacks() slouží k nastavení callback funkcí pro jednotlivé typy validátorů. Callback je zavolán po proběhnutí validace daného validátoru a umožňuje dále pracovat s výsledkem validace v Javascriptu.
Callbacky můžete nastavit přímo, nebo uvnitř onFoxentryProjectLoad(), kterou knihovna ve v2 po načtení automaticky vyvolá.
export type FoxentryCallback = (input: HTMLElement, validation: ValidationCallbackValidationArgument) => unknown;
export type FoxentryCallbacksType = {
[validatorType in ValidatorTypes]: FoxentryCallback;
};
export interface ValidationCallbackValidationArgument {
group: GroupValidationInfo;
response: ApiResponse;
}
export interface GroupValidationInfo {
isValid: boolean;
isLoading: boolean;
validatorType: ValidatorTypes;
inputs: Array<InputValidationInfo>;
}První argument callbacku input obsahuje referenci na input, nad kterým validace proběhla. Druhý argument validation obsahuje objekt typu ValidationCallbackValidationArgument, ve kterém je okamžitý stav inputů dostupný v atributu group a odpověď z API v atributu response.
Formát ApiResponse v této dokumentaci dále nepopisujeme. Najdete ho na webu foxentry.dev v dokumentaci API verze 2.1.
group- detail validační skupiny, do které patří právě validovaný input; reprezentuje okamžitý stav inputů ve formuláři ve zpracovatelné podoběresponse- odpověď z API; její formát je popsán na foxentry.dev v dokumentaci API verze 2.1
isValid- informace, zda je skupina inputů aktuálně vyhodnocena jako validníisLoading- informace, zda u skupiny inputů právě probíhá validacevalidatorType- typ validátoru, ke kterému callback patříinputs- seznam inputů zahrnutých do dané validační skupiny, včetně jejich aktuálního stavu
Knihovna podporuje tyto typy validátorů:
emailphonecompanynamelocation
function onFoxentryProjectLoad() {
function emailCallback(input, validation) {
console.warn("Email input:", input);
console.warn("Výsledek validace skupiny:", validation.group);
console.warn("API odpověď:", validation.response);
}
function phoneCallback(input, validation) {
console.warn("Telefonní input:", input);
console.warn("Typ validátoru:", validation.group.validatorType);
console.warn("Validované inputy:", validation.group.inputs);
console.warn("API odpověď:", validation.response);
}
Foxentry.setCallbacks({
email: emailCallback,
phone: phoneCallback,
company: function (input, validation) {
console.warn("Company:", input, validation);
},
name: function (input, validation) {
console.warn("Name:", input, validation);
},
location: function (input, validation) {
console.warn("Location:", input, validation);
}
});
}Tato sekce popisuje nejdůležitější rozdíly při migraci z v1 na v2. Největší změny se týkají práce s callbacky.
Ve v1 se callbacky typicky nastavovaly přes FoxentryBuilder.setCallbacks(...) uvnitř onFoxentryProjectLoad().
Ve v2 zůstává onFoxentryProjectLoad() dostupná, ale callbacky je potřeba registrovat přes Foxentry.setCallbacks(...).
function onFoxentryProjectLoad() {
FoxentryBuilder.setCallbacks({
address: function (data, validatorInfo) {
console.warn(data);
console.warn(validatorInfo);
}
});
}function onFoxentryProjectLoad() {
Foxentry.setCallbacks({
location: function (input, validation) {
console.warn(input);
console.warn(validation.group);
},
company: function (input, validation) {},
email: function (input, validation) {},
name: function (input, validation) {},
phone: function (input, validation) {}
});
}Ve v1 callback také přijímal dva argumenty (data, validatorInfo).
Ve v2 callback nadále používá dva argumenty, ale oba mají nový formát:
(input: HTMLElement, validation: ValidationCallbackValidationArgument) => unknowninput- první argument je nyní přímo DOM element (HTMLElement) validovaného inputu (ve v1 byl první argumentdata)validation.group- druhý argument nyní obsahuje atributgroup, který reprezentuje okamžitý stav inputů ve formuláři ve zpracovatelné podoběvalidation.response- druhý argument nově obsahuje také atributresponse, který reprezentuje odpověď z API; její formát najdete na foxentry.dev v dokumentaci API verze 2.1
Názvy argumentů si můžete ponechat i původní (data, validatorInfo). Důležité je upravit práci s jejich obsahem podle formátu v2.
Pokud ve v1 používáte callback pro adresu (address), ve v2 je potřeba použít klíč location.
FoxentryBuilder.setCallbacks({
address: function (data, validatorInfo) {
console.warn(data);
console.warn(validatorInfo);
}
});Foxentry.setCallbacks({
location: function (input, validation) {
console.warn(validation.group.inputs);
},
company: function () {},
email: function () {},
name: function () {},
phone: function () {}
});- Funkci
onFoxentryProjectLoad()můžete zachovat; knihovna ji ve v2 po načtení také zavolá. - Uvnitř
onFoxentryProjectLoad()nahraďteFoxentryBuilder.setCallbacks(...)zaFoxentry.setCallbacks(...). - Upravte práci s daty: první argument je DOM element a druhý argument je objekt, který nyní obsahuje
validation.groupivalidation.response. - Přejmenujte callback klíč
addressnalocation. - Po změnách ověřte chování voláním
await Foxentry.validate(...)a kontrolou přesFoxentry.getValidationStatus(...).