| 
<!DOCTYPE html><html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>JSON Form Generator</title>
 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
 </head>
 <body>
 <div class="container mt-5">
 
 
 <?php
 $formData = <<<EOF
 {
 "description": "Example for internal JSON code",
 "name": "formData",
 "method": "post",
 "action": "?",
 "class" : "needs-validation",
 "novalidate": true,
 "properties": {
 "formRowOpen": {
 "type": "div",
 "open": true,
 "class": "row justify-content-start"
 },
 "formColOpen": {
 "type": "div",
 "open": true,
 "class": "col-5"
 },
 "hiddenElement": {
 "type": "hidden",
 "value": "eins"
 },
 "firstName": {
 "type": "text",
 "label": "First name",
 "name":"firstName",
 "id":"firstName",
 "value": "test",
 "required": true,
 "onchange":"console.log(this.value)",
 "class": "form-control",
 "labelClass": "form-label w-100",
 "aria-describedby": "firstNameHelp",
 "help": "Max character = 20",
 "helpClass": "form-text",
 "divClass": "mb-3",
 "feedback": "Something went wrong!",
 "feedbackID": "lastName-feedback",
 "feedbackClass": "invalid-feedback"
 },
 "lastName": {
 "type": "text",
 "aria-label": true,
 "label": "Last name",
 "name":"lastName",
 "class": "form-control mt-2",
 "placeholder": "Enter Your Last Name",
 "required": true,
 "divClass": "mb-3",
 "help": "Max character = 30",
 "helpClass": "form-text",
 "feedback": "Something went wrong!",
 "feedbackID": "lastName-feedback",
 "feedbackClass": "invalid-feedback"
 },
 "emailAddress": {
 "type": "email",
 "label": "E-Mail Address",
 "name":"email",
 "required": true,
 "onChange":"console.log(this.value)",
 "aria-label": true,
 "class": "form-control",
 "labelClass": "form-label w-100",
 "aria-describedby": "emailHelp",
 "help": "[email protected]",
 "helpClass": "form-text",
 "divClass": "mb-3",
 "feedback": "Something went wrong!",
 "feedbackID": "lastName-feedback",
 "feedbackClass": "invalid-feedback"
 },
 "test": {
 "type": "text",
 "placeholder": "Placeholder Text",
 "class": "form-control mb-3"
 
 },
 "textarea": {
 "type": "textarea",
 "label": "Tell your story",
 "name": "story",
 "class": "form-control mt-2",
 "labelClass": "form-label w-100",
 "aria-describedby": "storyHelp",
 "help": "Max character = 512",
 "helpClass": "form-text",
 "divClass": "mb-3"
 },
 "language": {
 "type": "select",
 "label": "Language",
 "name": "lang",
 "id": "lang",
 "options": {
 "en": ["English", false],
 "fa": ["Farsi", false],
 "de": ["German", true]
 },
 "class": "form-select mt-2",
 "labelClass": "form-label w-100",
 "divClass": "mb-3",
 "help": "Select your language",
 "helpClass": "form-text"
 },
 "buttonGridOpen": {
 "type": "div",
 "open": true,
 "class": "d-grid gap-2 d-flex justify-content-end"
 },
 "clear": {
 "type": "button",
 "label": "Clear Form",
 "name":"clear",
 "onclick": "form.reset()",
 "class": "btn btn-danger"
 },
 "submit": {
 "type": "submit",
 "label": "Send Form",
 "name":"submit",
 "class": "btn btn-success me-2"
 },
 "buttonGridClose": {
 "type": "div",
 "open": false
 },
 "formColClose": {
 "type": "div",
 "open": false
 },
 "formRowClose": {
 "type": "div",
 "open": false
 }
 }
 }
 EOF;
 
 
 // Include the class
 require_once 'Form.php';
 
 // Use a JSON file
 echo "<h1>Example of using JSON file</h1>\n";
 $form = new Form('example_form.json');
 try {
 $form->show();
 } catch (JsonException $je) {
 echo $je->getMessage();
 }
 
 
 //Use the internal JSON code
 echo "<h1 class='mt-5'>Example of using internal JSON code</h1>\n";
 try {
 $form = new Form($formData);
 $form->show();
 } catch (ErrorException $e) {
 echo $e->getMessage();
 } catch (JsonException $je) {
 echo $je->getMessage();
 }
 ?>
 
 
 </div><!-- end container -->
 <br><br><br>
 <script>
 // Example starter JavaScript for disabling form submissions if there are invalid fields
 (function () {
 'use strict'
 // Fetch all the forms we want to apply custom Bootstrap validation styles to
 const forms = document.querySelectorAll('.needs-validation')
 // Loop over them and prevent submission
 Array.prototype.slice.call(forms)
 .forEach(form => {
 form.addEventListener('submit', event => {
 if (!form.checkValidity()) {
 event.preventDefault()
 event.stopPropagation()
 }
 form.classList.add('was-validated')
 }, false)
 })
 })()
 </script>
 
 <!--  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0" crossorigin="anonymous"></script>-->
 </body>
 </html>
 |