{"_id":"@bepasquet/dynamic-form","_rev":"11-2eee675cde07c865483ddc7eb7b875fd","name":"@bepasquet/dynamic-form","dist-tags":{"latest":"3.2.4"},"versions":{"1.0.0":{"name":"@bepasquet/dynamic-form","version":"1.0.0","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"c4440346cba591d33272a8dc0ea3167e4b34fd0d","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-sDazG9a46ZwGhRUdMs6C9wP8UmCHUEoHD+iOSCfNM9nFDfeWEwlkqyWVbAxSOgv47f/BrXe6EoKWshwrShvUOA==","shasum":"19ad08b255bf281a8344e8e7dc61f0c28023e9ae","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-1.0.0.tgz","fileCount":3,"unpackedSize":744030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcD2NNCRA9TVsSAnZWagAAC9UP/3rmBswbrAoxqx57QYno\nxdV6VHClCD1oZTGwyy6FMrqwQX8BroBrIYBiXcv0+5HDnPuFOIwmnY9W1pkd\n35HcJV16kzF/fi8WQcNWCbPZOhsXfnIzTKqLMS+BbePt2mLjwIElJ7j5qDl+\npNMH2ipsmdBvc7DLhgqzk2vRXYLHnfb4THOWMNAbzAFVxhqTuHXleAbHDVP+\nnet8w1y2W0a2oGLmiCYi+H7PJrM+H5Voldde51l5PItYKIuMx9FVL8tH4sbx\ncwmsqhdl1kW82joC+NKzUMEKWRA4Em0xrgqfkcxP4vdTOYzSO/xQDQe0De4Z\n3ADaIZwTIobvWKc6PI1zsnQxkQrf46LPEnkEG6ayX/lJr29ZcpN/4MBFNHXL\nBmVV0kwoFrAlEqYu0HvdVRcm0ZtW+XaY1o6hSm8+zd4OMMQG0zRf1BzbRhIF\n429peq/PqTuogCTUOSz0YMjBU2ZiJ7PRz9/vxiAi7hUv38ljIEIUwzdwNWrr\nSMAGR8ET351W76UEys5CJ0EfzqosO+A61cmrobGL0x8u0pVVsXmP0ybHxQR7\nnP8XFsJyaTyqYkx6BDOUJtlf5l6vqWxJI5vwAUMjDQWilf8mZ4r9IgmwZaOu\nWww6wW7USKhLkqC7tAWmN0MwA8rE5m4hS3P8h2P6OyPzQ0Iah5tCe/bk6RPM\nHOF2\r\n=lRWF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIElFoE7vS7wD40v8jU3usbwDHn4BZTB2d1ONvVHV9Tf9AiEAqZqBFSiaodGBXAnh/tiXNC6KUtr5e4YXW8BYA8o43Ts="}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_1.0.0_1544512332365_0.09519941354845574"},"_hasShrinkwrap":false},"2.0.0":{"name":"@bepasquet/dynamic-form","version":"2.0.0","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"5eebb709f88c90cfa963e5ac3bbf8e963525aac8","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-QtjqkRHMfls8PKs+0j/KMa1GqbsTbdOQCaBEnlqZ8nwq8k+GXBzY5x1lxHxZ8ka/PfDiuEALBBum510DgQvSIg==","shasum":"86acde30cbd1643bc011a432af88eb09ee49253c","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-2.0.0.tgz","fileCount":3,"unpackedSize":760784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcD+i9CRA9TVsSAnZWagAAWoYQAIuMjROgysu0TEB4WSBa\nI1dda+qwRSgZ6C+cKvcNKuGdo3S2w3QvArGMGMyzV3+clFmu4vTA9RX7SEDP\nb1PmMLeWa7On3QVEV0W4kZf3asXhBxPAwy9Jrx8IQo16+5+rxymDK4M/628d\npnoAGWcQvrpbVzoDey04nR+VtHwr4pXjd80pdTbHAr61d5evKwbVBRoB6CC0\nFiPJRfPQ46VLKacDDzsviOUdvgytaMGVZzaClTiVm823JZf8WMCfSjgo3wRY\nikCP8XBmHdB6qPRuy+0K0KceCT9zy6KglcB2T05EeHaz1ehXbv4dn7dfB27u\nJh4ezdISGCwcqyOv+m6HhmGB191J9SnJ3rFWNmbc9pCdvhB6lBZcU3ZwjUiu\nwcVKLo6xCbbabpltqwxh3ZlUolex2gaonK+YhQEZUkllNwfA+aVTZoI3t5sK\nqAm+YxeWHOAHDcc5E2fs5Q4RVCHhzH/IZMj5h+8Ml77S1qAkj2s/62uJ9et+\nGyzaIKeAT5GtiTv2uO46fAEDRHZDKh/kB5rLmHvmlBo0wYx2ZaoXhDBwsgNM\nIJiP/rJcYGvVAVMn/vnP5J2r9QZyffoYN9bmRtLfvmc9Wu639x+CNjZ0LpNA\nAyEbiAaAXaBbnFEJczqwlDKljH1I/uejtkgQZQzP6h6UH6un55XEaHflHsnC\n95F7\r\n=M4QL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVMRa4wzjbJzJREfctzszBXxsHhLAbYaF6RisZphoTegIhAKT/sOp4hkjja5B5hwrLEKBDj9VBMN8vAT+lW2iw88Qw"}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_2.0.0_1544546492807_0.1489925473830569"},"_hasShrinkwrap":false},"3.0.0":{"name":"@bepasquet/dynamic-form","version":"3.0.0","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"560c739a0a0336ccc1a9d8f47b2c9a5f5a392665","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-zsk3N458N91Vnd5obKjn9+TeCxb/OwqPHcVxmsy0C7ZLdT7xhwO4bJhWrNkKASKbT/v22Nc/py21uAF4kX/YBw==","shasum":"7259956d98f27b93879f42ab2998874b9946506c","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.0.0.tgz","fileCount":3,"unpackedSize":414656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEiBqCRA9TVsSAnZWagAAP1UQAKDCUCvRIxyuXyrdih49\nDUhIQxF9hODjO4i0rrNMR7KTRAQ1KZt64cdrk+8F2K2M2o+R5niplEs/13aI\n+JI3vv8xXbbXs4nct4zXpKW0zhDO+EcVaPK56Ez+qiCfOZTYMpoFeev8VS2/\n6N1v7f9Bxtaq2EuLljySb/4cHL/GwWpUmV/dJxudnfCAOAOKSC/ii+Lut+LT\n0kigtxoBXrSsfB4j2DI47hInCoT4W32D2gFttMj32g56ytiWeM+7RoySDltS\n/jPN33UnrHf+Rucn5RCbje0isb2vY5vmi3fgi//L0gZE+Qr2ZvyvCBcQOQ42\n5DmxDXU8lB0o2RhmQl++G8W93vHwG03OmwM4v+XQCzEojTGGQyQG0FDrlXBp\nk3XHa0zHlh0Vrhu1+ooRHJMhNHOVvby/N4Wtfbk8HVFZXEAbCttd0eEUtTG+\n12qv7/tzvMu/dWkn0NPCMFxr495lqMQPbC+cd2rnQCe0Qp+EBMm6Q+dDOZ/i\nDMx6BkKcBEf6FdDNCLRvqn1bRqRKSIZ9Ae0fO2r9xdXefI2Ddj04F3gdPPwk\nTTa4zg4GAF9YUIXXorqn2SnfQuCGq21MiCvxPsyq6MQIu8+LT2hCsyy3TaeX\nPc92UA12oqkQgtJiHjb+zR4GU8EHAcb/QEUwen/BCoJ/8vPBfglEIL+eGe3H\nrq+2\r\n=kEnV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvRGwGbhviMvX8rf4vekknlRvC7QzcB/ovaE9UbvqjKAiEAoPXs+7itFLx4bmpto1za/l4ptihWeMjDkLBR/wKN5A4="}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.0.0_1544691817864_0.7242597628824932"},"_hasShrinkwrap":false},"3.1.0":{"name":"@bepasquet/dynamic-form","version":"3.1.0","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"34000a31e46649296bb2e9e0d2eb70679e7adb0a","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-w1fT5/nP2+pvzdlK/raGl7Mluz1rfOBOmcUkYDTuQYT+J3nhQw8UC4dcjno6MyB0F+x/6f7BYxph0lyyPeDP5Q==","shasum":"42301a2daf7f8eb95ebcf34c04406768fa73d6b1","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.1.0.tgz","fileCount":3,"unpackedSize":416569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEk3jCRA9TVsSAnZWagAA63oP/1uloKGvzf5XagyOxpUn\n+4HUGzUpBX30/HnXDPcLBVxQiSrDUKCGdrlxQsRMHKrZPxFL9LTzBFv6jjmD\njhL9JZhZ3h2BdHl7bU5GoD4Sug/jcZaoNK7OA5W3BsidS+7XLuoC+MROzLDW\nYNKk6+oLGBmW2SBctso6CJW5e3IMaC6iPu+ChXRw6wFGXtxmOhS3Elmu40h7\nEsPnKgP3FTCq0ypxgOFB5nQCAzeKTHor79/KFvLJjz2XoS4ar/+eOTxT9tV/\nWghVDW81PVc4zz6cIT1ZljoMRPZYsmqZ4GU28Urghke2jpHR1FJ5OMlvubfh\np7sVU/2nRopqnwFmtvcjeDf2u8bU/JlYYqQ5yu25mEatz1xLlam37zcdz8E0\nOz0lxrDzhZ0rZmDB4xwPVWr4B7+GNeqfqvGQWu0weXQQwzB/ZifiMNFRZpbq\n546hTDw0Nf9VCmmqb44SXWm9bjTAFmbQTgtOqvNkU/WYzyCj79aRdlGCkXBT\nHioyCMDUr1DGKPN3a6R5iMG7HeqjpPhCyHMZjC0FnpdQEI7sIR4+cwPeOnKe\nlPy0rOpnB5iFn/ACiYEQ86XwH5XL7IAkitBaUX+sfl8dC6p3D3oFHwiZG9Om\nKPQimEx3wjP05dx+5ItyBIUSO5pxvVQP9leFRhCaxpOXblBlxPGsADAeZp2t\nwiHZ\r\n=Xlwk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfYQIJ6D+6RYTrmNJWn2HTFm7D4s2yYe4ELzecvs7OqQIhAKfDXfoFfI3CZ7fsRSwGg6xQ/jpLn9B+bvfHrKWQnwxe"}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.1.0_1544703459167_0.10097506923295585"},"_hasShrinkwrap":false},"3.1.1":{"name":"@bepasquet/dynamic-form","version":"3.1.1","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"391cfd18b933082b39ea7e827d422a644a49c0c0","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-UV9PvEAxt0qG2YHQ5vcY/G35FKsiMa73tCb9bFFjsxxhxG1iRdo15q/wfUQHnmdVXzMlz82nf5pHU42FXtU0Sg==","shasum":"d4f8718d4a1c0fb16b92374e9591246ad4f9afc2","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.1.1.tgz","fileCount":3,"unpackedSize":416569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEk5BCRA9TVsSAnZWagAAiT8QAKNkPDAo2GWCJbmTQeNs\nLW5rYxKx6zoOrMZpk/q5MORYfdayTQLW0aWvVxdNWF4Keu5OpoNIMP2+3VyU\n3nEVlDVK/2hWxhrflCjurdQzbIB2GiUQT+rwThHh1BwZp8GI+T3sDaFEvmLI\nkbxpX28tOZgbc+8PPyl9ixIPP4kawjqr7ahK41BzkcZ3MhYmrEXPVj8KkT9f\nNQlYZtZev/T7wb7kNz5O1CiidOS5pRemwnAiHadEHBKSafbpLrFVo/jijvpY\nl3/y55P4qh+Am5ZNkKq10piEpcMU9hICO9cOzd3AZnY41AoZrbV1IFZOEugi\nS3Mqpvo2ALL6O+PMxrik54A1B7oktYaCDonccuip5byITwRPKtDkcYDkVSvc\nv/mB8Q/skamuMXOPauiYNDapIBl54TGkIMRbNk9j4+2XOfkNBx/jO9YL5awx\nMZzOa0Tfh+DIi5v24gLoU4E97zq23JxHqhg8k/y+shN9aLul6yO0OSSSG6hK\nJdpJ415Fuov0MsMuHrjvMpjRw7MI2umLxcMZGC6jVcdPrJ0VgxXFtqzVGreF\nYGV7iaH37OAAWMy7iPR+mVKJI2Zpy4VUSU1H/ENw5P0bFR5/sW6NZdmGawOE\n30U1aoenxitxRjNvmhS35KZoc3XvwFQHENjb6Rc2BSrj2LMh472QGyCnr+TN\n7nnB\r\n=10/G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBV02pEX85RjG2ZYcC3gX0IpORVSmAyaH5OrJ7k5ebzgIgZI7AJmKhi6QcG2YuYCCPYFIZTytRy8z2sbFjzGu0IHc="}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.1.1_1544703552562_0.4042581630448272"},"_hasShrinkwrap":false},"3.1.2":{"name":"@bepasquet/dynamic-form","version":"3.1.2","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"35a037e9916f36470817e1219ea748225ddb16bb","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.1.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-W6Kve/YP6hZXX7yp7CrKNAu8LdjuNxY7MHlnEnfEWXlxhnyegzFOE/M0LToD9Ulk0WrncTKDKPdmtegWc5vm4A==","shasum":"2e71db555a5e4dbed2590e4f5c0c7c21e9955a26","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.1.2.tgz","fileCount":3,"unpackedSize":419319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcElDqCRA9TVsSAnZWagAAg14P/3lvIgKchQtl18yYskSw\n46ITxIz9FVxaLq/xYB0cJViCI/GUgCv84tdmA4HC5BgY/qbA08vblJmkWIyi\n2G1tEgKyDsxcjaZSJoFO5lSBg1NkN9+rzEiaO8TYeO7skQEJYHqdHE4aGA2+\nOH+WxZb+LWOpDuyVy2aqlMaif25Nb8SmYHSFMeppZrOUiSTrG5T1KJXKOZ0e\nnTtRKI536DpQrbdX/5rBeoa6zltbez1JTXnJPmbC6rOIiINHTyRugGcsVhnw\nSKbfvgMVFpk4DbGGD0Q1N/R45N26V9IcO0SnDuwNgiZ4GhX0A5DXAzkB8nz+\nj/y7ZIzRm2MjUuIUZzubJj4xr9nb5pLMgpXQKpJlXzBmI1lUZRRbYw4Bf76D\ntTEnPaN3plftWKVTN+h8yxfNkOTn75RjJhpxqyQO6AFW9dGc4KnDKMQypUVq\nTphqMENT7Pblhhc9IdO32mo/F9I7aW+UjuZAIntAz7ztfAaT/4QdB/omumwc\ngIOUBuW4tYXu1X7uOTsuDPgvS8+7TdMMgXUXhBU9M/jcm9P+0RkBIqDLoIJM\nQYfqzTNVwIzcGpX/Omw0j9GMhWOLTiGUn+csa3ajPmdjG4cJL7FapuH9t1St\ntpa0TozktZsPxIpVbdpri+3WqvIkUTum6a1g+z1OsRp+3xPX9zS3+gDjRrjC\nPie1\r\n=j+zx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuQlSzyIEcv19CZRx+7qZflnHZmXbE8miuZCMIbLzrIAIhAMt48PlCKo7fOGHcg3csqaVoSIFYsodG0wfVUNTZbwSE"}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.1.2_1544704234124_0.6614319144002399"},"_hasShrinkwrap":false},"3.2.0":{"name":"@bepasquet/dynamic-form","version":"3.2.0","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"fea53aa7a3a972e9f7586179176e8ac4e167bfaa","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.2.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-1ztAplh4GmQKE3Qu/k+S/P68O8W3l5LZ4jWU7IZpns52ZHTbLRIgSfgPuQHOsMeRKm1vXwqyJkR84RTdnDs0uA==","shasum":"46f16fa5c00b408b391010b18e4d489e0e0118d7","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.2.0.tgz","fileCount":3,"unpackedSize":432374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE222CRA9TVsSAnZWagAAUJ4P/0Ct82W+CuJeAazyRRL+\naqNQmBJgv9/PJYb/NuIi47H4XbIqlEUgf56/5F1fJG14jtv/6nH8AngeOJK5\n1QZuiHHouj+3TY4ugVfMLwaCxy5CZcvh2QUjed8fSkxLX4sld/1AMS3zFSoK\no6EIe/BfpX6pq5Zl+ngIMNlhsfHiJRqCLf8P9UifT2vO9NN4V/k5DZWdOxpT\nwAo3DY54E3nSDVmJC8692GLv0/msh70ZDlaV7Ii2CSS21X8rfZBRPUV5qJaS\np+WKOQYj0igS/Xbylb7EqvkNGLJW3cpgKpVOCeYh+PFq4p3ciFbRJzmfMIc4\nBAU0xzsj83ZrJZ2z92EDlWOpMHaF9xA5rPbaYxp+zG+PfkX2ajjc+z3F9J30\nFj/+wmUNmGd8+RgvIbyAlhoFN5qJEVVnNaDcuBp+FMkfkvvRNhc0dwRy80W2\nqSSog3dHZeJt6FSzJw9Vs9Xc+b4UIssJp/O4Ct714cr67g4CRLHm0gNaWb0o\nWe0FCdfQZHb6Kvx7f4wJ9bV+mFrHHe/JqLxr4IuvJF1FYXInhaNlSnYUkz7a\nbvW3vl0ZOxmxkSZwOoBiBPpIghYOsmwDN1UpZf+BANAIoWV6zC9M7AzPQPEO\n0I4DzbVqqBV2ittw6id+OK/5rBaJ8ZVCA9X/T/PG+e1QqzaO9Pugtf4VOp99\nNUVN\r\n=N6xc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChNwyDzGarCZS5qqUCj1hoY1wxpkbr1auQDeEezFdHvAIhAIzqp8tOazzF1qPzy2wrv1bBhD2mM0Gu2h79tEIrQzeP"}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.2.0_1544777141385_0.8546703804900464"},"_hasShrinkwrap":false},"3.2.1":{"name":"@bepasquet/dynamic-form","version":"3.2.1","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"92b934e50339091354740c2819d1f3ca22fc92c7","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.2.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-QR5L80aMo2vyZbwkb7n9OEr3HNXwsm79Kg0Gp3XkPkL12DO0pUp6t2r482AQPO/r42C3CmeYmzRLJgDAT+BEag==","shasum":"60b016d596275a54969b71e3f7c4dfc5c43d7c2d","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.2.1.tgz","fileCount":3,"unpackedSize":432381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcE8DnCRA9TVsSAnZWagAACs8P/0Bqk3LLe1kG+WKpENig\n7zKAESvdlrW0giZ3DgPVk8/O+DRtBo7Ta92tUw6ymH58bSsojfabu2I2VRgn\nwIvRRBP0j+0KiU8bQWHVDUiISQwkOpcGAH60D0LcNJVA0E1UAgeOxj9FPFYT\nOKVKgxwIhvMpk1389RQv3MVERe0OojEV02bRlSSC5p2+INO+xey/c9Of20kk\nbl14IaLQ7CdJPt7f/J45+5A6CAimb1O2KBKurwNrM89dXmr4E6+SdCnYoilU\nbxjSmj594TCOboSaVrrXky+Sr/9hFHI5gsGjzsq81xCWRMiN1OqBHcrTsbhU\nHqcyJL85aZmbghVOMpvnJmkJwQBZLMQs6VH3cWemO52WSMNClJtifnitoIMh\nDGbPlCLrdLyjpZ2UxMK5mr9m82A/+iunx44ReYWGcLWWtCDFWKh8LXqmSqD0\nzfpnXXLAADEUW8iZHIKyodQHq1xETpHRtBMO5wLrxcdSrC0r0I9YUo2sVznv\nU3LOS87h55M2AN962BsGvquIpOM87vZOh+VYVXvaCFUy6SSmOdoMxEJ7fDsy\nVU2oXzUXsUSVF04DrEG9jBEMOXs5hCAggacpHJxl8AaE/PgLIjyz/l56F40I\nVYkbIdX+oShxBwfw+ckh0y9p9dVu9VEyGzkn0nAFfodtN9/HhvtcWDcwkLN3\nj1nW\r\n=+3Ym\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxTZWq+XL+IvIMxTdTUycwZIyYeRj9cV+Ib1TICRQtSAIhAMJxEViKtmUvpaFVfPklaRkoSG17X5Ov7EpBmZv6CrxG"}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.2.1_1544798439062_0.9600162096839713"},"_hasShrinkwrap":false},"3.2.2":{"name":"@bepasquet/dynamic-form","version":"3.2.2","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"a4dcc7a72bbef7ee551cc9ca41e86cd0dd105af8","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.2.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-Az2gJ1th9/58fAv9lL/+UiKl7Uu6p1FSrhDzFu5/hHYvagbrRR/pVIM5be0FFMn7DwHKqotFTifjBN+rbKlp7g==","shasum":"5d565528ee6833a6cc5c0901103883e62f9f4bfb","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.2.2.tgz","fileCount":3,"unpackedSize":432358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFIvQCRA9TVsSAnZWagAA5VIP/izy8LWrj9It21YudATt\noQb315w9sbqVkNOKECjwf0+QIarFpIBZzyYq8V7yDDUQIlGC88GgjWNKG2Vt\n8h7GHRUyDqdO2EA9BNId4tmeB3avkbZfYjLdBQJNnGzqLvt1qwqpwfwHOXv5\nhxw9yhUI0cz0uL3ItSOQi+293i01muQ4iKqthaE4LNAilTa4Y3hiRqWNmOvO\njKmfstRDAu+tFa7KVm3gt+gbx3kHAa88wDaKeopYp8GViLIW6oPXQiWIs3ug\nXl3DSzvsY9X90+QL/CPPDNFb/gI1FfjWnPUwWgCtpvTEwDkWWyqXoSRm7GTp\nMMrKsKwtVh3MoHF2LQQvYpQgUpPV45vOr+vaqNd4gSh4zuODTS+IYYgoYmNx\na6jgBb8vNP7GtAxRoLhYXAIyhragBir2YW0FNd02BSojVqQGmYbdrhBjJGuY\nT6Rp7vJ4wIQF24nREn75EuJWBQa38xZ0gmC13JSIbiVd10fhTd5zwCEh8wwD\noXNNh5qhEdei75hQPm9nJTnloGNA0fu6rWIOqdnZvTKgb+tSjJIJX9Vc63so\nSbW8BgRpzIW6DAoHoGbRtjdaxGo2JSo93GiGlVg0RJ32aKji8u/QWS+FgyZ2\nm5vk5PgtG5t6RM8A/hBb3c1tumRdwYsG/f+fEGpXa7N7U4UvcU+TwrNZaRBY\n5rb0\r\n=eHzD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGnbnGrIZjZz63YzZ0y3nx09dvdA1CeJshbzjtI0zsAzAiAhgTWb8Fh/Y7eZWG5vZpXyNxOWA1th0uh8tNIC16d16w=="}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.2.2_1544850383985_0.3623656484581965"},"_hasShrinkwrap":false},"3.2.3":{"name":"@bepasquet/dynamic-form","version":"3.2.3","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"975d5914eeccd218fa9ffd533444cde4d622236a","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.2.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-10WtZzM1YvjxoTnOMFx7blydUwh1n93vhhpgoW+HJqFff+ZHEax8FibyWZEXMbMOKW+9WsXBMVUH6OigIMeuPg==","shasum":"cc2615d9a431674e8c733282362de8f18c760d01","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.2.3.tgz","fileCount":3,"unpackedSize":432399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFIyKCRA9TVsSAnZWagAAXIcQAIl6ncFvIGa8zSesulQs\nxIm7TY4l1ADbBg/Tz9Y5XkYejKDJDMPPtlQNuLMfHtpHd9nuIMNCzfXm/7/7\n3JV7tBIVQkZKDHKSR6C9IDq8R5H8UCQM90kOiZCEtH8UPNcFTtybOf6cplyj\nJrDShtyijKTZqHGcV5TnM7NGRZp5CXl0ClDDpgmO8Y90POnbGlDuUrXN9RUW\nNIsTArbIQPiwuzEr0BPOb1mS7/Yoj+6GkbSfmEtN5wjoZga2bBxR3MB92VJ0\nLsYkrHMieq48/QEqpIvjpUTbmXFzJguXIdQbUDK86zB2akB89MNow+bdmqGC\noxqcrPScLlmO/s9JhiFaVLWPUQ81Kt5x3NNuptrIWPhQ2cwgSQKy9sYXb2xh\n/TmqhvfLrRXbJW0Cg83YUYOJwTTj3x3XptnZ5BSzdi0pHV0FmIxMmCUoqBGc\nk1TMmlENywbA5L7ojPJl7VMEwnJZG8QvdmLEXRXuX5WjrPZUvm48HNfqD9Wm\nrfq/7jXlHb9kCO6XgUlKLZfxjQxMyRFhzANoB9PxVHJ9eqSayF+9sOjdas63\n1rMbcJLKlBOlf0lQpDzEjX3I9a737Pgjw6fIRdtgJWci4BOtSNSurGEwcx8n\nfzB5icLYtXNA3TSyaoCoMpYRPHEso2Aqd3p+GhmKey8065R+Ii9AZflZMusS\nhtTi\r\n=ntaf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL9gOx2vwDYXPXT/XdzyGlyQDKRdEWWqGddkvCdQ2SxAIhAM//5pBUAQ67x5AeF83y/i/M147/rZibhSE2u5oMwn28"}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.2.3_1544850570088_0.28739807617161484"},"_hasShrinkwrap":false},"3.2.4":{"name":"@bepasquet/dynamic-form","version":"3.2.4","description":"Dynamic Forms Web Component","license":"MIT","repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"main":"index.js","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"dependencies":{},"gitHead":"88297792161d48e1837a5d3de8b4ec1be26913ae","bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"homepage":"https://github.com/bepasquet/dynamic-form#readme","_id":"@bepasquet/dynamic-form@3.2.4","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"bepasquet","email":"plescanopasquet@gmail.com"},"dist":{"integrity":"sha512-tJdBoIMF5MbNNZBuMSu6fbw3QnE2/HFOtfdumQsRHAMhA4APv4sZT6CKYEiLKodCcU+BqZEoMA8gDQKFTC3AqA==","shasum":"59641d926cdf73292c2925af25ab651b7b3c8b34","tarball":"https://registry.npmjs.org/@bepasquet/dynamic-form/-/dynamic-form-3.2.4.tgz","fileCount":3,"unpackedSize":432501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGIolCRA9TVsSAnZWagAAR7AP/1UlG10dVBVA1nFqyg3A\nLrxqR80v8jJZxnU7PywWSGR5/ALvPxg+QVCvL+5Ev1+c8o0ozfyYgZHuY4t/\nEpYFIx/iFmIvmbYuQqqxF+c5ZCtR6Lg5hQUs4ej5fHRCmfTwl97MoggciB63\nh9/yovwBCKO5tpBAzqa2sCLmza+/LXTx+SiSlHghZziCyDlKQySCch5+BX2X\nMF0SNVsJtDfLlNR8eXlOdVr4dLjPf1fHfpPRPsIzdaLKDOXMgjtzW0+xXc6T\nAZefi0xBvJtyCInusFpYra1DI8Ga0t6u5Ga3RLyzecqJ3p2A6RWN0c9zfZWT\n0AFJwxJYoxXfYD+zLiOqAWNpZkya3uiz+/q4P/Y/ddAShoyv6/UeMcwLWen4\nlCHJSOlA6pBRTNm004hwByCCNovsxAoQR4dSo/zO9Bt93B1lpq3F3SmeLj6W\nBsSBJci6mM1mmqHhnhWeK12PIlOrW80KxqHsi57rsE2Fp5SHnYshUfODNMUj\n2fLkp11PSvW9vfy5eJNwMR3eBBr07y0k1CwdZbQrRtIX+VTk/Hqz4FjEwZHK\n/jUI827rBpspXWKNEtREmPpaTPNFY5nAXb9f9enA/QquN04s+HOa0UrAoV2Z\nk/fqBsL3pEJJQzpCQEsXBTjty7Tg2jWPiDsOA/80GPvsRDIhYPT4V3G7+0ep\nXX2c\r\n=iPGg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICaroAtUiqF4+30v7N8uN4RHqaC3KNBSeRtKbA+JCmaVAiAN24MWzBd7eq+1245PR52w1mI7HqdPEm4quaWcNRVYTw=="}]},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/dynamic-form_3.2.4_1545112101149_0.1726520625912893"},"_hasShrinkwrap":false}},"time":{"created":"2018-12-11T07:12:12.177Z","1.0.0":"2018-12-11T07:12:12.547Z","modified":"2022-04-04T18:28:37.898Z","2.0.0":"2018-12-11T16:41:32.975Z","3.0.0":"2018-12-13T09:03:38.010Z","3.1.0":"2018-12-13T12:17:39.303Z","3.1.1":"2018-12-13T12:19:12.755Z","3.1.2":"2018-12-13T12:30:34.280Z","3.2.0":"2018-12-14T08:45:41.534Z","3.2.1":"2018-12-14T14:40:39.310Z","3.2.2":"2018-12-15T05:06:24.198Z","3.2.3":"2018-12-15T05:09:30.301Z","3.2.4":"2018-12-18T05:48:21.311Z"},"maintainers":[{"name":"bepasquet","email":"plescanopasquet@gmail.com"}],"description":"Dynamic Forms Web Component","homepage":"https://github.com/bepasquet/dynamic-form#readme","keywords":["web","web component","component","form","dynamic","dynamic form","html5","npm","package","bepasquet"],"repository":{"type":"git","url":"git+https://github.com/bepasquet/dynamic-form.git"},"bugs":{"url":"https://github.com/bepasquet/dynamic-form/issues"},"license":"MIT","readme":"# @bepasquet/dynamic-form\r\n\r\n[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/@bepasquet/dynamic-form)\r\n\r\n[![npm (scoped)](https://img.shields.io/npm/v/@bepasquet/dynamic-form.svg)](https://www.npmjs.com/package/@bepasquet/dynamic-form)\r\n\r\nDynamic form is a webcomponent that makes angular dynamic form approach available on vanilla js please feel free to open issues, sugestions and code improvements everything is welcome\r\n\r\n## Install\r\n\r\n```\r\n$ npm install @bepasquet/dynamic-form\r\n```\r\n\r\n## Usage\r\n\r\n```\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n    <title>Test</title>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n\r\n</head>\r\n<body>\r\n    <script src=\"node_modules/@bepasquet/dynamic-form/dist/index.js\">\r\n\r\n    <dynamic-form>\r\n      <link\r\n        rel=\"stylesheet\"\r\n        href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n      />\r\n      <link\r\n        rel=\"stylesheet\"\r\n        href=\"https://code.getmdl.io/1.3.0/material.indigo-pink.min.css\"\r\n      />\r\n      <script defer src=\"https://code.getmdl.io/1.3.0/material.min.js\"></script>\r\n    </dynamic-form>\r\n\r\n    <script>\r\n      const questions = [\r\n        {\r\n          key: \"name\",\r\n          label: \"Name\",\r\n          value: null,\r\n          validators: [\r\n            { name: \"required\" },\r\n            { name: \"minLength\", argument: 2 }\r\n          ],\r\n          control: \"textbox\",\r\n          type: \"text\",\r\n          errors: [\r\n            {\r\n              name: \"required\",\r\n              message: \"Please enter a name\"\r\n            }\r\n          ]\r\n        }\r\n      ];\r\n      const configuration = {\r\n        styleType: \"material\",\r\n        buttonText: \"Send\"\r\n      };\r\n      let dynamicForm = document.querySelector(\"dynamic-form\");\r\n      dynamicForm.setAttribute(\"configuration\", JSON.stringify(configuration));\r\n      dynamicForm.setAttribute(\"questions\", JSON.stringify(questions));\r\n      dynamicForm.addEventListener(\"getFormValue\", ev =>\r\n        console.log(ev.detail)\r\n      );\r\n    </script>\r\n</body>\r\n</html>\r\n```\r\n\r\n## Documnetation\r\n### Questions\r\nThe question input of the dynamic-form is a json string containing an array of questions for example:\r\n\r\n```\r\n[\r\n  {\r\n    key: \"name\",\r\n    label: \"Name\",\r\n    value: null,\r\n    validators: [\r\n      { name: \"required\" },\r\n      { name: \"minLength\", argument: 2 }\r\n    ],\r\n    control: \"textbox\",\r\n    type: \"text\",\r\n    errors: [\r\n      {\r\n        name: \"required\",\r\n        message: \"Please enter a name\"\r\n      }\r\n    ]\r\n  },\r\n  {\r\n    key: \"email\",\r\n    label: \"Email\",\r\n    value: null,\r\n    validators: [{ name: \"required\" }, { name: \"email\" }],\r\n    control: \"textbox\",\r\n    type: \"text\",\r\n    errors: [\r\n      {\r\n        name: \"required\",\r\n        message: \"Please enter a email\"\r\n      },\r\n      {\r\n        name: \"email\",\r\n        message: \"Please enter a valid email\"\r\n      }\r\n    ]\r\n  }\r\n]\r\n```\r\n\r\nThe questions of type checkbox can contain options to work as a form array if no options are passed will be a boolean value on checked\r\n\r\nradio buttons and selectbox must contain options.\r\n\r\nOptions keys are te value you want to get from the form and the value is the text to display\r\n\r\nthe question object will have an interface as describe at the bottom\r\n### Error handling\r\nError are set with name and message in case of using default validation from the validators set at the botton error will follow\r\n\r\n```\r\n{\r\n  name: \"required\",\r\n  message: \"Please enter this field\"\r\n}\r\n{\r\n  name: \"min\",\r\n  message: \"The minimun value is 12\"\r\n}\r\n```\r\n\r\nWith custom validator see full example\r\n### Validators\r\n\r\n```\r\n  { name: \"min\", argument: number }\r\n  { name: \"max\", argument: number }\r\n  { name: \"required\", argument: null }\r\n  { name: \"email\", argument: null }\r\n  { name: \"minLength\", argument:  number }\r\n  { name: \"maxLength\", argument:  number }\r\n  { name: \"pattern\", argument: string }\r\n```\r\n\r\nalso custom validators are posible a custom validator is a function that evaluates to a null value if there is there no error or to an object with a key containing the error name set to true\r\nfor example\r\n\r\n```\r\nfunction addressValidator(control) {\r\n    return !!control.get(\"street\").value || !!control.get(\"area\").value\r\n      ? null\r\n      : { invalidAddress: true };\r\n  }\r\n   window[\"addressValidator\"] = addressValidator;\r\n```\r\n\r\ncontrol is a abstract control from angular if you need more information follow the angular docs\r\nyou need to atach the function to the window object so the component can read it and set the definition to true in the validation check the full example\r\n\r\n### Configuration\r\nConfigure the styles and the submit button text\r\n\r\n```\r\n<dynamic-form configuration='{\"styleType\": \"material\", \"buttonText\": \"Send\"}'></dynamic-form>\r\n```\r\n\r\n## Style type\r\nYou can style the form with crafted styles by default with no styles or use either material or bootstrap\r\n## Interfaces\r\n#### Configuration\r\n\r\n```\r\nexport interface Configuration {\r\n  styleType?: StyleType;\r\n  buttonText?: string;\r\n}\r\n```\r\n\r\n#### Form Question\r\n\r\n```\r\nimport { QuestionValidator } from \"./question-validator.interface\";\r\nimport { QuestionOptions } from \"./question-options.interface\";\r\nimport { QuestionError } from \"./question-error.interface\";\r\n\r\ntype control =\r\n  | \"textbox\"\r\n  | \"selectbox\"\r\n  | \"checkbox\"\r\n  | \"textarea\"\r\n  | \"onlyInt\"\r\n  | \"group\";\r\ntype type = \"text\" | \"email\" | \"password\" | \"number\";\r\nexport interface FormQuestion<T> {\r\n  value: T;\r\n  key: string;\r\n  label: string;\r\n  control: control;\r\n  type?: type;\r\n  options?: QuestionOptions[];\r\n  validators?: QuestionValidator[];\r\n  errors: QuestionError[];\r\n  group: FormQuestion<T>[];\r\n}\r\n\r\n```\r\n\r\n#### Question Options\r\n\r\n```\r\nexport interface QuestionOptions {\r\n  key: string;\r\n  value: string;\r\n}\r\n```\r\n\r\n#### Question Validators\r\n\r\n```\r\nexport interface QuestionValidator {\r\n  name: string;\r\n  argument?: any;\r\n  definition?: boolean;\r\n}\r\n```\r\n\r\n#### Question Error\r\n\r\n```\r\nexport interface QuestionError {\r\n  name: string;\r\n  message: string;\r\n}\r\n```\r\n\r\n## Types\r\n#### StyleType\r\n\r\n```\r\nexport type StyleType = \"material\" | \"bootstrap\" | \"default\";\r\n```\r\n\r\n## Examples\r\n### Material Design\r\n\r\n```\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n    <title>Test</title>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n\r\n</head>\r\n<body>\r\n    <script src=\"node_modules/@bepasquet/dynamic-form/dist/index.js\">\r\n\r\n   <dynamic-form  >\r\n    <link\r\n        rel=\"stylesheet\"\r\n        href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n    />\r\n    <link\r\n        rel=\"stylesheet\"\r\n        href=\"https://code.getmdl.io/1.3.0/material.indigo-pink.min.css\"\r\n    />\r\n        <script defer src=\"https://code.getmdl.io/1.3.0/material.min.js\"></script>\r\n    </dynamic-form>\r\n\r\n    <script>\r\n      const questions = [\r\n        {\r\n          key: \"name\",\r\n          label: \"Name\",\r\n          value: null,\r\n          validators: [\r\n            { name: \"required\" },\r\n            { name: \"minLength\", argument: 2 }\r\n          ],\r\n          control: \"textbox\",\r\n          type: \"text\",\r\n          errors: [\r\n            {\r\n              name: \"required\",\r\n              message: \"Please enter a name\"\r\n            }\r\n          ]\r\n        }\r\n      ];\r\n      const configuration = {\r\n        styleType: \"material\",\r\n        buttonText: \"Send\"\r\n      };\r\n      let dynamicForm = document.querySelector(\"dynamic-form\");\r\n      dynamicForm.setAttribute(\"configuration\", JSON.stringify(configuration));\r\n      dynamicForm.setAttribute(\"questions\", JSON.stringify(questions));\r\n      dynamicForm.addEventListener(\"getFormValue\", ev =>\r\n        console.log(ev.detail)\r\n      );\r\n    </script>\r\n</body>\r\n</html>\r\n\r\n```\r\n\r\n### Bootstrap\r\n\r\n```\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n    <title>Test</title>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n\r\n</head>\r\n<body>\r\n    <script src=\"node_modules/@bepasquet/dynamic-form/dist/index.js\">\r\n\r\n   <dynamic-form  >\r\n        <link\r\n        rel=\"stylesheet\"\r\n        href=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css\"\r\n        integrity=\"sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm\"\r\n        crossorigin=\"anonymous\"\r\n        />\r\n\r\n        <script\r\n        src=\"https://code.jquery.com/jquery-3.2.1.slim.min.js\"\r\n        integrity=\"sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN\"\r\n        crossorigin=\"anonymous\"\r\n        ></script>\r\n        <script\r\n        src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js\"\r\n        integrity=\"sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q\"\r\n        crossorigin=\"anonymous\"\r\n        ></script>\r\n        <script\r\n        src=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js\"\r\n        integrity=\"sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl\"\r\n        crossorigin=\"anonymous\"\r\n        ></script>\r\n    </dynamic-form>\r\n\r\n     <script>\r\n      const questions = [\r\n        {\r\n          key: \"name\",\r\n          label: \"Name\",\r\n          value: null,\r\n          validators: [\r\n            { name: \"required\" },\r\n            { name: \"minLength\", argument: 2 }\r\n          ],\r\n          control: \"textbox\",\r\n          type: \"text\",\r\n          errors: [\r\n            {\r\n              name: \"required\",\r\n              message: \"Please enter a name\"\r\n            }\r\n          ]\r\n        }\r\n      ];\r\n      const configuration = {\r\n        styleType: \"material\",\r\n        buttonText: \"Send\"\r\n      };\r\n      let dynamicForm = document.querySelector(\"dynamic-form\");\r\n      dynamicForm.setAttribute(\"configuration\", JSON.stringify(configuration));\r\n      dynamicForm.setAttribute(\"questions\", JSON.stringify(questions));\r\n      dynamicForm.addEventListener(\"getFormValue\", ev =>\r\n        console.log(ev.detail)\r\n      );\r\n    </script>\r\n</body>\r\n</html>\r\n```\r\n\r\n### Full example using material design\r\n\r\n```\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n    <meta charset=\"utf-8\" />\r\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n    <title>Test</title>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n\r\n</head>\r\n<body>\r\n    <script src=\"node_modules/@bepasquet/dynamic-form/dist/index.js\">\r\n\r\n  <dynamic-form  >\r\n       <link\r\n        rel=\"stylesheet\"\r\n        href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n    />\r\n    <link\r\n        rel=\"stylesheet\"\r\n        href=\"https://code.getmdl.io/1.3.0/material.indigo-pink.min.css\"\r\n    />\r\n    <script defer src=\"https://code.getmdl.io/1.3.0/material.min.js\"></script>\r\n  </dynamic-form>\r\n\r\n    <script>\r\n      function addressValidator(control) {\r\n        return !!control.get(\"street\").value || !!control.get(\"area\").value\r\n          ? null\r\n          : { invalidAddress: true };\r\n      }\r\n      function passwordValidator(control) {\r\n        return control.get(\"password\").value ===\r\n          control.get(\"confirmPassword\").value\r\n          ? null\r\n          : { invalidPassword: true };\r\n      }\r\n      window[\"addressValidator\"] = addressValidator;\r\n      window[\"passwordValidator\"] = passwordValidator;\r\n      const questions = [\r\n        {\r\n          key: \"name\",\r\n          label: \"Name\",\r\n          value: null,\r\n          validators: [\r\n            { name: \"required\" },\r\n            { name: \"minLength\", argument: 2 }\r\n          ],\r\n          control: \"textbox\",\r\n          type: \"text\",\r\n          errors: [\r\n            {\r\n              name: \"required\",\r\n              message: \"Please enter a name\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          key: \"email\",\r\n          label: \"Email\",\r\n          value: null,\r\n          validators: [{ name: \"required\" }, { name: \"email\" }],\r\n          control: \"textbox\",\r\n          type: \"text\",\r\n          errors: [\r\n            {\r\n              name: \"required\",\r\n              message: \"Please enter a email\"\r\n            },\r\n            {\r\n              name: \"email\",\r\n              message: \"Please enter a valid email\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          key: \"phone\",\r\n          label: \"Phone\",\r\n          value: null,\r\n          control: \"onlyInt\",\r\n          type: \"number\"\r\n        },\r\n        {\r\n          key: \"note\",\r\n          label: \"Note\",\r\n          value: null,\r\n          control: \"textarea\",\r\n          type: \"text\"\r\n        },\r\n        {\r\n          key: \"isMarried\",\r\n          label: \"Married\",\r\n          value: null,\r\n          control: \"checkbox\",\r\n          options: []\r\n        },\r\n        {\r\n          key: \"gender\",\r\n          label: \"Gender\",\r\n          value: null,\r\n          control: \"radio\",\r\n          options: [{ key: \"m\", value: \"Male\" }, { key: \"f\", value: \"Female\" }]\r\n        },\r\n        {\r\n          key: \"studies\",\r\n          label: \"Studies\",\r\n          value: null,\r\n          control: \"checkbox\",\r\n          options: [\r\n            { key: \"primary\", value: \"Primary\" },\r\n            { key: \"highSchool\", value: \"High School\" },\r\n            { key: \"tertiary\", value: \"Tertiary\" },\r\n            { key: \"university\", value: \"University\" }\r\n          ]\r\n        },\r\n        {\r\n          key: \"idType\",\r\n          label: \"Indetification\",\r\n          value: null,\r\n          control: \"selectbox\",\r\n          validators: [{ name: \"required\" }],\r\n          errors: [\r\n            {\r\n              name: \"required\",\r\n              message: \"Please enter an Identification\"\r\n            }\r\n          ],\r\n          options: [\r\n            { key: 1, value: \"Passport\" },\r\n            { key: 2, value: \"Driver Licence\" }\r\n          ]\r\n        },\r\n        {\r\n          key: \"address\",\r\n          control: \"group\",\r\n          validators: [\r\n            {\r\n              name: \"addressValidator\",\r\n              definition: true\r\n            }\r\n          ],\r\n          errors: [\r\n            {\r\n              name: \"invalidAddress\",\r\n              message: \"Please enter at least one address\"\r\n            }\r\n          ],\r\n          group: [\r\n            {\r\n              key: \"street\",\r\n              label: \"Street\",\r\n              value: null,\r\n              control: \"textbox\",\r\n              type: \"text\"\r\n            },\r\n            {\r\n              key: \"area\",\r\n              label: \"Area\",\r\n              value: null,\r\n              control: \"textbox\",\r\n              type: \"text\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          key: \"credentials\",\r\n          control: \"group\",\r\n\r\n          validators: [\r\n            {\r\n              name: \"passwordValidator\",\r\n              definition: true\r\n            }\r\n          ],\r\n          errors: [\r\n            {\r\n              name: \"invalidPassword\",\r\n              message: \"Password and Confirm Password are not the same\"\r\n            }\r\n          ],\r\n          group: [\r\n            {\r\n              key: \"password\",\r\n              label: \"Password\",\r\n              value: null,\r\n              control: \"textbox\",\r\n              type: \"password\",\r\n              validators: [{ name: \"required\" }],\r\n              errors: [\r\n                {\r\n                  name: \"required\",\r\n                  message: \"Please enter a passowrd\"\r\n                }\r\n              ]\r\n            },\r\n            {\r\n              key: \"confirmPassword\",\r\n              label: \"Confirm Password\",\r\n              value: null,\r\n              control: \"textbox\",\r\n              type: \"password\",\r\n              validators: [{ name: \"required\" }],\r\n              errors: [\r\n                {\r\n                  name: \"required\",\r\n                  message: \"Please confirm your password\"\r\n                }\r\n              ]\r\n            }\r\n          ]\r\n        }\r\n      ];\r\n      const configuration = {\r\n        styleType: \"material\",\r\n        buttonText: \"Send\"\r\n      };\r\n      let dynamicForm = document.querySelector(\"dynamic-form\");\r\n      dynamicForm.setAttribute(\"configuration\", JSON.stringify(configuration));\r\n      dynamicForm.setAttribute(\"questions\", JSON.stringify(questions));\r\n      dynamicForm.addEventListener(\"getFormValue\", ev =>\r\n        console.log(ev.detail)\r\n      );\r\n    </script>\r\n</body>\r\n</html>\r\n```\r\n\r\n## Advanced\r\nDynamic forms has the ability to pass inner groups with crafted validation\r\nfor that you have to define a validator function and attached to the window object and pass the name on the group validator array and the definition set to true here is an example\r\n\r\n```\r\nfunction addressValidator(control) {\r\n    return !!control.get(\"street\").value || !!control.get(\"area\").value\r\n      ? null\r\n      : { invalidAddress: true };\r\n  }\r\nwindow[\"addressValidator\"] = addressValidator;\r\nconst questions = [{\r\n  key: \"address\",\r\n  control: \"group\",\r\n  validators: [\r\n    {\r\n      name: \"addressValidator\",\r\n      definition: true\r\n    }\r\n  ],\r\n  group: [\r\n    {\r\n      key: \"street\",\r\n      label: \"Street\",\r\n      value: null,\r\n      control: \"textbox\",\r\n      type: \"text\"\r\n    },\r\n    {\r\n      key: \"area\",\r\n      label: \"Area\",\r\n      value: null,\r\n      control: \"textbox\",\r\n      type: \"text\"\r\n    }\r\n  ]\r\n}];\r\n```\r\n\r\n## Contributing\r\n\r\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\r\n\r\nPlease make sure to update tests as appropriate.\r\n\r\n## License\r\n\r\n[MIT](https://choosealicense.com/licenses/mit/)\r\n","readmeFilename":"README.md"}