{"_id":"@nqood/nq-primeng-form","_rev":"28-a32c76b4d1980a32c1c73c7ca00b788d","name":"@nqood/nq-primeng-form","dist-tags":{"latest":"1.0.23"},"versions":{"1.0.8":{"name":"@nqood/nq-primeng-form","version":"1.0.8","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.8","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"9ac7299552f162551ff5bdcb4dad28c65240a340","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.8.tgz","fileCount":6,"integrity":"sha512-/QVt9Wyai5UFKEItt4Lo4z/DoOr+6jBQxxBLBUWKJp/mOlIYBBs24tC1/3upPNW3TmP1wqrjw22+bAclD5KG5g==","signatures":[{"sig":"MEUCIQC/FCHLDz1lo55BqPYlOVqFpUu8BZs77qGkiYG4ktyu1AIgOKSI1FPtHNnAqqANyz7ViVhhEf2RCvyma4gS5lcVWgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322247},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"e1f7be0e58fde394cc559d2ad8abee37a37ff412","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.8_1772489117394_0.6408416831825223","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@nqood/nq-primeng-form","version":"1.0.9","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.9","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"01badb3b9c532386768b4228be900eb567d28823","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.9.tgz","fileCount":6,"integrity":"sha512-yDhYjZePamXpVcCv2TMpmzD3+LRGohBOVlB5x5HjVkDb/kLHpLD0dtrPIyh0xGTUaH+6Ibuo8H996NIWmmgB0g==","signatures":[{"sig":"MEYCIQCpqEnX2dLdw1s7lPsJ/FMbqyui7UoXmqIEzGZ6RFmpwgIhAPDS4TPVlbnNlOp28dS0f4y0fVcgoTh4lom1+mjPSNyh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322689},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"2470ae9789c979637cda49580568cd4ebf567bcf","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.9_1772571123540_0.9915550921098202","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@nqood/nq-primeng-form","version":"1.0.10","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.10","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"84fb1dcc12df2fd48958efc0c9c1f462cc4e4907","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.10.tgz","fileCount":6,"integrity":"sha512-HJPMYw52zX74GvH4ykrdOgMcAO430tsW5EPQ5818mug1pRDn5N7DvFt0PLXYxMxJy/qSszD7R33P7SvLtaw+xg==","signatures":[{"sig":"MEUCIGgoNdaGqV2qZizWxoyvIrsYh7MBt7dg3EcGwERzGrGpAiEA/FEfnA5ozHl2MxMHD+TjOSnoEzRsGAyOPkfcmmKhiAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322648},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"766e3d6cb9f582d5762ed7ca251bacbb69c20e5b","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.10_1772572347095_0.6813174443771595","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@nqood/nq-primeng-form","version":"1.0.11","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.11","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"ae0a772187b159ac446d5d5364d9f23ab8c5b65e","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.11.tgz","fileCount":6,"integrity":"sha512-qhEAdd5DOLD545YZdJd0RaIVKmEOFvxTbZGFv52qjMcRhb5wp57kGcFlV+tjk6Rb8XRV8ZqozkBL2FcJZleadw==","signatures":[{"sig":"MEQCIBsw4ZxdLrNZn8ls2hDudN+fo9fBN9l/bK6K6yiVMdFxAiBaJ90fhV4iEHwXA4gDzrnEB69Ez14oQWuU00x87b65cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322648},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"766e3d6cb9f582d5762ed7ca251bacbb69c20e5b","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.11_1772572983269_0.4281692065490621","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@nqood/nq-primeng-form","version":"1.0.12","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.12","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"235497996549ee01f30f0d7ec769a8d050a89e0a","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.12.tgz","fileCount":6,"integrity":"sha512-b1AS4j2IYORr4e2Mz1rBTCDSpsfd0+BNKm6ZRVTbXipx0aAjZTgZZPhBZ5qclOHhxTsl6AYs+GkuAyYi9TQgHw==","signatures":[{"sig":"MEUCIG1EW0sihflWWR6HGBTvrpix0UWF1rj9wiMfdNbfOz6kAiEA6OzijGI6Il1o5pHeZMOZE8KR3g9oOspiaPKMzJ83eT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324787},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"8ac41b0a3061dc599ccfea919c6918057bd7c9af","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.12_1772575552549_0.48886246902674113","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@nqood/nq-primeng-form","version":"1.0.13","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.13","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"3d58dd7ed90bc66319d48ded8f1696a39d97fa53","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.13.tgz","fileCount":6,"integrity":"sha512-lLr3DSwP4fUEtNsGGD2+vGfOyAp2oiFdoyeGKSHsqPItJwcuuyKqUC2v04GfDV90R7mwEngr5unH4SDvTybiMg==","signatures":[{"sig":"MEQCIEoLRpZJNts88mEDfFtCyvGREYzsyprNOLkk21m/yVLXAiBQ2oqlY5VMwrt4VTUIrFbNQXr+I2URAqd+eZCcDZfMUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325100},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"77df4c3cb9f7ede27a2367cfac9db50b04d05317","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.13_1772627934453_0.3556609589962034","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@nqood/nq-primeng-form","version":"1.0.14","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.14","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"298c00fa01de426fbc5a06ea15c8a67f91ab257c","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.14.tgz","fileCount":6,"integrity":"sha512-i1PrKxfuoVPdPnVG5x4aWYkAav4Dc/djjIWNNNvdkDI6DhyNP1PTNV+TjTLZt/PWWoATF1HEBpmGpstLmUv8CA==","signatures":[{"sig":"MEYCIQDPR2r+SOg9duiBRzRtGeG1vguDygnRhT6RH+bLlHK5EwIhAKJL5SnVJpdriTJ6GeVN6D+D3zQmcy+SrWUXgsf9Bd5p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325040},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"77df4c3cb9f7ede27a2367cfac9db50b04d05317","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.14_1772628238268_0.41152483676969376","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@nqood/nq-primeng-form","version":"1.0.15","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.15","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"b2b7f86349a979a5d7e862567cba9af63e56e464","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.15.tgz","fileCount":6,"integrity":"sha512-uWmpSbS0sH3Q84pfaECVzMwLmN3Fngwx5F1YDRHlzpYjWCtPz9a+vLMdbsXne/0prjeGPLzRxCunIT/+KJijtg==","signatures":[{"sig":"MEQCIG3V1FPCerKDPiB9nHxrKglWSytHSvgMjROoMTKCD3fKAiA3k5gXwWOo2wp7O5jVuYejX7oJi8yB5rZ/qYLNqjrKqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325845},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"ab2c5785a82524178c19f5e30909a338739b1e87","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.15_1772632385867_0.38662091510087393","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@nqood/nq-primeng-form","version":"1.0.16","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.16","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"099795aeb50ebd09042b601c1fe6a3e939a213f9","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.16.tgz","fileCount":6,"integrity":"sha512-f2EGMw7uwMziHTjThA9FkHou3cWc2raDbPGC0VRd0ApSq7qYp5DyxWM5YPTH0l1Y7Rt0QX/hPeooztz8FxYnfw==","signatures":[{"sig":"MEUCIQDF8gquac4OAKtiKpKUbxsdrZXDO4TPJe+A3B+jzhwz3gIgdZay5w7AMcUFhnFU8tmAPMaI76gA9rDmEHvt4qN4870=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":325778},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"44a200129ab10fe3aeb695c195e83419d1480243","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.16_1772658586322_0.08398637063375225","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@nqood/nq-primeng-form","version":"1.0.17","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.17","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"d6d0e84fe0807aca109bb7b63c9d2f5a6cb7e5a8","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.17.tgz","fileCount":6,"integrity":"sha512-hY6hrflX/kQ20DdLZzNFjKp6WvtqlPJaLuxVEfDvxSetfhBzjlRoLzYqyMFu+oNfqiPTIKZKx2Tze/SP+14HbQ==","signatures":[{"sig":"MEYCIQCOuWHNQ83n4mOYj+w5bk0r14PWLtqQDKBHbWrUf0s7HQIhAKSt/D8tbuLYryEgTWCdhbgMfw3AO2TVzlEQ61kO8tPb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332166},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"6967ec7e1762d380a02e143642b0e3a41915acf2","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.17_1772661756773_0.4751242711621857","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@nqood/nq-primeng-form","version":"1.0.18","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.18","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"127fb8a0486573a6db9ce1df3e2cd2d13d8c5b84","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.18.tgz","fileCount":6,"integrity":"sha512-MYyyc/7bUvgh7N9Bjadbw0yt0HaLdZnt3j6/mEyZ8G94wQ/OKukIJfWgeHfj8kBG8uyrUVDgOsYBp1JjFhgvwQ==","signatures":[{"sig":"MEUCIQDiq3CWI0j06Qvojk0Xld+ChjfAUVPgQNMRZipmy/ihYAIgVQUmom+bk8ovk9H2Rs1n7Fmdhtuqf5aSc+p+DpbA64E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332227},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"e02b3685f6ab1b4fefc027bed3ff3891fc6f425f","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.18_1772662441884_0.3168654608218271","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@nqood/nq-primeng-form","version":"1.0.19","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.19","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"e1b7536c9c1b7d1276ea3b2ffe053b531d87ff9c","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.19.tgz","fileCount":6,"integrity":"sha512-UZLMetB9V+VMjixDGGqaAS4Yr3txhgFN158InbX13xNqFkHHni6zmq9tVQuw8fnhYsu4R8QYdkFEIHpetxN1dw==","signatures":[{"sig":"MEUCIA6933zpeHj6+rTB+dqplXKrP44Vr47T4TWX9LCbNNnYAiEAnlAjcBaybynZOxuOEZ6nbMhO3Jqna7TfxBZbZkQyJNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332986},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"e02b3685f6ab1b4fefc027bed3ff3891fc6f425f","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.19_1772663348124_0.059361023626387954","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@nqood/nq-primeng-form","version":"1.0.20","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.20","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"d1ab10c89db2547542028da889a1fa8c110e66d0","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.20.tgz","fileCount":6,"integrity":"sha512-Fihw1u/Gk4rGgNu96RSqOuuBzjw69UuGSH2tG/R8YB8RsfIbfc4hjqGyLSbysUZxNKF2qCAPgouNRVJgJoReFQ==","signatures":[{"sig":"MEUCIQDuXS5oik4yhUQjN0WYMcmysM4l9FHdYS8RADvC854EwAIge7ObXNU0tdIlrljDiI3JnAOwU+zAiHA8JOIVfrMhZ0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332894},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"49a3e55fd821929004acda8306de7e34cf6b61e0","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.20_1773136950153_0.31966038741481917","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@nqood/nq-primeng-form","version":"1.0.21","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.21","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"2544d4c585b9635c49b1b81d93455ca482c1d423","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.21.tgz","fileCount":6,"integrity":"sha512-OjzqALlmOBgn1llJE9ZtP17sbsWLsDCRAtaQ5l9C1sBJuPq9sw00YNFS1eawaiyxqHwXNSyXkmxSzEzrg2Siig==","signatures":[{"sig":"MEQCIGAcRP9tGKxCNUqlIwhKM1zKwuGmhqIJPgQ7auRmSUadAiBqJsy5ul24FeXSzvmdW8gT2jWM/CNzNTN0ruidEQOjAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332937},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"3410bfe3ecb6ca88483c310c20e5618cffde4418","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.21_1774439400633_0.9059019487523869","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@nqood/nq-primeng-form","version":"1.0.22","license":"MIT","_id":"@nqood/nq-primeng-form@1.0.22","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"dist":{"shasum":"2193f93a9bec4d3e789bbce2889a6094092d7ce4","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.22.tgz","fileCount":6,"integrity":"sha512-nkIS083PCeanPJS/9emMrszzS7KWSwD1ixhHajoR0PWMv5RIMIATX1O0tOIV5fTIIqRddXFS1Lf+CZ9aDpwSMA==","signatures":[{"sig":"MEUCIAMU/DormZgReOF4vUe8w0HHVTD21L5KBsrRLFUppyLcAiEA/OO6NkS0A8plNMi5JAejJ3jO2FLjyN+SgV6Zj3T9IXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":333273},"module":"fesm2022/nqood-nq-primeng-form.mjs","exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"3410bfe3ecb6ca88483c310c20e5618cffde4418","typings":"types/nqood-nq-primeng-form.d.ts","_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"_npmVersion":"11.6.2","description":"Dynamic PrimeNG form library for Angular","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","primeng":"^21.0.0","primeicons":"^7.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","@angular/common":"^21.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nq-primeng-form_1.0.22_1774440415866_0.00021613138265785814","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@nqood/nq-primeng-form","version":"1.0.23","description":"Dynamic PrimeNG form library for Angular","license":"MIT","peerDependencies":{"@angular/common":"^21.0.0","@angular/core":"^21.0.0","@angular/forms":"^21.0.0","primeicons":"^7.0.0","primeng":"^21.0.0","rxjs":"~7.8.0"},"dependencies":{"tslib":"^2.3.0"},"sideEffects":false,"exports":{".":{"sass":"./style.scss","types":"./types/nqood-nq-primeng-form.d.ts","default":"./fesm2022/nqood-nq-primeng-form.mjs"},"./package.json":{"default":"./package.json"}},"publishConfig":{"access":"public"},"module":"fesm2022/nqood-nq-primeng-form.mjs","typings":"types/nqood-nq-primeng-form.d.ts","gitHead":"a09929eeec126d456a154eb0fca2eb6b63cf4a38","_id":"@nqood/nq-primeng-form@1.0.23","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-i2bhLvX9BsOpbmnW72E1etLbbBsRBeFBXBPFOcEHE+d5oxPE7Gz35ulxKWi4yI0m+C+IiSUw8k/jcFdafjRZDw==","shasum":"57a0d9bfa415c6295cad7fd18e06b77f2835a06d","tarball":"https://registry.npmjs.org/@nqood/nq-primeng-form/-/nq-primeng-form-1.0.23.tgz","fileCount":6,"unpackedSize":333091,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAsYhX+CvDuLJdsd0tZSwYe4Ob5Ls+nGs8wi+ljyGAnvAiEAsdBnwIJiEslxQnQANK/JxT4Y8a3vLC9BCI3Hc/SUoHs="}]},"_npmUser":{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"},"directories":{},"maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nq-primeng-form_1.0.23_1774521196727_0.6421642478256151"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-02T22:05:17.295Z","modified":"2026-03-26T10:33:16.994Z","1.0.0":"2026-02-26T22:40:56.941Z","1.0.1":"2026-02-26T22:47:46.555Z","1.0.2":"2026-02-26T22:55:34.713Z","1.0.3":"2026-02-26T23:03:50.499Z","1.0.4":"2026-03-02T15:45:24.293Z","1.0.5":"2026-03-02T20:27:51.804Z","1.0.6":"2026-03-02T21:47:02.351Z","1.0.7":"2026-03-02T21:57:54.901Z","1.0.8":"2026-03-02T22:05:17.527Z","1.0.9":"2026-03-03T20:52:03.753Z","1.0.10":"2026-03-03T21:12:27.238Z","1.0.11":"2026-03-03T21:23:03.432Z","1.0.12":"2026-03-03T22:05:52.704Z","1.0.13":"2026-03-04T12:38:54.614Z","1.0.14":"2026-03-04T12:43:58.434Z","1.0.15":"2026-03-04T13:53:06.001Z","1.0.16":"2026-03-04T21:09:46.469Z","1.0.17":"2026-03-04T22:02:36.912Z","1.0.18":"2026-03-04T22:14:02.036Z","1.0.19":"2026-03-04T22:29:08.280Z","1.0.20":"2026-03-10T10:02:30.325Z","1.0.21":"2026-03-25T11:50:00.792Z","1.0.22":"2026-03-25T12:06:56.032Z","1.0.23":"2026-03-26T10:33:16.873Z"},"license":"MIT","description":"Dynamic PrimeNG form library for Angular","maintainers":[{"name":"magdyelsayyadnq","email":"m.elsayad@noqoodholding.com"}],"readme":"# @nqood/nq-primeng-form\r\n\r\nDynamic, type-safe form builder for Angular using PrimeNG. Define forms with configuration objects; get full TypeScript support, validation, and automatic rendering.\r\n\r\n## Table of Contents\r\n- [Features](#features)\r\n- [Installation](#installation)\r\n- [Styles & Grid System](#styles--grid-system)\r\n- [Changelog](#changelog)\r\n- [Dynamic Form](#dynamic-form)\r\n- [Core API Reference](#core-api-reference)\r\n  - [IFormGroup](#iformgroup)\r\n  - [IFormControl](#iformcontrol)\r\n  - [IFormArray](#iformarray)\r\n  - [IFormInputGroup](#iforminputgroup)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Custom Templates](#custom-templates)\r\n  - [Dynamic Dependencies (updateOnChange)](#dynamic-dependencies-updateonchange)\r\n  - [View-Only Mode](#view-only-mode)\r\n- [Component API](#component-api)\r\n- [License](#license)\r\n\r\n---\r\n\r\n## Features\r\n\r\n- **Type-safe** – Full TypeScript support for form values and controls.\r\n- **Declarative** – Define forms as objects, let the component handle the rendering.\r\n- **PrimeNG Integrated** – Uses PrimeNG components for all inputs.\r\n- **Validation** – Built-in support for Angular validators with automatic error message display.\r\n- **Responsive Grid** – Built-in grid system (Bootstrap/Tailwind compatible).\r\n- **Nested Forms** – Support for nested `IFormGroup`, `IFormArray`, and `IFormInputGroup`.\r\n\r\n---\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @nqood/nq-primeng-form\r\n```\r\n\r\nEnsure peer dependencies are installed:\r\n```bash\r\nnpm install @angular/forms primeng primeicons\r\n```\r\n\r\n---\r\n\r\n## Styles & Grid System\r\n\r\nThe library uses **SCSS** for its internal grid and component styling.\r\n\r\n### 1. Import Styles\r\nImport in your global `styles.scss`:\r\n```scss\r\n@import \"@nqood/nq-primeng-form/style.scss\";\r\n```\r\n\r\n### 2. The Internal Grid\r\nIf you don't provide a `formClass`, the component uses its own internal grid system:\r\n- **Wrapper Class:** `dynamic-form-grid`\r\n- **Default Columns:** 1 on mobile, 2 on tablet (`md`), 3 on desktop (`lg`).\r\n- **Control Classes:** Use `col-md-6`, `col-lg-4`, etc., in the control config to define widths.\r\n\r\n**Example with Bootstrap/Internal Grid:**\r\n```typescript\r\nnew IFormControl({\r\n  type: FormControlType.Text,\r\n  label: 'Name',\r\n  class: 'col-md-6' // Occupies 50% width on medium screens\r\n})\r\n```\r\n\r\n---\r\n\r\n## Changelog\r\n\r\nSee `CHANGELOG.md`.\r\n\r\n---\r\n\r\n## Dynamic Form\r\n\r\nThe **dynamic form** is the main entry point: the `nq-primeng-form` component renders a form from an `IFormGroup` configuration. You define the structure (controls, groups, arrays) and options in code; the component handles layout, validation display, and two-way binding.\r\n\r\n### Basic usage\r\n\r\n1. Build a form model with `IFormGroup`, `IFormControl`, and optionally `IFormArray` or `IFormInputGroup` (see [Core API Reference](#core-api-reference)).\r\n2. Bind the model to the component with the `form` input.\r\n3. Optionally set `formClass`, `showLabels`, `layout`, `viewOnly`, `loading`, or `useIftaLabel`.\r\n\r\n```typescript\r\nimport { IFormGroup, IFormControl } from '@nqood/nq-primeng-form';\r\nimport { FormControlType } from '@nqood/nq-primeng-form';\r\nimport { Validators } from '@angular/forms';\r\n\r\nconst form = new IFormGroup({\r\n  name: new IFormControl({\r\n    type: FormControlType.Text,\r\n    label: 'Name',\r\n    placeholder: 'Enter name',\r\n    validators: [Validators.required],\r\n  }),\r\n  email: new IFormControl({\r\n    type: FormControlType.Text,\r\n    label: 'Email',\r\n    validators: [Validators.required, Validators.email],\r\n  }),\r\n});\r\n```\r\n\r\n```html\r\n<nq-primeng-form\r\n  [form]=\"form\"\r\n  [formClass]=\"'row g-3'\"\r\n  [showLabels]=\"true\"\r\n  [layout]=\"'vertical'\"\r\n  [viewOnly]=\"false\"\r\n  [loading]=\"loading()\"\r\n  [useIftaLabel]=\"false\"\r\n></nq-primeng-form>\r\n```\r\n\r\nTo get values or validate, use the form instance:\r\n\r\n```typescript\r\nconst raw = form.getRawValue();\r\nconst { isValid, message } = form.validateForm();\r\nform.patchValue({ name: 'Updated' });\r\n```\r\n\r\n### Dynamic form component options\r\n\r\n| Input | Type | Default | Description |\r\n|-------|------|---------|-------------|\r\n| `form` | `IFormGroup` | (required) | The form model instance. |\r\n| `formClass` | `string` | `'row g-3'` | CSS class for the form wrapper (e.g. grid). |\r\n| `showLabels` | `boolean` | `true` | Show labels for all controls. |\r\n| `layout` | `'horizontal' \\| 'vertical'` | `'vertical'` | Label/control layout. |\r\n| `viewOnly` | `boolean` | `false` | Renders the whole form as read-only (values as text). |\r\n| `loading` | `boolean` | `false` | Shows a form-wide loading overlay. |\r\n| `useIftaLabel` | `boolean` | `false` | Use PrimeNG Ifta (float) label behavior. |\r\n\r\nControl-level options (e.g. `hidden`, `viewOnly`, `validators`, `options`, type-specific configs) are set on each `IFormControl` / `IFormGroup` / `IFormArray` in the model; see [IFormControl](#iformcontrol), [IFormGroup](#iformgroup), and [IFormArray](#iformarray).\r\n\r\n---\r\n\r\n## Core API Reference\r\n\r\n### IFormGroup\r\nExtends Angular's `FormGroup`. Used as the root form or for nested sections.\r\n\r\n#### Configuration (`IFormGroupConfig`)\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `label` | `string` | Optional title displayed above the group. |\r\n| `class` | `string` | CSS class for the group wrapper. |\r\n| `formClass` | `string` | Grid class for the group's children (e.g., `row g-3`). |\r\n| `viewOnly` | `boolean` | Sets the entire group to read-only mode. |\r\n| `hidden` | `boolean` | Hides the entire group. |\r\n| `updateOnChange` | `Array` | List of dependencies between fields (see Advanced Usage). |\r\n\r\n#### Methods\r\n- **`validateForm()`**: Marks all controls as touched and returns validity.\r\n  ```typescript\r\n  const { isValid, message } = form.validateForm();\r\n  ```\r\n- **`getRawValue()`**: Returns the typed value of the entire form.\r\n- **`patchValue(value)`**: Type-safe method to update form values.\r\n- **`updateConfig(partialConfig)`**: Updates the group's configuration on the fly.\r\n- **`updateControlConfigs(configs)`**: Updates multiple nested control configurations at once.\r\n  ```typescript\r\n  form.updateControlConfigs({\r\n    email: { hidden: true, validators: [] }\r\n  });\r\n  ```\r\n\r\n---\r\n\r\n### IFormControl\r\nExtends Angular's `FormControl`. Represents a single input field.\r\n\r\n#### Configuration (`IFormControlConfig`)\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `type` | `FormControlType` | Required. The input type (Text, Select, Date, etc.). |\r\n| `label` | `string` | Field label (supports translation keys). |\r\n| `placeholder` | `string` | Input placeholder. |\r\n| `validators` | `ValidatorFn[]` | Angular validators. |\r\n| `class` | `string` | Grid column class (e.g., `col-md-6`). |\r\n| `options` | `Signal` | Options for Select, MultiSelect, Radio, or Autocomplete. |\r\n| `actionButton` | `Object` | Optional button rendered inside the control's row. |\r\n| `viewOnly` | `boolean` | Renders value as text instead of an input. |\r\n| `loading` | `Signal` | Shows a loading spinner inside the control. |\r\n\r\n#### Type-specific options\r\n\r\nUse these on `IFormControlConfig` for the corresponding control types.\r\n\r\n##### TextArea — `textareaConfigs`\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `autoResize` | `boolean` | When true, textarea grows with content. |\r\n| `rows` | `number` | Initial number of visible rows. |\r\n\r\n##### Date / YearMonth / Year / Time — `dataOptions`\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `minDate` | `Date` | Minimum selectable date. |\r\n| `maxDate` | `Date` | Maximum selectable date. |\r\n| `dateFormat` | `string` | Format string for the date value. |\r\n| `dateFormatView` | `string` | Format string for the date picker display. |\r\n| `showIcon` | `boolean` | Show calendar/clock icon. |\r\n| `showClear` | `boolean` | Show clear button. |\r\n| `disabledDates` | `Date[]` | Dates that cannot be selected. |\r\n| `showTime` | `boolean` | Include time in date picker. |\r\n| `hourFormat` | `'12' \\| '24'` | 12- or 24-hour format. |\r\n| `iconDisplay` | `'button' \\| 'input'` | Where the icon is shown. |\r\n\r\n##### Text / Number / Password — `textInputConfigs`\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `maxLength` | `number` | Max character length. |\r\n| `minLength` | `number` | Min character length. |\r\n| `pattern` | `string` | Pattern for the input. |\r\n\r\n##### Number — `numberInputConfigs`\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `mode` | `'decimal' \\| 'currency'` | Mode for the number input. |\r\n| `min` | `number` | Min value. |\r\n| `max` | `number` | Max value. |\r\n| `minFractionDigits` | `number` | Min fraction digits. |\r\n| `maxFractionDigits` | `number` | Max fraction digits. |\r\n| `currency` | `string` | Currency for the number input. |\r\n| `locale` | `string` | Locale for the number input. |\r\n\r\n##### Radio — `radioOptions`\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `radioInlineWithLabel` | `boolean` | Render radios inline with option labels. |\r\n| `radioLabelClass` | `string` | CSS class for each radio option label. |\r\n| `radioGroupClass` | `string` | CSS class for the radio group wrapper. |\r\n\r\n##### Checkbox — `checkboxOptions`\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `labelClass` | `string` | CSS class for the checkbox label. |\r\n| `binaryLabel` | `string` | Label text used when the checkbox is in binary mode. |\r\n\r\n**Note:** When `type` is `FormControlType.Checkbox` and `options` is not provided, the control behaves as a single binary checkbox (`true` / `false`) by default.\r\n\r\n##### Switch — `SwitchOptions`\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `CheckedText` | `string` | Label when switch is on. |\r\n| `UncheckedText` | `string` | Label when switch is off. |\r\n\r\n#### Methods\r\n- **`updateConfig(partialConfig)`**: Updates control settings (validators, visibility, etc.).\r\n- **`setOptions(options)`**: Programmatically updates the options signal.\r\n- **`showLoader()` / `hideLoader()`**: Toggles the internal loading state.\r\n\r\n---\r\n\r\n### IFormArray\r\nExtends Angular's `FormArray`. Used for dynamic, repeatable lists of items.\r\n\r\n#### Configuration (`IFormArrayConfig`)\r\n| Property | Type | Description |\r\n|---|---|---|\r\n| `template` | `() => IFormGroup` | **Required**. Function that returns the model for a new item. |\r\n| `label` | `string` | Label for the array section. |\r\n| `itemLabel` | `string` | Label template for each item (e.g. \"Item : 1\"). |\r\n| `minItems` / `maxItems` | `number` | Minimum/maximum number of items. |\r\n| `addButtonText` | `string` | Label for the \"Add\" button. |\r\n| `removeButtonText` | `string` | Label for remove button (e.g. tooltip). |\r\n| `hideAddButton` | `boolean` | Hides the add button. |\r\n| `hideRemoveButton` | `boolean` | Hides remove buttons on items. |\r\n| `formsWrapperClass` | `string` | CSS class for the array wrapper. |\r\n| `formClass` | `string` | Grid/layout class for item content. |\r\n| `itemBorderClass` | `string` | CSS class for each item container. |\r\n| `addButtonStyle` | `object` | `{ severity, outlined, icon?, position? }` for add button. |\r\n| `noItemsText` | `string` | Text when array is empty. |\r\n| `disabled` | `boolean` | Disables the array (add/remove/inputs). |\r\n| `hidden` | `boolean` | Hides the entire array. |\r\n| `dividerBefore` / `dividerAfter` | `IFormDividerConfig` | Optional dividers. |\r\n| `onItemsChange` | `(formArray) => void` | Callback when items are added or removed. |\r\n\r\n#### Methods\r\n- **`addItem(value?)`**: Appends a new item to the list.\r\n- **`removeItem(index)`**: Removes an item while respecting `minItems`.\r\n- **`setItems(values)`**: Clears the list and populates it with new values.\r\n- **`clearItems()`**: Removes all items.\r\n\r\n---\r\n\r\n### IFormInputGroup\r\nA specialized `IFormGroup` where all nested controls are rendered inside a single PrimeNG `p-input-group`.\r\n\r\n```typescript\r\nnew IFormInputGroup({\r\n  amount: new IFormControl({ type: FormControlType.Number }),\r\n  currency: new IFormControl({ type: FormControlType.Select, options: currencies })\r\n}, {\r\n  label: 'Price',\r\n  class: 'col-md-4'\r\n})\r\n```\r\n\r\n---\r\n\r\n## Advanced Usage\r\n\r\n### Custom Templates\r\nInject custom components or HTML into the form flow.\r\n\r\n```typescript\r\n// 1. Define in config\r\nmyCustomField: new IFormControl({\r\n  type: FormControlType.CustomTemplate,\r\n  templateId: 'user-header'\r\n})\r\n```\r\n\r\n```html\r\n<!-- 2. Use in HTML -->\r\n<nq-primeng-form [form]=\"form\">\r\n  <div templateId=\"user-header\">\r\n    <h3>Custom Section Header</h3>\r\n    <hr />\r\n  </div>\r\n</nq-primeng-form>\r\n```\r\n\r\n### Dynamic Dependencies (`updateOnChange`)\r\nAutomatically handle logic when a field value changes.\r\n\r\n```typescript\r\nconst form = new IFormGroup({\r\n  country: new IFormControl({ type: FormControlType.Select, options: countries }),\r\n  city: new IFormControl({ type: FormControlType.Select, options: signal([]) })\r\n}, {\r\n  updateOnChange: [\r\n    {\r\n      target: 'country',\r\n      callback: (group) => {\r\n        const country = group.controls.country.value;\r\n        // Logic to update city options based on country selection\r\n        group.controls.city.updateConfig({ disabled: !country });\r\n      }\r\n    }\r\n  ]\r\n});\r\n```\r\n\r\n### View-Only Mode\r\nSwitch any part of the form to a read-only state. Values will render as plain text using `p-inputtext` styling but without the input behavior.\r\n\r\n---\r\n\r\n## Component API\r\n\r\nThe `nq-primeng-form` component inputs are documented in [Dynamic form component options](#dynamic-form-component-options) above.\r\n\r\n---\r\n\r\n## License\r\nMIT\r\n","readmeFilename":"README.md"}