diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/basic/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/basic/.content.xml
index 47d51b47b6..a6a95f2847 100755
--- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/basic/.content.xml
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/basic/.content.xml
@@ -1,35 +1,48 @@
+ jcr:primaryType="cq:Page">
+ cq:deviceGroups="[mobile/groups/responsive]"
+ cq:lastModified="{Date}2024-09-10T14:57:01.796+05:30"
+ cq:lastModifiedBy="admin"
+ cq:template="/conf/core-components-examples/settings/wcm/templates/af-blank-v2"
+ jcr:language="en"
+ jcr:primaryType="cq:PageContent"
+ jcr:title="Adaptive Form V2 (IT)"
+ sling:resourceType="forms-components-examples/components/page">
+ fd:version="2.1"
+ jcr:primaryType="nt:unstructured"
+ sling:resourceType="forms-components-examples/components/form/container"
+ dorType="none"
+ fieldType="form"
+ themeRef="/libs/fd/af/themes/canvas">
+
-
\ No newline at end of file
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/test-fragment/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/test-fragment/.content.xml
old mode 100644
new mode 100755
index 5f3b4bedba..608e1f9f4b
--- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/test-fragment/.content.xml
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fragment/test-fragment/.content.xml
@@ -3,7 +3,7 @@
jcr:primaryType="cq:Page">
+ jcr:created="{Date}2024-05-08T20:17:24.203+05:30"
+ jcr:lastModified="{Date}2024-05-08T20:17:24.203+05:30"
+ jcr:primaryType="nt:unstructured"
+ jcr:title="Responsive Text Input"
+ sling:resourceType="forms-components-examples/components/form/textinput"
+ fieldType="text-input"
+ name="textinput1715179644273">
+ jcr:primaryType="nt:unstructured"
+ offset="1"
+ width="9"/>
+
+
+
+
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/text/v1/text/clientlibs/site/js/textview.js b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/text/v1/text/clientlibs/site/js/textview.js
index 90381afbea..61a5b1df5e 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/text/v1/text/clientlibs/site/js/textview.js
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/text/v1/text/clientlibs/site/js/textview.js
@@ -66,9 +66,13 @@
updateValue(value) {
// html sets undefined value as undefined string in input value, hence this check is added
let actualValue = typeof value === "undefined" ? "" : value;
-
+ const sanitizedValue = window.DOMPurify ? window.DOMPurify.sanitize(actualValue) : actualValue;
// since there is no widget for textview, the innerHTML is being changed
- this.element.children[0].innerHTML = actualValue;
+ if (this.element.children[0]) {
+ this.element.children[0].innerHTML = sanitizedValue;
+ } else {
+ this.element.innerHTML = sanitizedValue;
+ }
}
}
diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json
index 672e7e78c4..5e8808fce0 100644
--- a/ui.frontend/package-lock.json
+++ b/ui.frontend/package-lock.json
@@ -9,9 +9,9 @@
"version": "1.0.0",
"license": "Apache-2.0",
"dependencies": {
- "@aemforms/af-core": "^0.22.102",
+ "@aemforms/af-core": "^0.22.103",
"@aemforms/af-custom-functions": "1.0.10",
- "@aemforms/af-formatters": "^0.22.102"
+ "@aemforms/af-formatters": "^0.22.103"
},
"devDependencies": {
"@babel/preset-env": "^7.18.2",
@@ -61,12 +61,12 @@
}
},
"node_modules/@aemforms/af-core": {
- "version": "0.22.102",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.102.tgz",
- "integrity": "sha512-WdZuGDwH/uCbzfI1hsNq1HTmU9+oVtx0zEVy37e18RfMKOZjkvkCngiWaEqvUsa91N0xCM8NSIpZRCbv5CVkJw==",
+ "version": "0.22.103",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.103.tgz",
+ "integrity": "sha512-8P0+UkEHbn0pfIOOGIvNiaWYHOUmZwXiP+ZjX8fyvZW8Cq6McWid+ryAzR42e6i6hFJ8XefFyHfMuvcp43YiMA==",
"dependencies": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.102"
+ "@aemforms/af-formatters": "^0.22.103"
}
},
"node_modules/@aemforms/af-custom-functions": {
@@ -75,9 +75,9 @@
"integrity": "sha512-n3w9tHkJOI5ISVYAK2cCi5k/oTu3rGgByDmMIgOH1+Ry4mL9nM3cxBTKEkPF8Y8JiKF1aUHIKM+MeP6u5PiiUA=="
},
"node_modules/@aemforms/af-formatters": {
- "version": "0.22.102",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.102.tgz",
- "integrity": "sha512-s1HYp8thkyFwve7hK3dx00jXWV6K5JWZL+NMgiTI5BrCehq/sFoZy0Mgxnjutz1ekBvTgBy7vIpidn18Blg6dg=="
+ "version": "0.22.103",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.103.tgz",
+ "integrity": "sha512-6QV0u3A1TrBSj63b6SKcpu94tYMBWGob79TUyQl6xqzlKdm0aGqJuf4uiJlZcIqjyIWOJzFeNmDyghUfWkIJHw=="
},
"node_modules/@ampproject/remapping": {
"version": "2.2.1",
@@ -11076,12 +11076,12 @@
"integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA=="
},
"@aemforms/af-core": {
- "version": "0.22.102",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.102.tgz",
- "integrity": "sha512-WdZuGDwH/uCbzfI1hsNq1HTmU9+oVtx0zEVy37e18RfMKOZjkvkCngiWaEqvUsa91N0xCM8NSIpZRCbv5CVkJw==",
+ "version": "0.22.103",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.103.tgz",
+ "integrity": "sha512-8P0+UkEHbn0pfIOOGIvNiaWYHOUmZwXiP+ZjX8fyvZW8Cq6McWid+ryAzR42e6i6hFJ8XefFyHfMuvcp43YiMA==",
"requires": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.102"
+ "@aemforms/af-formatters": "^0.22.103"
}
},
"@aemforms/af-custom-functions": {
@@ -11090,9 +11090,9 @@
"integrity": "sha512-n3w9tHkJOI5ISVYAK2cCi5k/oTu3rGgByDmMIgOH1+Ry4mL9nM3cxBTKEkPF8Y8JiKF1aUHIKM+MeP6u5PiiUA=="
},
"@aemforms/af-formatters": {
- "version": "0.22.102",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.102.tgz",
- "integrity": "sha512-s1HYp8thkyFwve7hK3dx00jXWV6K5JWZL+NMgiTI5BrCehq/sFoZy0Mgxnjutz1ekBvTgBy7vIpidn18Blg6dg=="
+ "version": "0.22.103",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.103.tgz",
+ "integrity": "sha512-6QV0u3A1TrBSj63b6SKcpu94tYMBWGob79TUyQl6xqzlKdm0aGqJuf4uiJlZcIqjyIWOJzFeNmDyghUfWkIJHw=="
},
"@ampproject/remapping": {
"version": "2.2.1",
diff --git a/ui.frontend/package.json b/ui.frontend/package.json
index 3b403381e5..7b3fe7d41d 100644
--- a/ui.frontend/package.json
+++ b/ui.frontend/package.json
@@ -23,8 +23,8 @@
"webpack-merge": "^5.8.0"
},
"dependencies": {
- "@aemforms/af-core": "^0.22.102",
- "@aemforms/af-formatters": "^0.22.102",
+ "@aemforms/af-core": "^0.22.103",
+ "@aemforms/af-formatters": "^0.22.103",
"@aemforms/af-custom-functions": "1.0.10"
}
}
diff --git a/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js b/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js
index 2d02ff9d3f..7212371f2e 100644
--- a/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js
+++ b/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js
@@ -100,7 +100,7 @@ describe("Sites with Aem Embed Container", () => {
it("model initialized properly", () => {
expect(formContainer, "formcontainer is initialized").to.not.be.null;
// fragment component, text field and IntanceManager
- expect(Object.keys(formContainer._fields).length).to.equal(4);
+ expect(Object.keys(formContainer._fields).length).to.be.gt(4);
})
it("model's changes are reflected in the html ", () => {
diff --git a/ui.tests/test-module/specs/fragment/fragment.runtime.spec.js b/ui.tests/test-module/specs/fragment/fragment.runtime.spec.js
index a523a11e6b..5ca2f36726 100644
--- a/ui.tests/test-module/specs/fragment/fragment.runtime.spec.js
+++ b/ui.tests/test-module/specs/fragment/fragment.runtime.spec.js
@@ -178,4 +178,35 @@ describe("Form Runtime with Fragment", () => {
});
});
});
+
+
+ it("rules inside fragment should work when included in form", () => {
+ const [idTextBox, fieldView] = Object.entries(formContainer._fields)[0];
+ const [idTextBox1, fieldView1] = Object.entries(formContainer._fields)[1];
+ const [idPanel, panelView] = Object.entries(formContainer._fields)[4];
+ const input = "abc";
+ const model = formContainer._model.getElement(idPanel);
+ cy.get(`#${idTextBox}`).find("input").clear().type(input).blur().then(x => {
+ cy.get(`#${idTextBox1} input`).invoke('val').then(val => {
+ expect(val, "rules inside fragment (when included in form) did not work").to.equal(input);
+ })
+ })
+
+ cy.get(`#${model.items[0].id}`).should('have.text', 'Thanks');
+ });
+
+ it("same fragment referred twice should have unique ids", () => {
+ const [idTextBox, fieldView] = Object.entries(formContainer._fields)[2];
+ const [idTextBox1, fieldView1] = Object.entries(formContainer._fields)[3];
+ const [idPanel, panelView] = Object.entries(formContainer._fields)[5];
+ const input = "abc";
+ const model = formContainer._model.getElement(idPanel);
+ cy.get(`#${idTextBox}`).find("input").clear().type(input).blur().then(x => {
+ cy.get(`#${idTextBox1} input`).invoke('val').then(val => {
+ expect(val, "rules inside fragment (when included in form) did not work").to.equal(input);
+ })
+ })
+
+ cy.get(`#${model.items[0].id}`).should('have.text', 'Thanks');
+ });
})