Ενσωμάτωση του Legalesign Signer στην Ιστοσελίδα σας
Το στοιχείο Signer απαιτεί ενεργοποίηση. Επικοινωνήστε με την υποστήριξη για να το ενεργοποιήσετε για την ομάδα σας.
Τρέχουσα έκδοση: v1.1.7 — αρχείο αλλαγών
Ο Legalesign Signer είναι ένα ανεξάρτητο πλατφόρμας στοιχείο web που παρέχει μια ολοκληρωμένη και ομαλή εμπειρία υπογραφής εγγράφων μέσα από τη δική σας εφαρμογή. Λειτουργεί με απλό HTML, React, Vue, Angular ή οποιοδήποτε web framework.
Ενσωματώστε αυτό το στοιχείο όπου οι χρήστες σας χρειάζεται να υπογράψουν έγγραφα — μέσα σε CRM, portal πελάτη ή οποιαδήποτε εσωτερική εφαρμογή που αποδίδει HTML.
Εγκατάσταση
Φορτώστε απευθείας από το CDN (δεν απαιτείται εγκατάσταση):
<script type="module" src="https://cdn.legalesign.io/signer/latest/ls-signer.esm.js"></script>
Εγκατάσταση React
Εγκατάσταση μέσω package manager:
npm install legalesign-signer
# or
pnpm add legalesign-signer
Βασική Ενσωμάτωση
HTML & JavaScript
<ls-signer
recipient-id="abc123"
private-key="key"
session-id="session"
></ls-signer>
<script>
const signer = document.querySelector('ls-signer');
signer.addEventListener('signingSuccess', (e) => console.log('Signed:', e.detail.eventType, e.detail.documentId));
signer.addEventListener('signingFail', (e) => console.error('Failed:', e.detail.failureReason, e.detail.error));
signer.addEventListener('fieldChange', (e) => console.log('Field event:', e.detail.eventType));
</script>
React
import { useEffect, useState } from 'react';
import { LsSigner } from 'legalesign-signer/react';
import 'legalesign-signer/react.css';
function SigningPage() {
const [signerData, setSignerData] = useState(null);
useEffect(() => {
fetch('/your-backend/to-get-token')
.then(res => res.json())
.then(setSignerData);
}, []);
if (!signerData) return <p>Loading...</p>;
return (
<LsSigner
recipientId={signerData.recipientId}
privateKey={signerData.token}
sessionId={signerData.sessionId}
onSuccess={({ eventType, documentId }) => console.log(eventType, documentId)}
onFail={({ eventType, failureReason, error }) => console.error(eventType, failureReason, error)}
onChange={({ eventType, uuid, saved, field, document }) => console.log('Event:', eventType)}
/>
);
}
Το React απαιτεί react και react-dom (v18 ή v19) ως peer dependencies.
Vue
<template>
<ls-signer
ref="signer"
:recipient-id="recipientId"
:private-key="privateKey"
:session-id="sessionId"
/>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue';
const signer = ref(null);
function handleSuccess(e) {
console.log('Signed:', e.detail);
}
function handleFail(e) {
console.error('Failed:', e.detail);
}
onMounted(() => {
signer.value.addEventListener('signingSuccess', handleSuccess);
signer.value.addEventListener('signingFail', handleFail);
});
onBeforeUnmount(() => {
signer.value?.removeEventListener('signingSuccess', handleSuccess);
signer.value?.removeEventListener('signingFail', handleFail);
});
</script>
Αν χρησιμοποιείτε Vue με Vite, προσθέστε isCustomElement: (tag) => tag.startsWith('ls-') στη ρύθμιση του Vue plugin σας για να καταστείλουν οι προειδοποιήσεις αγνώστων στοιχείων.
Το Vue 3 μετατρέπει σε πεζά τα ονόματα γεγονότων σε custom elements, οπότε το @signingSuccess δεν λειτουργεί. Χρησιμοποιήστε addEventListener στο στοιχείο ref όπως φαίνεται παραπάνω.
Τυλίξτε το <ls-signer> μέσα σε <ClientOnly> για να αποφύγετε σφάλματα SSR. Προσθέστε τη ρύθμιση του custom element στο nuxt.config.ts:
export default defineNuxtConfig({
vue: {
compilerOptions: {
isCustomElement: (tag) => tag.startsWith('ls-'),
},
},
});
Αυθεντικοποίηση
Το στοιχείο signer απαιτεί ένα βραχύβιο token από το backend σας. Υπάρχουν δύο επιλογές:
- GraphQL
generateComponentToken— Κλήση μεcomponent: LS_SIGNERκαι είτεrecipientIdείτεsessionIdστο signer scope (δώστε ένα από τα δύο, όχι και τα δύο). - REST API — Κλήση
GET /signer/{signerId}/component-token/με το API key σας.
Και οι δύο επιστρέφουν το token και το sessionId που απαιτούνται από το στοιχείο. Δείτε Έγκριση Widget για την πλήρη ροή token στην πλευρά του server.
Επιλογή 1: GraphQL (Node.js)
Χρήση recipientId (η πιο συνηθισμένη — όταν γνωρίζετε τον παραλήπτη αλλά δεν έχετε ακόμη session):
const response = await fetch('https://graphql.uk.legalesign.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.LEGALESIGN_API_KEY}`,
},
body: JSON.stringify({
query: `mutation MintSignerToken($input: GenerateComponentTokenInput!) {
generateComponentToken(input: $input) {
token
tokenType
sessionId
expiresIn
expiresAt
}
}`,
variables: {
input: {
component: 'LS_SIGNER',
signer: { recipientId: '<recipient-id>' }
}
}
})
});
const { data } = await response.json();
const { token, sessionId } = data.generateComponentToken;
Εναλλακτικά, αν ήδη έχετε sessionId από προηγούμενη κλήση:
variables: {
input: {
component: 'LS_SIGNER',
signer: { sessionId: '<session-id>' }
}
}
Επιλογή 2: REST API
const response = await fetch(
`https://eu-api.legalesign.com/api/v1/signer/${signerId}/component-token/`,
{
headers: {
Authorization: `Bearer ${process.env.LEGALESIGN_API_KEY}`,
},
}
);
const { token, sessionId } = await response.json();
Περάστε το token ως private-key και το sessionId ως session-id στο στοιχείο.
Απαιτούμενα Χαρακτηριστικά
| Χαρακτηριστικό | Τύπος | Περιγραφή |
|---|---|---|
recipient-id | string | Αναγνωριστικό παραλήπτη (base64, πρόθεμα rec ή UUID) |
private-key | string | Token που επιστρέφεται από το generateComponentToken |
session-id | string | Session ID που επιστρέφεται από το generateComponentToken |
Προαιρετικά Χαρακτηριστικά
| Χαρακτηριστικό | Τύπος | Προεπιλογή | Περιγραφή |
|---|---|---|---|
colour | string | blue | Όνομα χρώματος θέματος (δείτε Θεματισμός) |
style | string | `` | Αλλαγές στυλ (δείτε Προσαρμοσμένο CSS) |
branding | boolean | true | Εμφάνιση λογοτύπου Legalesign. Ορίστε σε false για αφαίρεση. |
language | string | — | Επιβολή συγκεκριμένης γλώσσας και απόκρυψη επιλογέα γλώσσας (δείτε Διεθνοποίηση) |
Γεγονότα
| React prop | Γεγονός web component | eventType | Πότε |
|---|---|---|---|
onSuccess | signingSuccess | "success" | Έγγραφο υπογράφηκε με επιτυχία |
onFail | signingFail | "failure" | Υπογραφή εγγράφου απέτυχε, απορρίφθηκε, έληξε, ακυρώθηκε, διαγράφηκε, αφαιρέθηκε ή έχει ήδη ολοκληρωθεί αλλού |
onChange | fieldChange | "ready" | Έγγραφο και εικόνες φορτώθηκαν πλήρως |
onChange | fieldChange | "save" | Μια τιμή πεδίου αποθηκεύτηκε |
onChange | fieldChange | "select" | Ένα πεδίο επιλέχθηκε ή εστιάστηκε |
onSuccess / signingSuccess
Εκτελείται όταν ο παραλήπτης υπογράφει με επιτυχία το έγγραφο.
{
eventType: 'success';
documentId: string; // UUID of the signed document
recipientId: string; // UUID of the recipient
}
React:
<LsSigner
onSuccess={({ eventType, documentId, recipientId }) => {
console.log(eventType); // "success"
console.log(documentId);
console.log(recipientId);
}}
/>
Web component:
signer.addEventListener('signingSuccess', (e) => {
console.log(e.detail.eventType); // "success"
console.log(e.detail.documentId);
console.log(e.detail.recipientId);
});
onFail / signingFail
Εκτελείται όταν η υπογραφή αποτυγχάνει — είτε λόγω απόρριψης εγγράφου είτε λόγω σφάλματος κατά τη διαδικασία υπογραφής (π.χ. σφάλμα δικτύου, λήξη session, σύγκρουση κατάστασης εγγράφου).
{
eventType: 'failure';
failureReason: FailureReason;
error: string; // Human-readable error message
documentId?: string; // UUID of the document (if available)
recipientId: string; // UUID of the recipient
}
failureReason | Αιτία |
|---|---|
documentExpired | Η κατάσταση state του εγγράφου είναι "expired" ή η ημερομηνία expires είναι στο παρελθόν |
sessionExpired | Το API επέστρεψε 401 ή 403 κατά τη φόρτωση του εγγράφου |
cancelled | Η κατάσταση state του εγγράφου είναι "cancelled" |
deleted | Το flag is_deleted του εγγράφου είναι true |
rejected | Ο παραλήπτης απέρριψε το έγγραφο (is_rejected είναι true) |
removed | Το API επέστρεψε 404 — το έγγραφο πλέον δεν υπάρχει |
documentCompleted | Το API υπογραφής επέστρεψε completed — το έγγραφο είχε ήδη υπογραφεί, πιθανόν σε άλλο browser ή συσκευή. Το στοιχείο εμφανίζει ενημερωτικό μήνυμα στον παραλήπτη αντί για σφάλμα. |
signingError | Κάθε άλλο σφάλμα κατά το φόρτωμα ή την υπογραφή |
React:
<LsSigner
onFail={({ eventType, failureReason, error, documentId, recipientId }) => {
console.log(eventType); // "failure"
console.log(failureReason); // e.g. "documentExpired"
console.log(error);
}}
/>
Web component:
signer.addEventListener('signingFail', (e) => {
console.log(e.detail.eventType); // "failure"
console.log(e.detail.failureReason); // e.g. "documentExpired"
console.log(e.detail.error);
});
onChange / fieldChange
Και οι τρεις τιμές eventType μοιράζονται το ίδιο γεγονός. Χρησιμοποιήστε το eventType για διάκριση.
eventType: "ready"
Εκτελείται μια φορά όταν το έγγραφο και όλες οι εικόνες σελίδων έχουν φορτωθεί πλήρως και η διεπαφή υπογραφής είναι έτοιμη για αλληλεπίδραση.
{
eventType: 'ready';
document: {
documentId: string; // UUID of the document
name: string; // Document name
state: string; // Document state (e.g. "signing")
recipientId: string; // UUID of the recipient
recipientRole?: string; // Role of the recipient (e.g. "witness")
pageCount: number; // Number of pages
expires?: string; // Expiry date (ISO string, if set)
isApprover: boolean; // Whether the recipient is an approver
isWitness: boolean; // Whether the recipient is a witness
canReassign: boolean; // Whether the recipient can reassign
doOfferReject: boolean; // Whether the reject option is shown
};
}
React:
<LsSigner
onChange={({ eventType, document }) => {
if (eventType === 'ready') {
console.log('Ready to sign:', document.documentId, document.name);
console.log('Pages:', document.pageCount);
console.log('Expires:', document.expires);
}
}}
/>
Web component:
signer.addEventListener('fieldChange', (e) => {
if (e.detail.eventType === 'ready') {
console.log('Ready to sign:', e.detail.document.documentId, e.detail.document.name);
}
});
eventType: "save"
Εκτελείται μετά την αποθήκευση μιας τιμής πεδίου στον server.
{
eventType: 'save';
uuid: string; // UUID of the field
saved: boolean; // Whether the save was successful
field: Record<string, any>; // Full field object (see Field Properties below)
}
React:
<LsSigner
onChange={({ eventType, uuid, saved, field }) => {
if (eventType === 'save') {
console.log(uuid, saved, field.value);
}
}}
/>
Web component:
signer.addEventListener('fieldChange', (e) => {
if (e.detail.eventType === 'save') {
console.log(e.detail.uuid, e.detail.saved, e.detail.field.value);
}
});
eventType: "select"
Εκτελείται όταν ένα πεδίο επιλέγεται ή εστιάζεται — ενεργοποιείται από κλικ χρήστη, πλοήγηση με πληκτρολόγιο, αυτόματη προώθηση ή αλληλεπίδραση στην πλαϊνή μπάρα.
{
eventType: 'select';
uuid: string; // UUID of the selected field
field: Record<string, any>; // Full field object (see Field Properties below)
}
React:
<LsSigner
onChange={({ eventType, uuid, field }) => {
if (eventType === 'select') {
console.log('selected', uuid, field.fieldtype);
}
}}
/>
Web component:
signer.addEventListener('fieldChange', (e) => {
if (e.detail.eventType === 'select') {
console.log('selected', e.detail.uuid, e.detail.field.fieldtype);
}
});
Ιδιότητες Πεδίου
Το αντικείμενο field που περιλαμβάνεται στα γεγονότα save και select έχει τις ακόλουθες ιδιότητες:
| Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
uuid | string | Μοναδικός αναγνωριστικός αριθμός πεδίου |
fieldtype | string | Τύπος πεδίου (π.χ. "text", "signature", "date", "checkbox") |
value | string | Τρέχουσα τιμή πεδίου |
state | boolean | Αν το πεδίο έχει αποθηκευτεί επιτυχώς |
optional | boolean | Αν το πεδίο είναι προαιρετικό |
page | number | Αριθμός σελίδας όπου εμφανίζεται το πεδίο |
label | string | Ετικέτα πεδίου (αν έχει οριστεί) |
validation | number | Κωδικός τύπου επαλήθευσης |
logicaction | string | Τύπος λογικής ενέργειας ("1" = radio, "2" = άθροισμα, "3" = υπό όρους) |
logicgroup | string | Αναγνωριστικό ομάδας λογικής |
mapto | string | Στόχος για λογική (πεδία ελέγχου) |
auto | boolean | Αν το πεδίο συμπληρώνεται αυτόματα |
dirty | boolean | Αν το πεδίο έχει μη αποθηκευμένες τοπικές αλλαγές |
React Props
Το React component χρησιμοποιεί camelCase props και callback props αντί για γεγονότα DOM:
| Prop | Τύπος | Απαραίτητο | Περιγραφή |
|---|---|---|---|
recipientId | string | ✅ | Αναγνωριστικό παραλήπτη |
privateKey | string | ✅ | Ιδιωτικό κλειδί από τη μεταβολή generateComponentToken |
sessionId | string | ✅ | Αναγνωριστικό session |
colour | LsSignerColour | ❌ | Χρώμα θέματος |
branding | boolean | ❌ | Εμφάνιση λογοτύπου Legalesign. Προεπιλογή true. |
language | string | ❌ | Επιβολή συγκεκριμένης γλώσσας (δείτε Διεθνοποίηση) |
onSuccess | (data: { eventType: 'success'; documentId: string; recipientId: string }) => void | ❌ | Καλείται σε επιτυχή υπογραφή |
onFail | (data: { eventType: 'failure'; failureReason: FailureReason; error: string; documentId?: string; recipientId: string }) => void | ❌ | Καλείται σε αποτυχία υπογραφής |
onChange | (data: { eventType: 'ready' | 'save' | 'select'; document?: DocumentSummary; uuid?: string; saved?: boolean; field?: Record<string, any> }) => void | ❌ | Καλείται σε γεγονότα πεδίων και έγγραφου έτοιμου |
Χειριστής catch-all (για debugging & πρωτότυπα)
Καθώς κάθε γεγονός περιλαμβάνει eventType, μπορείτε να συνδέσετε μια ενιαία συνάρτηση σε όλα τα γεγονότα:
React:
const handleSignerEvent = (e) => {
switch (e.eventType) {
case 'success': console.log('Signed:', e.documentId); break;
case 'failure': console.log('Failed:', e.failureReason, e.error); break;
case 'ready': console.log('Ready:', e.document?.name); break;
case 'save': console.log('Saved field:', e.uuid, e.saved); break;
case 'select': console.log('Selected field:', e.uuid); break;
}
};
<LsSigner
onSuccess={handleSignerEvent}
onFail={handleSignerEvent}
onChange={handleSignerEvent}
/>
Web component:
const handleSignerEvent = (e) => {
switch (e.detail.eventType) {
case 'success': console.log('Signed:', e.detail.documentId); break;
case 'failure': console.log('Failed:', e.detail.failureReason, e.detail.error); break;
case 'ready': console.log('Ready:', e.detail.document?.name); break;
case 'save': console.log('Saved field:', e.detail.uuid, e.detail.saved); break;
case 'select': console.log('Selected field:', e.detail.uuid); break;
}
};
signer.addEventListener('signingSuccess', handleSignerEvent);
signer.addEventListener('signingFail', handleSignerEvent);
signer.addEventListener('fieldChange', handleSignerEvent);
Θεματισμός
Ορίστε χρωματικό θέμα με την ιδιότητα colour. Όλες οι αποχρώσεις παράγονται αυτόματα.
Διαθέσιμα Χρώματα
pink · blue · purple · indigo · teal · green · lightblue · burnt · aubergine · red · yellow · cyan · lime · trueGreen
Παραλείψτε το prop για το προεπιλεγμένο μπλε.
<ls-signer colour="pink" ...></ls-signer>
<LsSigner colour="pink" ... />
Το prop colour ορίζει την ιδιότητα data-ls-theme στη ρίζα του στοιχείου. Οι προσαρμοσμένες ιδιότητες CSS ορίζουν κλίμακα 10–100 για κάθε χρώμα:
| Απόχρωση | Χρήση |
|---|---|
| 10 | Ανοιχτά φόντα, διακριτικά γεμίσματα |
| 20 | Διακριτικά περιγράμματα |
| 30 | Δακτύλιοι εστίασης |
| 60 | Κύριο χρώμα (κουμπιά, σύνδεσμοι, ενεργές καταστάσεις) |
| 70 | Κατάσταση hover |
| 80 | Σκούρες/έντονες τονίσεις |
Προσαρμοσμένο CSS
Το στοιχείο εκθέτει προσαρμοσμένες ιδιότητες CSS που μπορούν να υπερισχύσουν για να προσαρμόσετε την εμφάνιση πέρα από το χρωματικό θέμα. Αυτή η σειρά ιδιοτήτων είναι περιορισμένη προς το παρόν, επικοινωνήστε μαζί μας για περισσότερα.
<ls-signer
style="--ls-font-family: 'Inter', sans-serif; --ls-color-primary-60: #e91e63;"
recipient-id="abc123"
private-key="key"
session-id="session"
></ls-signer>
Διαθέσιμες Ιδιότητες
| Ιδιότητα | Προεπιλογή | Περιγραφή |
|---|---|---|
--ls-font-family | 'IBM Plex Sans', sans-serif | Κύρια οικογένεια γραμματοσειράς |
--ls-color-primary-10 έως --ls-color-primary-100 | — | Πλήρης κλίμακα κύριου χρώματος (αντικαθιστά θέμα) |
--ls-color-error | #f64a44 | Χρώμα κατάστασης σφάλματος |
--ls-color-error-light | #fff0f0 | Φόντο σφάλματος |
--ls-color-success | #46dbaa | Χρώμα κατάστασης επιτυχίας |
--ls-color-success-light | #effff9 | Φόντο επιτυχίας |
--ls-color-warning | #fad232 | Χρώμα κατάστασης προειδοποίησης |
--ls-color-warning-light | #fffcef | Φόντο προειδοποίησης |
--ls-color-border | #d8d9dc | Προεπιλεγμένο χρώμα πλαισίου |
--ls-color-border-subtle | #e0e2e5 | Διακριτικό χρώμα πλαισίου |
--ls-color-bg-subtle | #f7f8fa | Διακριτικό φόντο |
Σημείωση: Για πλήρη έγχυση custom CSS (στόχευση εσωτερικών στοιχείων απευθείας, αντικατάσταση μεγεθών γραμματοσειράς, ακτίνων περιγράμματος, αποστάσεων κ.λπ.), αυτό είναι μελλοντική προγραμματισμένη λειτουργία. Παρακαλούμε επικοινωνήστε αν ενδιαφέρεστε.
Διεθνοποίηση
Το στοιχείο υποστηρίζει 17 γλώσσες με μεταφράσεις ενσωματωμένες στο build. Η γλώσσα ανιχνεύεται αυτόματα από τον browser. Ένας ενσωματωμένος επιλογέας γλώσσας στη διεπαφή υπογραφής επιτρέπει στον παραλήπτη να αλλάζει γλώσσα ανά πάσα στιγμή.
Ορίστε την ιδιότητα language για να επιβάλτε συγκεκριμένη γλώσσα. Όταν δοθεί, ο ενσωματωμένος επιλογέας γλώσσας κρύβεται και παρακαμφθεί η ανίχνευση του browser.
<ls-signer language="fr" recipient-id="abc123" private-key="key" session-id="session"></ls-signer>
<LsSigner language="fr" recipientId="abc123" privateKey="key" sessionId="session" />
Προτεραιότητα: prop language → γλώσσα browser → αγγλικό fallback.
| Κωδικός | Γλώσσα | Κωδικός | Γλώσσα |
|---|---|---|---|
en | Αγγλικά | nl | Ολλανδικά |
fr | Γαλλικά | fi | Φινλανδικά |
bg | Βουλγαρικά | it | Ιταλικά |
es | Ισπανικά | he | Εβραϊκά |
de | Γερμανικά | sv | Σουηδικά |
gs | Σκωτσέζικα Gaelic | cy | Ουαλικά |
ar | Αραβικά | is | Ισλανδικά |
el | Ελληνικά | iw | Εβραϊκά (παλιά έκδοση) |
pt | Πορτογαλικά | ||
ro | Ρουμανικά |
Έκδοση CDN
Ο URL του CDN υποστηρίζει τόσο το latest όσο και αριθμούς έκδοσης με κλείδωμα:
<!-- Always get the most recent version (recommended) -->
<script type="module" src="https://cdn.legalesign.io/signer/latest/ls-signer.esm.js"></script>
<!-- Pin to a specific version -->
<script type="module" src="https://cdn.legalesign.io/signer/v1.1.7/ls-signer.esm.js"></script>
Συνιστούμε τη χρήση latest — αυτό εξασφαλίζει ότι η ενσωμάτωσή σας λαμβάνει αυτόματα διορθώσεις σφαλμάτων, ενημερώσεις ασφαλείας και νέες λειτουργίες. Χρησιμοποιήστε έκδοση με κλείδωμα αν χρειάζεται να σταθεροποιηθεί σε μια γνωστή έκδοση κατά τη διάρκεια QA freeze ή ελεγχόμενης κυκλοφορίας. Δείτε το πλήρες ιστορικό εκδόσεων στο npm για διαθέσιμες εκδόσεις.
Ολοκληρωμένο Παράδειγμα
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document Signing</title>
<script type="module" src="https://cdn.legalesign.io/signer/latest/ls-signer.esm.js"></script>
</head>
<body>
<ls-signer
recipient-id="abc123"
private-key="key"
session-id="session"
colour="teal"
></ls-signer>
<script>
const signer = document.querySelector('ls-signer');
signer.addEventListener('signingSuccess', (event) => {
console.log('Document signed:', event.detail.documentId);
window.location.href = '/thank-you';
});
signer.addEventListener('signingFail', (event) => {
console.error('Signing failed:', event.detail.failureReason, event.detail.error);
});
signer.addEventListener('fieldChange', (event) => {
if (event.detail.eventType === 'ready') {
console.log('Ready to sign:', event.detail.document.name);
}
});
</script>
</body>
</html>
Υποστήριξη Browser
- Chrome/Edge (τελευταία έκδοση)
- Firefox (τελευταία έκδοση)
- Safari (τελευταία έκδοση)
- Κινητοί browsers (iOS Safari, Chrome Mobile)
Αρχείο Αλλαγών
| Έκδοση | Ημερομηνία | Περίληψη |
|---|---|---|
| v1.1.7 | 20 Οκτ 2026 | Αιτία αποτυχίας documentCompleted; βελτιώσεις αποθήκευσης πεδίων; διορθώσεις θέσης; βελτιωμένη καταγραφή αποτυχίας γεγονότων |
| v1.1.0 | 22 Ιουλ 2026 | Γεγονός onChange / fieldChange; prop language; υπό όρους πεδία; αυτόματο άλμα; QES |
| v1.0.12 | 20 Ιουλ 2026 | Γεγονός onChange / fieldChange με ready, save, select; τιμές failureReason; επαλήθευση regex |
| v1.0.11 | 15 Ιουλ 2026 | Prop language; υπό όρους, dropdown, checkbox πεδία; είσοδος τηλεφώνου; σειρά πεδίων |
| v1.0.6 | 9 Ιουν 2026 | Προστέθηκε prop branding |
| v1.0.3 | 15 Μαΐ 2026 | Prop colour; custom CSS ιδιότητες; διορθώσεις σφαλμάτων |
| v1.0.0 | 11 Μαΐ 2026 | Αρχική σταθερή έκδοση |