[{"data":1,"prerenderedAt":1559},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection":358,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection-surround":1554},[4,14,36,69,140,341],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,182,207,211,295,320,324],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175,178],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181},"CLI Generator","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcwa-cli","5.nuxt-module\u002F3.building-your-ui\u002F4.cwa-cli",{"title":183,"path":184,"stem":185,"children":186,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[187,191,195,199,203],{"title":188,"path":189,"stem":190},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":192,"path":193,"stem":194},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":196,"path":197,"stem":198},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":200,"path":201,"stem":202},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":204,"path":205,"stem":206},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":208,"path":209,"stem":210},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":212,"path":213,"stem":214,"children":215,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[216,224,261,278],{"title":217,"path":218,"stem":219,"children":220,"page":35},"Layout","\u002Fnuxt-module\u002Fcomposables\u002Flayout","5.nuxt-module\u002F6.composables\u002F0.layout",[221],{"title":217,"path":222,"stem":223},"\u002Fnuxt-module\u002Fcomposables\u002Flayout\u002Fuse-cwa-layout","5.nuxt-module\u002F6.composables\u002F0.layout\u002F1.use-cwa-layout",{"title":225,"path":226,"stem":227,"children":228,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[229,233,237,241,245,249,253,257],{"title":230,"path":231,"stem":232},"Component (recommended)","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-component","5.nuxt-module\u002F6.composables\u002F1.component\u002F0.use-cwa-component",{"title":234,"path":235,"stem":236},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":238,"path":239,"stem":240},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":242,"path":243,"stem":244},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":246,"path":247,"stem":248},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":250,"path":251,"stem":252},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":254,"path":255,"stem":256},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":258,"path":259,"stem":260},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":262,"path":263,"stem":264,"children":265,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[266,270,274],{"title":267,"path":268,"stem":269},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":271,"path":272,"stem":273},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":275,"path":276,"stem":277},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":279,"path":280,"stem":281,"children":282,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[283,287,291],{"title":284,"path":285,"stem":286},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":288,"path":289,"stem":290},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":292,"path":293,"stem":294},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":296,"path":297,"stem":298,"children":299,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[300,304,308,312,316],{"title":301,"path":302,"stem":303},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":305,"path":306,"stem":307},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":309,"path":310,"stem":311},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":313,"path":314,"stem":315},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":317,"path":318,"stem":319},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":321,"path":322,"stem":323},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":325,"path":326,"stem":327,"children":328,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[329,333,337],{"title":330,"path":331,"stem":332},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":334,"path":335,"stem":336},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":338,"path":339,"stem":340},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":342,"path":343,"stem":344,"children":345,"page":35},"Deployment","\u002Fdeployment","6.deployment",[346,350,354],{"title":347,"path":348,"stem":349},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":351,"path":352,"stem":353},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":355,"path":356,"stem":357},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":359,"title":360,"badge":361,"body":362,"description":1548,"extension":1549,"links":361,"meta":1550,"navigation":1551,"path":259,"seo":1552,"stem":260,"__hash__":1553},"docs\u002F5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection.md","useCwaFormCollection",null,{"type":363,"value":364,"toc":1538},"minimark",[365,400,473,478,537,541,634,638,693,697,702,1027,1281,1285,1306,1486,1490,1534],[366,367,368,371,372,381,382,385,386,389,390,393,394,399],"p",{},[369,370,360],"code",{}," manages a Symfony ",[373,374,378],"a",{"href":375,"rel":376},"https:\u002F\u002Fsymfony.com\u002Fdoc\u002Fcurrent\u002Freference\u002Fforms\u002Ftypes\u002Fcollection.html",[377],"nofollow",[369,379,380],{},"CollectionType"," field. It clones the ",[369,383,384],{},"prototype"," from the API response each time ",[369,387,388],{},"addEntry()"," is called, assigns a monotonic index, and tracks the list of active entry ",[369,391,392],{},"full_name"," strings. Child components then call ",[373,395,396],{"href":251},[369,397,398],{},"useCwaFormInput"," for each sub-field; their lifecycle hooks handle registration\u002Funregistration automatically.",[401,402,407],"pre",{"className":403,"code":404,"language":405,"meta":406,"style":406},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","const { entries, addEntry, removeEntry, vars } = useCwaFormCollection(iri, 'form_name[fieldName]')\n","ts","",[369,408,409],{"__ignoreMap":406},[410,411,414,418,422,426,429,432,434,437,439,442,445,449,453,457,459,463,467,470],"span",{"class":412,"line":413},"line",1,[410,415,417],{"class":416},"swB56","const",[410,419,421],{"class":420},"sOvfz"," {",[410,423,425],{"class":424},"sc2zw"," entries",[410,427,428],{"class":420},",",[410,430,431],{"class":424}," addEntry",[410,433,428],{"class":420},[410,435,436],{"class":424}," removeEntry",[410,438,428],{"class":420},[410,440,441],{"class":424}," vars",[410,443,444],{"class":420}," }",[410,446,448],{"class":447},"sVlFx"," =",[410,450,452],{"class":451},"sKpYG"," useCwaFormCollection",[410,454,456],{"class":455},"sPB8G","(iri",[410,458,428],{"class":420},[410,460,462],{"class":461},"seSrl"," '",[410,464,466],{"class":465},"sLL54","form_name[fieldName]",[410,468,469],{"class":461},"'",[410,471,472],{"class":455},")\n",[474,475,477],"h2",{"id":476},"parameters","Parameters",[479,480,481,497],"table",{},[482,483,484],"thead",{},[485,486,487,491,494],"tr",{},[488,489,490],"th",{},"Parameter",[488,492,493],{},"Type",[488,495,496],{},"Description",[498,499,500,516],"tbody",{},[485,501,502,508,513],{},[503,504,505],"td",{},[369,506,507],{},"iri",[503,509,510],{},[369,511,512],{},"Ref\u003Cstring | undefined>",[503,514,515],{},"IRI of the Form component resource",[485,517,518,523,528],{},[503,519,520],{},[369,521,522],{},"collectionFullName",[503,524,525],{},[369,526,527],{},"string",[503,529,530,532,533,536],{},[369,531,392],{}," of the CollectionType field (e.g. ",[369,534,535],{},"registration[tags]",")",[474,538,540],{"id":539},"return-value","Return value",[479,542,543,554],{},[482,544,545],{},[485,546,547,550,552],{},[488,548,549],{},"Property",[488,551,493],{},[488,553,496],{},[498,555,556,574,589,606],{},[485,557,558,563,568],{},[503,559,560],{},[369,561,562],{},"entries",[503,564,565],{},[369,566,567],{},"ComputedRef\u003Cstring[]>",[503,569,570,571,573],{},"Ordered list of active entry ",[369,572,392],{}," strings",[485,575,576,581,586],{},[503,577,578],{},[369,579,580],{},"addEntry",[503,582,583],{},[369,584,585],{},"() => void",[503,587,588],{},"Clone the prototype and append a new entry",[485,590,591,596,601],{},[503,592,593],{},[369,594,595],{},"removeEntry",[503,597,598],{},[369,599,600],{},"(fullName: string) => void",[503,602,603,604],{},"Remove an entry by its ",[369,605,392],{},[485,607,608,613,618],{},[503,609,610],{},[369,611,612],{},"vars",[503,614,615],{},[369,616,617],{},"ComputedRef",[503,619,620,621,624,625,624,627,624,630,633],{},"Collection field vars from the API (",[369,622,623],{},"label",", ",[369,626,384],{},[369,628,629],{},"allow_add",[369,631,632],{},"allow_delete",", errors, etc.)",[474,635,637],{"id":636},"how-it-works","How it works",[639,640,641,660,667,670],"ul",{},[642,643,644,646,647,650,651,654,655,657,658],"li",{},[369,645,388],{}," deep-clones ",[369,648,649],{},"vars.prototype",", replaces every ",[369,652,653],{},"__name__"," placeholder (recursively through nested children) with a monotonic counter, then pushes the resolved ",[369,656,392],{}," onto ",[369,659,562],{},[642,661,662,663,666],{},"Indices are never reused after removal, so Vue ",[369,664,665],{},"v-for"," keys remain stable",[642,668,669],{},"The prototype is never mutated",[642,671,672,673,676,677,680,681,684,685,688,689,692],{},"Child components must call ",[369,674,675],{},"useCwaFormInput(iriRef, entryFullName)"," (or ",[369,678,679],{},"useCwaFormInput(iriRef, \\","${entryFullName}",[410,682,683],{},"subField","`)",[369,686,687],{},"for compound types) — their","onMounted",[369,690,691],{},"\u002F","onUnmounted` hooks handle registration\u002Fderegistration with the form store",[474,694,696],{"id":695},"example","Example",[698,699,701],"h3",{"id":700},"simple-collection-texttype-entries","Simple collection (TextType entries)",[401,703,707],{"className":704,"code":705,"language":706,"meta":406,"style":406},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003C!-- parent component -->\n\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string }>()\nconst iriRef = toRef(props, 'iri')\nconst tags = useCwaFormCollection(iriRef, 'example_form[tags]')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003CTagEntry\n      v-for=\"entry in tags.entries.value\"\n      :key=\"entry\"\n      :iri=\"props.iri\"\n      :entry-full-name=\"entry\"\n      @remove=\"tags.removeEntry(entry)\"\n    \u002F>\n    \u003Cbutton v-if=\"tags.vars.value?.allow_add\" @click.prevent=\"tags.addEntry()\">\n      Add Tag\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue",[369,708,709,715,745,778,804,830,840,847,857,868,877,893,908,923,937,952,958,992,998,1008,1018],{"__ignoreMap":406},[410,710,711],{"class":412,"line":413},[410,712,714],{"class":713},"sTBSN","\u003C!-- parent component -->\n",[410,716,718,721,725,729,732,735,738,740,742],{"class":412,"line":717},2,[410,719,720],{"class":420},"\u003C",[410,722,724],{"class":723},"s-h7I","script",[410,726,728],{"class":727},"sGtlX"," setup",[410,730,731],{"class":727}," lang",[410,733,734],{"class":420},"=",[410,736,737],{"class":461},"\"",[410,739,405],{"class":465},[410,741,737],{"class":461},[410,743,744],{"class":420},">\n",[410,746,748,750,753,755,758,761,765,768,772,775],{"class":412,"line":747},3,[410,749,417],{"class":416},[410,751,752],{"class":424}," props",[410,754,448],{"class":447},[410,756,757],{"class":451}," defineProps",[410,759,760],{"class":420},"\u003C{",[410,762,764],{"class":763},"ssFBz"," iri",[410,766,767],{"class":447},":",[410,769,771],{"class":770},"sbW4m"," string",[410,773,774],{"class":420}," }>",[410,776,777],{"class":455},"()\n",[410,779,781,783,786,788,791,794,796,798,800,802],{"class":412,"line":780},4,[410,782,417],{"class":416},[410,784,785],{"class":424}," iriRef",[410,787,448],{"class":447},[410,789,790],{"class":451}," toRef",[410,792,793],{"class":455},"(props",[410,795,428],{"class":420},[410,797,462],{"class":461},[410,799,507],{"class":465},[410,801,469],{"class":461},[410,803,472],{"class":455},[410,805,807,809,812,814,816,819,821,823,826,828],{"class":412,"line":806},5,[410,808,417],{"class":416},[410,810,811],{"class":424}," tags",[410,813,448],{"class":447},[410,815,452],{"class":451},[410,817,818],{"class":455},"(iriRef",[410,820,428],{"class":420},[410,822,462],{"class":461},[410,824,825],{"class":465},"example_form[tags]",[410,827,469],{"class":461},[410,829,472],{"class":455},[410,831,833,836,838],{"class":412,"line":832},6,[410,834,835],{"class":420},"\u003C\u002F",[410,837,724],{"class":723},[410,839,744],{"class":420},[410,841,843],{"class":412,"line":842},7,[410,844,846],{"emptyLinePlaceholder":845},true,"\n",[410,848,850,852,855],{"class":412,"line":849},8,[410,851,720],{"class":420},[410,853,854],{"class":723},"template",[410,856,744],{"class":420},[410,858,860,863,866],{"class":412,"line":859},9,[410,861,862],{"class":420},"  \u003C",[410,864,865],{"class":723},"div",[410,867,744],{"class":420},[410,869,871,874],{"class":412,"line":870},10,[410,872,873],{"class":420},"    \u003C",[410,875,876],{"class":723},"TagEntry\n",[410,878,880,883,885,887,890],{"class":412,"line":879},11,[410,881,882],{"class":727},"      v-for",[410,884,734],{"class":420},[410,886,737],{"class":461},[410,888,889],{"class":465},"entry in tags.entries.value",[410,891,892],{"class":461},"\"\n",[410,894,896,899,901,903,906],{"class":412,"line":895},12,[410,897,898],{"class":727},"      :key",[410,900,734],{"class":420},[410,902,737],{"class":461},[410,904,905],{"class":465},"entry",[410,907,892],{"class":461},[410,909,911,914,916,918,921],{"class":412,"line":910},13,[410,912,913],{"class":727},"      :iri",[410,915,734],{"class":420},[410,917,737],{"class":461},[410,919,920],{"class":465},"props.iri",[410,922,892],{"class":461},[410,924,926,929,931,933,935],{"class":412,"line":925},14,[410,927,928],{"class":727},"      :entry-full-name",[410,930,734],{"class":420},[410,932,737],{"class":461},[410,934,905],{"class":465},[410,936,892],{"class":461},[410,938,940,943,945,947,950],{"class":412,"line":939},15,[410,941,942],{"class":727},"      @remove",[410,944,734],{"class":420},[410,946,737],{"class":461},[410,948,949],{"class":465},"tags.removeEntry(entry)",[410,951,892],{"class":461},[410,953,955],{"class":412,"line":954},16,[410,956,957],{"class":420},"    \u002F>\n",[410,959,961,963,966,969,971,973,976,978,981,983,985,988,990],{"class":412,"line":960},17,[410,962,873],{"class":420},[410,964,965],{"class":723},"button",[410,967,968],{"class":727}," v-if",[410,970,734],{"class":420},[410,972,737],{"class":461},[410,974,975],{"class":465},"tags.vars.value?.allow_add",[410,977,737],{"class":461},[410,979,980],{"class":727}," @click.prevent",[410,982,734],{"class":420},[410,984,737],{"class":461},[410,986,987],{"class":465},"tags.addEntry()",[410,989,737],{"class":461},[410,991,744],{"class":420},[410,993,995],{"class":412,"line":994},18,[410,996,997],{"class":455},"      Add Tag\n",[410,999,1001,1004,1006],{"class":412,"line":1000},19,[410,1002,1003],{"class":420},"    \u003C\u002F",[410,1005,965],{"class":723},[410,1007,744],{"class":420},[410,1009,1011,1014,1016],{"class":412,"line":1010},20,[410,1012,1013],{"class":420},"  \u003C\u002F",[410,1015,865],{"class":723},[410,1017,744],{"class":420},[410,1019,1021,1023,1025],{"class":412,"line":1020},21,[410,1022,835],{"class":420},[410,1024,854],{"class":723},[410,1026,744],{"class":420},[401,1028,1030],{"className":704,"code":1029,"language":706,"meta":406,"style":406},"\u003C!-- TagEntry.vue — child component -->\n\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string | undefined, entryFullName: string }>()\ndefineEmits\u003C{ remove: [] }>()\nconst iriRef = toRef(props, 'iri')\nconst field = useCwaFormInput(iriRef, props.entryFullName)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003CUInput v-model=\"field.value.value\" @blur=\"field.onBlur\" @input=\"field.onInput\" \u002F>\n    \u003CUButton @click=\"$emit('remove')\">Remove\u003C\u002FUButton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[369,1031,1032,1037,1057,1094,1114,1136,1160,1168,1172,1180,1188,1234,1265,1273],{"__ignoreMap":406},[410,1033,1034],{"class":412,"line":413},[410,1035,1036],{"class":713},"\u003C!-- TagEntry.vue — child component -->\n",[410,1038,1039,1041,1043,1045,1047,1049,1051,1053,1055],{"class":412,"line":717},[410,1040,720],{"class":420},[410,1042,724],{"class":723},[410,1044,728],{"class":727},[410,1046,731],{"class":727},[410,1048,734],{"class":420},[410,1050,737],{"class":461},[410,1052,405],{"class":465},[410,1054,737],{"class":461},[410,1056,744],{"class":420},[410,1058,1059,1061,1063,1065,1067,1069,1071,1073,1075,1078,1081,1083,1086,1088,1090,1092],{"class":412,"line":747},[410,1060,417],{"class":416},[410,1062,752],{"class":424},[410,1064,448],{"class":447},[410,1066,757],{"class":451},[410,1068,760],{"class":420},[410,1070,764],{"class":763},[410,1072,767],{"class":447},[410,1074,771],{"class":770},[410,1076,1077],{"class":447}," |",[410,1079,1080],{"class":770}," undefined",[410,1082,428],{"class":420},[410,1084,1085],{"class":763}," entryFullName",[410,1087,767],{"class":447},[410,1089,771],{"class":770},[410,1091,774],{"class":420},[410,1093,777],{"class":455},[410,1095,1096,1099,1101,1104,1106,1109,1112],{"class":412,"line":780},[410,1097,1098],{"class":451},"defineEmits",[410,1100,760],{"class":420},[410,1102,1103],{"class":763}," remove",[410,1105,767],{"class":447},[410,1107,1108],{"class":455}," [] ",[410,1110,1111],{"class":420},"}>",[410,1113,777],{"class":455},[410,1115,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134],{"class":412,"line":806},[410,1117,417],{"class":416},[410,1119,785],{"class":424},[410,1121,448],{"class":447},[410,1123,790],{"class":451},[410,1125,793],{"class":455},[410,1127,428],{"class":420},[410,1129,462],{"class":461},[410,1131,507],{"class":465},[410,1133,469],{"class":461},[410,1135,472],{"class":455},[410,1137,1138,1140,1143,1145,1148,1150,1152,1154,1157],{"class":412,"line":832},[410,1139,417],{"class":416},[410,1141,1142],{"class":424}," field",[410,1144,448],{"class":447},[410,1146,1147],{"class":451}," useCwaFormInput",[410,1149,818],{"class":455},[410,1151,428],{"class":420},[410,1153,752],{"class":455},[410,1155,1156],{"class":420},".",[410,1158,1159],{"class":455},"entryFullName)\n",[410,1161,1162,1164,1166],{"class":412,"line":842},[410,1163,835],{"class":420},[410,1165,724],{"class":723},[410,1167,744],{"class":420},[410,1169,1170],{"class":412,"line":849},[410,1171,846],{"emptyLinePlaceholder":845},[410,1173,1174,1176,1178],{"class":412,"line":859},[410,1175,720],{"class":420},[410,1177,854],{"class":723},[410,1179,744],{"class":420},[410,1181,1182,1184,1186],{"class":412,"line":870},[410,1183,862],{"class":420},[410,1185,865],{"class":723},[410,1187,744],{"class":420},[410,1189,1190,1192,1195,1198,1200,1202,1205,1207,1210,1212,1214,1217,1219,1222,1224,1226,1229,1231],{"class":412,"line":879},[410,1191,873],{"class":420},[410,1193,1194],{"class":723},"UInput",[410,1196,1197],{"class":727}," v-model",[410,1199,734],{"class":420},[410,1201,737],{"class":461},[410,1203,1204],{"class":465},"field.value.value",[410,1206,737],{"class":461},[410,1208,1209],{"class":727}," @blur",[410,1211,734],{"class":420},[410,1213,737],{"class":461},[410,1215,1216],{"class":465},"field.onBlur",[410,1218,737],{"class":461},[410,1220,1221],{"class":727}," @input",[410,1223,734],{"class":420},[410,1225,737],{"class":461},[410,1227,1228],{"class":465},"field.onInput",[410,1230,737],{"class":461},[410,1232,1233],{"class":420}," \u002F>\n",[410,1235,1236,1238,1241,1244,1246,1248,1251,1253,1256,1259,1261,1263],{"class":412,"line":895},[410,1237,873],{"class":420},[410,1239,1240],{"class":723},"UButton",[410,1242,1243],{"class":727}," @click",[410,1245,734],{"class":420},[410,1247,737],{"class":461},[410,1249,1250],{"class":465},"$emit('remove')",[410,1252,737],{"class":461},[410,1254,1255],{"class":420},">",[410,1257,1258],{"class":455},"Remove",[410,1260,835],{"class":420},[410,1262,1240],{"class":723},[410,1264,744],{"class":420},[410,1266,1267,1269,1271],{"class":412,"line":910},[410,1268,1013],{"class":420},[410,1270,865],{"class":723},[410,1272,744],{"class":420},[410,1274,1275,1277,1279],{"class":412,"line":925},[410,1276,835],{"class":420},[410,1278,854],{"class":723},[410,1280,744],{"class":420},[698,1282,1284],{"id":1283},"compound-collection-sub-fields-per-entry","Compound collection (sub-fields per entry)",[366,1286,1287,1288,1290,1291,1294,1295,1298,1299,1302,1303,1305],{},"For a ",[369,1289,380],{}," where each entry is a compound type (e.g. a ",[369,1292,1293],{},"ChildType"," with ",[369,1296,1297],{},"name"," and ",[369,1300,1301],{},"age"," sub-fields), the child component calls ",[369,1304,398],{}," for each sub-field:",[401,1307,1309],{"className":704,"code":1308,"language":706,"meta":406,"style":406},"\u003C!-- ChildEntry.vue -->\n\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string | undefined, entryFullName: string }>()\ndefineEmits\u003C{ remove: [] }>()\nconst iriRef = toRef(props, 'iri')\nconst name = useCwaFormInput(iriRef, `${props.entryFullName}[name]`)\nconst age  = useCwaFormInput(iriRef, `${props.entryFullName}[age]`)\n\u003C\u002Fscript>\n",[369,1310,1311,1316,1336,1370,1386,1408,1445,1478],{"__ignoreMap":406},[410,1312,1313],{"class":412,"line":413},[410,1314,1315],{"class":713},"\u003C!-- ChildEntry.vue -->\n",[410,1317,1318,1320,1322,1324,1326,1328,1330,1332,1334],{"class":412,"line":717},[410,1319,720],{"class":420},[410,1321,724],{"class":723},[410,1323,728],{"class":727},[410,1325,731],{"class":727},[410,1327,734],{"class":420},[410,1329,737],{"class":461},[410,1331,405],{"class":465},[410,1333,737],{"class":461},[410,1335,744],{"class":420},[410,1337,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368],{"class":412,"line":747},[410,1339,417],{"class":416},[410,1341,752],{"class":424},[410,1343,448],{"class":447},[410,1345,757],{"class":451},[410,1347,760],{"class":420},[410,1349,764],{"class":763},[410,1351,767],{"class":447},[410,1353,771],{"class":770},[410,1355,1077],{"class":447},[410,1357,1080],{"class":770},[410,1359,428],{"class":420},[410,1361,1085],{"class":763},[410,1363,767],{"class":447},[410,1365,771],{"class":770},[410,1367,774],{"class":420},[410,1369,777],{"class":455},[410,1371,1372,1374,1376,1378,1380,1382,1384],{"class":412,"line":780},[410,1373,1098],{"class":451},[410,1375,760],{"class":420},[410,1377,1103],{"class":763},[410,1379,767],{"class":447},[410,1381,1108],{"class":455},[410,1383,1111],{"class":420},[410,1385,777],{"class":455},[410,1387,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406],{"class":412,"line":806},[410,1389,417],{"class":416},[410,1391,785],{"class":424},[410,1393,448],{"class":447},[410,1395,790],{"class":451},[410,1397,793],{"class":455},[410,1399,428],{"class":420},[410,1401,462],{"class":461},[410,1403,507],{"class":465},[410,1405,469],{"class":461},[410,1407,472],{"class":455},[410,1409,1410,1412,1415,1417,1419,1421,1423,1426,1429,1431,1434,1437,1440,1443],{"class":412,"line":832},[410,1411,417],{"class":416},[410,1413,1414],{"class":424}," name",[410,1416,448],{"class":447},[410,1418,1147],{"class":451},[410,1420,818],{"class":455},[410,1422,428],{"class":420},[410,1424,1425],{"class":461}," `${",[410,1427,1428],{"class":455},"props",[410,1430,1156],{"class":461},[410,1432,1433],{"class":455},"entryFullName",[410,1435,1436],{"class":461},"}",[410,1438,1439],{"class":465},"[name]",[410,1441,1442],{"class":461},"`",[410,1444,472],{"class":455},[410,1446,1447,1449,1452,1455,1457,1459,1461,1463,1465,1467,1469,1471,1474,1476],{"class":412,"line":842},[410,1448,417],{"class":416},[410,1450,1451],{"class":424}," age",[410,1453,1454],{"class":447},"  =",[410,1456,1147],{"class":451},[410,1458,818],{"class":455},[410,1460,428],{"class":420},[410,1462,1425],{"class":461},[410,1464,1428],{"class":455},[410,1466,1156],{"class":461},[410,1468,1433],{"class":455},[410,1470,1436],{"class":461},[410,1472,1473],{"class":465},"[age]",[410,1475,1442],{"class":461},[410,1477,472],{"class":455},[410,1479,1480,1482,1484],{"class":412,"line":849},[410,1481,835],{"class":420},[410,1483,724],{"class":723},[410,1485,744],{"class":420},[474,1487,1489],{"id":1488},"notes","Notes",[639,1491,1492,1503,1510,1527],{},[642,1493,1494,1495,1498,1499,1502],{},"Use ",[369,1496,1497],{},"vars.value?.allow_add"," \u002F ",[369,1500,1501],{},"vars.value?.allow_delete"," (from the API response) to conditionally show add\u002Fremove controls",[642,1504,1505,1506,1509],{},"Collection-level errors (e.g. min\u002Fmax count violations) are in ",[369,1507,1508],{},"vars.value?.errors"," — render them separately from individual entry errors",[642,1511,1512,1513,1516,1517,1519,1520,1522,1523,1526],{},"Entries removed via ",[369,1514,1515],{},"removeEntry()"," are immediately dropped from ",[369,1518,562],{},"; the child component unmounts and ",[369,1521,398],{}," unregisters the field values, so they are excluded from the next ",[369,1524,1525],{},"submit()"," payload automatically",[642,1528,1529,1530,1533],{},"See the ",[373,1531,1532],{"href":318},"Forms guide"," for full field-type examples",[1535,1536,1537],"style",{},"html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sVlFx, html code.shiki .sVlFx{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .seSrl, html code.shiki .seSrl{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .sLL54, html code.shiki .sLL54{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTBSN, html code.shiki .sTBSN{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s-h7I, html code.shiki .s-h7I{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sGtlX, html code.shiki .sGtlX{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#C792EA}html pre.shiki code .ssFBz, html code.shiki .ssFBz{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#F07178}html pre.shiki code .sbW4m, html code.shiki .sbW4m{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}",{"title":406,"searchDepth":717,"depth":717,"links":1539},[1540,1541,1542,1543,1547],{"id":476,"depth":717,"text":477},{"id":539,"depth":717,"text":540},{"id":636,"depth":717,"text":637},{"id":695,"depth":717,"text":696,"children":1544},[1545,1546],{"id":700,"depth":747,"text":701},{"id":1283,"depth":747,"text":1284},{"id":1488,"depth":717,"text":1489},"Manage a Symfony CollectionType field — dynamically add and remove entries at runtime.","md",{},{"title":258},{"title":360,"description":1548},"q9fIAotAKC1V5D7fcWW1gmhkjUqTY1iHRUqStdZ0spM",[1555,1557],{"title":254,"path":255,"stem":256,"description":1556,"children":-1},"Bind a Symfony RepeatedType field (e.g. new password + confirmation) with cross-field validation.",{"title":267,"path":268,"stem":269,"description":1558,"children":-1},"Register a Vue file as a tab in the admin manager panel and get the IRI of the currently selected component.",1782512899100]