diff --git a/ui.frontend/src/view/FormOptionFieldBase.js b/ui.frontend/src/view/FormOptionFieldBase.js
index e4a67181f8..a808444cc7 100644
--- a/ui.frontend/src/view/FormOptionFieldBase.js
+++ b/ui.frontend/src/view/FormOptionFieldBase.js
@@ -119,8 +119,9 @@ class FormOptionFieldBase extends FormFieldBase {
let valueToSet = index < newEnumNames.length ? newEnumNames[index] : input.value;
let purifiedValue = window.DOMPurify ? window.DOMPurify.sanitize(valueToSet) : valueToSet;
span.innerHTML = purifiedValue;
- //TOFIX: Rich text in aria-label
- input.setAttribute("aria-label", `${this._model.label.value}: ${purifiedValue}`);
+ let richScreenReaderText = `${this._model.label.value}: ${purifiedValue}`;
+ let plainScreenReaderText = window.DOMPurify ? window.DOMPurify.sanitize(richScreenReaderText, { ALLOWED_TAGS: [] }) : richScreenReaderText;
+ input.setAttribute("aria-label", plainScreenReaderText);
});
} else {
[...this.getOptions()].forEach((option, index) => {
@@ -131,8 +132,9 @@ class FormOptionFieldBase extends FormFieldBase {
span.innerHTML = purifiedValue;
}
if(input) {
- //TOFIX: Rich text in aria-label
- input.setAttribute("aria-label", `${this._model.label.value}: ${purifiedValue}`);
+ let richScreenReaderText = `${this._model.label.value}: ${purifiedValue}`;
+ let plainScreenReaderText = window.DOMPurify ? window.DOMPurify.sanitize(richScreenReaderText, { ALLOWED_TAGS: [] }) : richScreenReaderText;
+ input.setAttribute("aria-label", plainScreenReaderText);
}
});
}
diff --git a/ui.tests/test-module/specs/dynamicOptions.cy.js b/ui.tests/test-module/specs/dynamicOptions.cy.js
index 6c0b4a7dc6..7d89b17144 100644
--- a/ui.tests/test-module/specs/dynamicOptions.cy.js
+++ b/ui.tests/test-module/specs/dynamicOptions.cy.js
@@ -175,15 +175,14 @@ describe("Dynamic Options: Enum and EnumNames for CheckboxGroup, radiobutton and
cy.get(`#${newRadioId}`).find(selectors.radiobuttonWidget).should('not.have.attr', 'aria-disabled');
})
- //TOFIX: Rich text in aria-label
it("should handle rich text in aria-labels correctly", () => {
const richCheckboxId = componentIds['richCheckbox'];
const richCheckbox2Id = componentIds['richCheckbox2'];
const richDropDownId = componentIds['richdropdown'];
// Check that aria-labels contain escaped HTML
- cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='a']`).should('have.attr', 'aria-label').and('contain', 'richCheckbox
one :
a ');
- cy.get(`#${richCheckbox2Id}`).find(`${selectors.checkboxgroupWidget}[value='0']`).should('have.attr', 'aria-label').and('contain', '
richCheckbox two
:
Item 1');
+ cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='a']`).should('have.attr', 'aria-label').and('contain', 'richCheckbox one: a');
+ cy.get(`#${richCheckbox2Id}`).find(`${selectors.checkboxgroupWidget}[value='0']`).should('have.attr', 'aria-label').and('contain', 'richCheckbox two: Item 1');
})
it("should maintain proper data attributes for all components", () => {
@@ -277,20 +276,19 @@ describe("Dynamic Options: Enum and EnumNames for CheckboxGroup, radiobutton and
cy.get(`#${extraRadioId}`).find(`${selectors.radiobuttonWidget}[value='b']`).should('have.attr', 'aria-label', 'extraRadio One: Beta');
})
- //TOFIX: Rich text in aria-label
it("should have proper aria-labels for rich text components", () => {
const richCheckboxId = componentIds['richCheckbox'];
const richCheckbox2Id = componentIds['richCheckbox2'];
// Test richCheckbox aria-labels with rich text
- cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='a']`).should('have.attr', 'aria-label', 'richCheckbox
one :
a ');
- cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='b']`).should('have.attr', 'aria-label', 'richCheckbox
one : b');
- cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='c']`).should('have.attr', 'aria-label', 'richCheckbox
one : c');
- cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='d']`).should('have.attr', 'aria-label', 'richCheckbox
one :
d ');
+ cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='a']`).should('have.attr', 'aria-label', 'richCheckbox one: a');
+ cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='b']`).should('have.attr', 'aria-label', 'richCheckbox one: b');
+ cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='c']`).should('have.attr', 'aria-label', 'richCheckbox one: c');
+ cy.get(`#${richCheckboxId}`).find(`${selectors.checkboxgroupWidget}[value='d']`).should('have.attr', 'aria-label', 'richCheckbox one: d');
// Test richCheckbox2 aria-labels with rich text
- cy.get(`#${richCheckbox2Id}`).find(`${selectors.checkboxgroupWidget}[value='0']`).should('have.attr', 'aria-label', '
richCheckbox two
:
Item 1');
- cy.get(`#${richCheckbox2Id}`).find(`${selectors.checkboxgroupWidget}[value='1']`).should('have.attr', 'aria-label', '
richCheckbox two
:
Item 2');
+ cy.get(`#${richCheckbox2Id}`).find(`${selectors.checkboxgroupWidget}[value='0']`).should('have.attr', 'aria-label', 'richCheckbox two: Item 1');
+ cy.get(`#${richCheckbox2Id}`).find(`${selectors.checkboxgroupWidget}[value='1']`).should('have.attr', 'aria-label', 'richCheckbox two: Item 2');
})
From 3bbcc32b1eca5c10c5b30d218ef43d9c032bb6a7 Mon Sep 17 00:00:00 2001
From: armaang1729
Date: Wed, 24 Sep 2025 15:00:17 +0530
Subject: [PATCH 02/35] Merge pull request #1713 from adobe/FORMS-21742
Feat: added the loader to avoid multiple submits and tests
---
.../form/actions/submit/v1/submit/README.md | 14 ++++--
.../button/clientlibs/site/js/buttonview.js | 49 ++++++++++++++++++-
.../form/container/v2/container/README.md | 5 +-
.../specs/actions/submit/submit.runtime.cy.js | 18 +++++++
4 files changed, 80 insertions(+), 6 deletions(-)
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/actions/submit/v1/submit/README.md b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/actions/submit/v1/submit/README.md
index 3ed57c1e5b..1901b3eed3 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/actions/submit/v1/submit/README.md
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/actions/submit/v1/submit/README.md
@@ -23,6 +23,7 @@ Adaptive Form Submit Button component written in HTL.
* Custom description/tooltip for help
* Out of the box Submit rule in the button to submit the form
* Allows replacing this component with other component (as mentioned below).
+* Shows a loader on the form container during submission
### Use Object
The submit button component uses the `com.adobe.cq.forms.core.components.models.form.Button` Sling Model for its Use-object.
@@ -41,6 +42,14 @@ The button has a default property of `buttonType` set to `submit` which is used
The component provides a `core.forms.components.button.v1.runtime` client library category that contains the Javascript runtime for the component.
It should be added to a relevant site client library using the `embed` property.
+### Loader behavior on submit
+
+When the Submit button is activated and the form begins submission, the form container gets a loading state so users receive visual feedback:
+
+- The form element `form.cmp-adaptiveform-container` toggles the CSS class `cmp-adaptiveform-container--submitting` for the duration of the network request.
+- The loading class is removed and the loader hides when validation fails, the submission succeeds, or an error occurs.
+
+
## BEM Description
```
BLOCK cmp-adaptiveform-button
@@ -83,7 +92,4 @@ We support replace feature that allows replacing Reset Button component to any o
* **Vendor**: Adobe
* **Version**: v1
* **Compatibility**: Cloud
-* **Status**: production-ready
-
-
-
+* **Status**: production-ready
\ No newline at end of file
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/button/v1/button/clientlibs/site/js/buttonview.js b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/button/v1/button/clientlibs/site/js/buttonview.js
index dc7512fc63..bcda72d280 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/button/v1/button/clientlibs/site/js/buttonview.js
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/button/v1/button/clientlibs/site/js/buttonview.js
@@ -36,6 +36,50 @@
tooltipDiv: `.${Button.bemBlock}__shortdescription`
};
+ constructor(params) {
+ super(params);
+ const formModel = this.formContainer?.getModel?.();
+ if (!formModel) { return; }
+
+ formModel.subscribe((action) => { // hide loader if validation fails (no submit performed)
+ const errors = action?.payload;
+ if (Array.isArray(errors) && errors.length > 0) {
+ this._hideLoader();
+ }
+ }, 'validationComplete');
+
+ formModel.subscribe(() => { // hide loader on submit success
+ this._hideLoader();
+ }, 'submitSuccess');
+
+ formModel.subscribe(() => { // hide loader on submit error
+ this._hideLoader();
+ }, 'submitError');
+ }
+
+ _container = null;
+
+ _getContainer() {
+ if (this._container) return this._container;
+ const container = this.formContainer?.getFormElement?.();
+ if (container) this._container = container;
+ return this._container;
+ }
+
+ _showLoader() {
+ const container = this._getContainer();
+ if (container) {
+ container.classList.add('cmp-adaptiveform-container--submitting');
+ }
+ }
+
+ _hideLoader() {
+ const container = this._getContainer();
+ if (container) {
+ container.classList.remove('cmp-adaptiveform-container--submitting');
+ }
+ }
+
getQuestionMarkDiv() {
return this.element.querySelector(Button.selectors.qm);
}
@@ -70,6 +114,9 @@
if (this.widget.type === 'submit' || this.widget.type === 'reset') {
event.preventDefault();
}
+ if (this.widget.type === 'submit') {
+ this._showLoader();
+ }
this._model.dispatch(new FormView.Actions.Click());
});
}
@@ -79,4 +126,4 @@
return new Button({element, formContainer})
}, Button.selectors.self);
-})();
+})();
\ No newline at end of file
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/README.md b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/README.md
index 3602149917..a916aba1ab 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/README.md
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/container/v2/container/README.md
@@ -25,6 +25,7 @@ Adaptive Form container written in HTL.
* Thank you message
* Ability to drop other adaptive form components
* Auto save feature for Drafts
+* Loader overlay during form submission to prevent multiple submits
### Use Object
The Adaptive Form Container component uses the `com.adobe.cq.forms.core.components.models.form.FormContainer` Sling Model for its Use-object.
@@ -86,7 +87,9 @@ BLOCK cmp-adaptiveform-container
Apply a `data-cmp-is="adaptiveFormContainer"` attribute to the `cmp-adaptiveform-container` block to enable initialization of the JavaScript component.
-Applying `data-cmp-adaptiveform-container-loader` attribute to the div specifically for applying the loader class on it, it is to ensure that the loading icon should not appear over components.
+Applying `data-cmp-adaptiveform-container-loader` attribute to the div specifically for applying the loader class on it, it is to ensure that the loading icon should not appear over components.
+
+During the form submission, the form element `form.cmp-adaptiveform-container` toggles the class `cmp-adaptiveform-container--submitting` and the loader inside becomes visible. The class is removed once validation fails, submission succeeds or errors out, or the thank you page/message is shown.
Applying `data-cmp-custom-functions-module-url` attribute to the div to point to the edge delivery URL of the custom functions file. Custom Functions exported from this file will be registered in Function Runtime.
This Url should whitelist the AEM author/publish domain in the Cross Origin Resource Sharing (CORS) configuration.
diff --git a/ui.tests/test-module/specs/actions/submit/submit.runtime.cy.js b/ui.tests/test-module/specs/actions/submit/submit.runtime.cy.js
index cc7d165bd4..740405e3e3 100644
--- a/ui.tests/test-module/specs/actions/submit/submit.runtime.cy.js
+++ b/ui.tests/test-module/specs/actions/submit/submit.runtime.cy.js
@@ -197,4 +197,22 @@ describe("Form with Submit Button", () => {
cy.get(`.cmp-adaptiveform-button__widget`).should('have.attr', 'type', 'submit');
});
}
+
+ it("Loader shows on submit and hides on success with thank you", () => {
+ cy.previewForm(customSubmitPagePath);
+
+ let requestStarted = false;
+ cy.intercept('POST', '**/adobe/forms/af/submit/*', (req) => {
+ requestStarted = true;
+ return Cypress.Promise.delay(3000).then(() => req.continue())
+ }).as('afSubmission');
+
+ cy.get(`.cmp-adaptiveform-button__widget`).click();
+
+ cy.get('form.cmp-adaptiveform-container').should('have.class', 'cmp-adaptiveform-container--submitting')
+
+ cy.wait('@afSubmission').then(() => {
+ cy.contains("Thank you for submitting the form.");
+ });
+ });
})
\ No newline at end of file
From 2b9a0e7db8549a736bb2c1fa207db89880cced8b Mon Sep 17 00:00:00 2001
From: Rishi Mehta <69448117+rismehta@users.noreply.github.com>
Date: Thu, 25 Sep 2025 10:24:08 +0530
Subject: [PATCH 03/35] Fixing js doc (#1721)
---
jsdocs/jsdoc.conf.json | 2 +-
ui.frontend/src/view/FormCheckBox.js | 7 +-
ui.frontend/src/view/FormFileInput.js | 85 +++++++++++----------
ui.frontend/src/view/FormOptionFieldBase.js | 7 +-
4 files changed, 58 insertions(+), 43 deletions(-)
diff --git a/jsdocs/jsdoc.conf.json b/jsdocs/jsdoc.conf.json
index b09bb339da..628b4adfc9 100644
--- a/jsdocs/jsdoc.conf.json
+++ b/jsdocs/jsdoc.conf.json
@@ -4,7 +4,7 @@
},
"source": {
"includePattern": ".+\\.js(doc)?$",
- "excludePattern": "(^|\\/|\\\\)_",
+ "excludePattern": "(^|\\/|\\\\)_|FormFileInputWidgetBase\\.js$|FormFileInputWidget\\.js$",
"include": ["./../ui.frontend/src",
"./resources/copyright/README.md"
]
diff --git a/ui.frontend/src/view/FormCheckBox.js b/ui.frontend/src/view/FormCheckBox.js
index 9eee73e711..f94f6001ce 100644
--- a/ui.frontend/src/view/FormCheckBox.js
+++ b/ui.frontend/src/view/FormCheckBox.js
@@ -16,9 +16,14 @@
import FormFieldBase from "./FormFieldBase.js";
+
+/**
+ * @module FormView
+ */
+
/**
* Class representing components based on CheckBox.
- * @extends module:FormView~FormCheckBox
+ * @extends module:FormView~FormFieldBase
*/
class FormCheckBox extends FormFieldBase {
diff --git a/ui.frontend/src/view/FormFileInput.js b/ui.frontend/src/view/FormFileInput.js
index 95e428962e..cb4f0d9296 100644
--- a/ui.frontend/src/view/FormFileInput.js
+++ b/ui.frontend/src/view/FormFileInput.js
@@ -16,56 +16,61 @@
import FormFieldBase from "./FormFieldBase.js";
- /**
- * Class representing components based on FileInput.
- * @extends module:FormView~FormFileInput
- */
- class FormFileInput extends FormFieldBase {
- constructor(params) {
- super(params);
- }
+/**
+ * @module FormView
+ */
- setModel(model) {
- super.setModel(model);
- if (this.widgetObject == null) {
- this.widgetObject = new FileInputWidget(this.widgetFields);
- }
- }
+/**
+ * Class representing components based on FileInput.
+ * @extends module:FormView~FormFieldBase
+ */
+class FormFileInput extends FormFieldBase {
- updateValue(value) {
- if (this.widgetObject == null) {
- this.widgetObject = new FileInputWidget(this.widgetFields);
- }
- this.widgetObject.setValue(value);
- super.updateEmptyStatus();
+ constructor(params) {
+ super(params);
+ }
+
+ setModel(model) {
+ super.setModel(model);
+ if (this.widgetObject == null) {
+ this.widgetObject = new FileInputWidget(this.widgetFields);
}
+ }
- syncWidget() {
- let widgetElement = this.getWidget ? this.getWidget() : null;
- if (widgetElement) {
- widgetElement.id = this.getId() + "__widget";
- this.getAttachButtonLabel().setAttribute('for', this.getId() + "__widget");
- }
+ updateValue(value) {
+ if (this.widgetObject == null) {
+ this.widgetObject = new FileInputWidget(this.widgetFields);
}
+ this.widgetObject.setValue(value);
+ super.updateEmptyStatus();
+ }
- /*
- We are overriding the syncLabel method of the FormFieldBase class because for all components,
- we pass the widgetId in 'for' attribute. However, for the file input component,
- we already have a widget, so we should not pass the widgetId twice
- */
- syncLabel() {
- let labelElement = typeof this.getLabel === 'function' ? this.getLabel() : null;
- if (labelElement) {
- labelElement.setAttribute('for', this.getId());
- }
+ syncWidget() {
+ let widgetElement = this.getWidget ? this.getWidget() : null;
+ if (widgetElement) {
+ widgetElement.id = this.getId() + "__widget";
+ this.getAttachButtonLabel().setAttribute('for', this.getId() + "__widget");
}
+ }
- syncMarkupWithModel() {
- super.syncMarkupWithModel();
- this.syncWidget();
- this.syncLabel();
+ /*
+ We are overriding the syncLabel method of the FormFieldBase class because for all components,
+ we pass the widgetId in 'for' attribute. However, for the file input component,
+ we already have a widget, so we should not pass the widgetId twice
+ */
+ syncLabel() {
+ let labelElement = typeof this.getLabel === 'function' ? this.getLabel() : null;
+ if (labelElement) {
+ labelElement.setAttribute('for', this.getId());
}
}
+
+ syncMarkupWithModel() {
+ super.syncMarkupWithModel();
+ this.syncWidget();
+ this.syncLabel();
+ }
+}
export default FormFileInput;
\ No newline at end of file
diff --git a/ui.frontend/src/view/FormOptionFieldBase.js b/ui.frontend/src/view/FormOptionFieldBase.js
index a808444cc7..dea46b3361 100644
--- a/ui.frontend/src/view/FormOptionFieldBase.js
+++ b/ui.frontend/src/view/FormOptionFieldBase.js
@@ -16,9 +16,14 @@
import FormFieldBase from "./FormFieldBase.js";
+
+/**
+ * @module FormView
+ */
+
/**
* Class containing common view code for dropdown, checkboxgroup and radiobutton
- * @extends module:FormView~FormOptionFieldBase
+ * @extends module:FormView~FormFieldBase
*/
class FormOptionFieldBase extends FormFieldBase {
constructor(params) {
From a361cfb1895fff980d4fb745a8d6683d77115b64 Mon Sep 17 00:00:00 2001
From: Rishi Mehta <69448117+rismehta@users.noreply.github.com>
Date: Tue, 7 Oct 2025 15:13:00 +0530
Subject: [PATCH 04/35] @releng updating af-core (#1726)
* @releng updating af-core
* @releng updating af-core
---
ui.frontend/package-lock.json | 32 ++++++++++++++++----------------
ui.frontend/package.json | 4 ++--
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json
index 71f789faeb..bf2df30634 100644
--- a/ui.frontend/package-lock.json
+++ b/ui.frontend/package-lock.json
@@ -9,10 +9,10 @@
"version": "1.0.0",
"license": "Apache-2.0",
"dependencies": {
- "@aemforms/af-core": "^0.22.153",
+ "@aemforms/af-core": "^0.22.156",
"@aemforms/af-core-xfa": "^0.1.6",
"@aemforms/af-custom-functions": "1.0.17",
- "@aemforms/af-formatters": "^0.22.153"
+ "@aemforms/af-formatters": "^0.22.156"
},
"devDependencies": {
"@babel/preset-env": "^7.18.2",
@@ -108,12 +108,12 @@
}
},
"node_modules/@aemforms/af-core": {
- "version": "0.22.153",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.153.tgz",
- "integrity": "sha512-LNmmAzsW433r94lhxf/xS11zpjdkuzV6vUT4xT7rS4N2KW/oUcxI/7r7zkmrszEIim+2KCnNIicR5269+sOxWg==",
+ "version": "0.22.156",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.156.tgz",
+ "integrity": "sha512-tZ26xMl2eWzdwsv0/plIKFRR5q70SN0jLM+2YRli5BYe65C6/GyAJ3hivPVo420P5dZmrBCWCR+XG8i1SupPJA==",
"dependencies": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.153"
+ "@aemforms/af-formatters": "^0.22.156"
}
},
"node_modules/@aemforms/af-core-xfa": {
@@ -131,9 +131,9 @@
"integrity": "sha512-gDPC/Ly/+aQ7ojSPWm4JM3Zs+NUA+8c6bhjVbKm058AX5UEsXRk+N2o9wK4AHrdsaiR21vmvDuIUyUR2Jb2LTA=="
},
"node_modules/@aemforms/af-formatters": {
- "version": "0.22.153",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.153.tgz",
- "integrity": "sha512-GZQfpHhsYzd/35NJn01lQaDWisS/IX0cpC2Pt2QeikVNs7TnQB1U39MBOuLggU94GeuVU6C3PshUDtzSULTv8g=="
+ "version": "0.22.156",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.156.tgz",
+ "integrity": "sha512-MGJ6tyXkLXhZS5SsLy1XLgcsWQknvyU6xh7VrZmspcvS6/5vJlJxm2NOyr4RTHeoY8DisG22RrVzUNkTkPIzIw=="
},
"node_modules/@ampproject/remapping": {
"version": "2.2.1",
@@ -11132,12 +11132,12 @@
"integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA=="
},
"@aemforms/af-core": {
- "version": "0.22.153",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.153.tgz",
- "integrity": "sha512-LNmmAzsW433r94lhxf/xS11zpjdkuzV6vUT4xT7rS4N2KW/oUcxI/7r7zkmrszEIim+2KCnNIicR5269+sOxWg==",
+ "version": "0.22.156",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.156.tgz",
+ "integrity": "sha512-tZ26xMl2eWzdwsv0/plIKFRR5q70SN0jLM+2YRli5BYe65C6/GyAJ3hivPVo420P5dZmrBCWCR+XG8i1SupPJA==",
"requires": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.153"
+ "@aemforms/af-formatters": "^0.22.156"
}
},
"@aemforms/af-core-xfa": {
@@ -11155,9 +11155,9 @@
"integrity": "sha512-gDPC/Ly/+aQ7ojSPWm4JM3Zs+NUA+8c6bhjVbKm058AX5UEsXRk+N2o9wK4AHrdsaiR21vmvDuIUyUR2Jb2LTA=="
},
"@aemforms/af-formatters": {
- "version": "0.22.153",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.153.tgz",
- "integrity": "sha512-GZQfpHhsYzd/35NJn01lQaDWisS/IX0cpC2Pt2QeikVNs7TnQB1U39MBOuLggU94GeuVU6C3PshUDtzSULTv8g=="
+ "version": "0.22.156",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.156.tgz",
+ "integrity": "sha512-MGJ6tyXkLXhZS5SsLy1XLgcsWQknvyU6xh7VrZmspcvS6/5vJlJxm2NOyr4RTHeoY8DisG22RrVzUNkTkPIzIw=="
},
"@ampproject/remapping": {
"version": "2.2.1",
diff --git a/ui.frontend/package.json b/ui.frontend/package.json
index a1a825e789..4b30095477 100644
--- a/ui.frontend/package.json
+++ b/ui.frontend/package.json
@@ -25,9 +25,9 @@
"webpack-merge": "^5.8.0"
},
"dependencies": {
- "@aemforms/af-core": "^0.22.153",
+ "@aemforms/af-core": "^0.22.156",
"@aemforms/af-core-xfa": "^0.1.6",
- "@aemforms/af-formatters": "^0.22.153",
+ "@aemforms/af-formatters": "^0.22.156",
"@aemforms/af-custom-functions": "1.0.17"
}
}
From 263910394c3cd8c16a0f82c27427ed1f8a1fee1a Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Wed, 8 Oct 2025 12:06:30 +0530
Subject: [PATCH 05/35] @releng [maven-scm] :prepare release
core-forms-components-reactor-3.0.124
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index 42bde3b0fa..207499d5c6 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 7bf12c599f..e521c4d772 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index 17c3162b00..5ec4bcf40c 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index 770c63dbc0..51cc8ba948 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 1eaa7cd150..ccf493f492 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index f59a0d003d..048d2a5582 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index bf0746d6f2..c371d1eecd 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index d95efe8216..f6c34e160d 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index a42eaabcc9..da7eb7fec1 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index 7b1c003443..afd7d60a70 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index 36f962de97..5c6d900e20 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index c9474ac906..766b619a80 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index 1fc421c532..2845afc436 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index bcbbe83494..28a9650688 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.123-SNAPSHOT
+ 3.0.124
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
diff --git a/pom.xml b/pom.xml
index 91c8ea5fec..507170d28b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index b68ccac021..c5d388f02a 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index 9643885a4d..845888cc4c 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.124
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index aa8fe3391f..10104bbbd5 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index 8a120a71ec..b369089189 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.123-SNAPSHOT
+ 3.0.124
../parent/pom.xml
From a3f13e1fc96a5b2390532a02cb837a331ad4b14d Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Wed, 8 Oct 2025 12:06:31 +0530
Subject: [PATCH 06/35] @releng [maven-scm] :prepare for next development
iteration
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index 207499d5c6..d90095c9fa 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index e521c4d772..81103d5fdd 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index 5ec4bcf40c..e94432c4b4 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index 51cc8ba948..fddc693b01 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index ccf493f492..0203bfb2d1 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index 048d2a5582..eaef875a3f 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index c371d1eecd..ba8bef5bfa 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index f6c34e160d..2d37454435 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index da7eb7fec1..03b9caa50a 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index afd7d60a70..f2c08bcc43 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index 5c6d900e20..fc484bb89a 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index 766b619a80..11341f0d15 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index 2845afc436..65e9cd6bed 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index 28a9650688..001f9b6f5a 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.124
+ 3.0.125-SNAPSHOT
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
diff --git a/pom.xml b/pom.xml
index 507170d28b..22fddf533e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index c5d388f02a..b17be2823b 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index 845888cc4c..f3e8ead703 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.124
+ HEAD
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 10104bbbd5..18a8c9be5c 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index b369089189..bbe7ded7d6 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.124
+ 3.0.125-SNAPSHOT
../parent/pom.xml
From 6fa81052c529a1f08df1191c4918783951568ccb Mon Sep 17 00:00:00 2001
From: ci-build
Date: Wed, 8 Oct 2025 06:56:57 +0000
Subject: [PATCH 07/35] Update VERSIONS.md and README.md to include version
3.0.124
---
README.md | 2 +-
VERSIONS.md | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index dad7b3ba1f..cd12b7f6a3 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,7 @@ The latest version of the AEM Forms Core Components, require the below minimum s
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
-| 3.0.122 | 2.24.6 | Continual | 11 | 3.3.9+ |
+| 3.0.124 | 2.24.6 | Continual | 11 | 3.3.9+ |
For a list of requirements for previous versions, see [Historical System Requirements](VERSIONS.md).
diff --git a/VERSIONS.md b/VERSIONS.md
index ac31c125d0..697a48a9c1 100644
--- a/VERSIONS.md
+++ b/VERSIONS.md
@@ -4,6 +4,7 @@ See below for a full list of minimum system requirements for historical versions
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
+| 3.0.124 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.122 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.120 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.118 | 2.24.6 | Continual | 11 | 3.3.9+ |
From 7ce021bec7432b6aacf8656a0ab74193dd220b5c Mon Sep 17 00:00:00 2001
From: armaang1729
Date: Thu, 9 Oct 2025 15:18:42 +0530
Subject: [PATCH 08/35] Checkbox boolean value doesn't work in rule editor
(#1728)
* modified the edit dialog for the checkbox to provide the value when checked for the boolean datatype
* modified the basic form having checkboxes of all datatypes along with the rules
* added the cypress test cases for all the datatypes(string, number, boolean) for checkbox having rule enabled for all of them
* replaced the common logic of checked value for the boolean datatype with the helper function
---------
Co-authored-by: Armaan Gupta
---
.../samples/checkbox/basic/.content.xml | 177 ++++++++++++++++--
.../clientlibs/editor/js/editDialog.js | 26 ++-
.../specs/checkbox/checkbox.runtime.cy.js | 60 ++++++
3 files changed, 240 insertions(+), 23 deletions(-)
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/checkbox/basic/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/checkbox/basic/.content.xml
index 466060d771..701b527865 100644
--- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/checkbox/basic/.content.xml
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/checkbox/basic/.content.xml
@@ -1,11 +1,12 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/checkbox/v1/checkbox/clientlibs/editor/js/editDialog.js b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/checkbox/v1/checkbox/clientlibs/editor/js/editDialog.js
index 5b1ba091f4..67a6ff0c58 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/checkbox/v1/checkbox/clientlibs/editor/js/editDialog.js
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/checkbox/v1/checkbox/clientlibs/editor/js/editDialog.js
@@ -79,17 +79,29 @@
function handleDataTypeSelectionAndValidation(dialog) {
var dataTypeSelect = dialog.find(DATA_TYPE + " coral-select");
var preselectedDataType = dataTypeSelect[0].selectedItem ? dataTypeSelect[0].selectedItem.value : '';
- if (preselectedDataType == 'boolean') {
- dialog.find(ENUMS).hide();
+ var checkedValueSelector = 'input[name="./checkedValue"]';
+
+ function applyCheckedValueBehavior(dataType) { // function which applies checked value behavior based for boolean data type
+ var checkedValueInput = document.querySelector(checkedValueSelector);
+ if (!checkedValueInput) {
+ return;
+ }
+ if (dataType === 'boolean') {
+ checkedValueInput.value = 'true';
+ checkedValueInput.setAttribute('readonly', 'readonly');
+ } else {
+ checkedValueInput.removeAttribute('readonly');
+ }
}
+ // Apply initial behavior based on preselected type
+ applyCheckedValueBehavior(preselectedDataType);
+
dataTypeSelect.on('change', function() {
var selectedDataType = dataTypeSelect[0].selectedItem ? dataTypeSelect[0].selectedItem.value : '';
- if (selectedDataType == 'boolean') {
- dialog.find(ENUMS).hide();
- } else {
- dialog.find(ENUMS).show();
- }
+ dialog.find(ENUMS).show(); // Keep enums visible for all data types (including boolean)
+
+ applyCheckedValueBehavior(selectedDataType); // Toggle checked value input behavior based on data type
});
var registerValidator = function(selector, validate) {
diff --git a/ui.tests/test-module/specs/checkbox/checkbox.runtime.cy.js b/ui.tests/test-module/specs/checkbox/checkbox.runtime.cy.js
index 8e2d761ea7..15335d2924 100644
--- a/ui.tests/test-module/specs/checkbox/checkbox.runtime.cy.js
+++ b/ui.tests/test-module/specs/checkbox/checkbox.runtime.cy.js
@@ -208,4 +208,64 @@ describe("Form Runtime with CheckBox Input", () => {
cy.get(`#${id}`).should('have.class', 'cmp-adaptiveform-checkbox--filled');
});
});
+
+ // test for the checkbox having the rule editor enabled for the boolean data type
+ it("checkbox 7 triggers 8; both go from empty to filled", () => {
+ // Rule on checkbox 7: When checkbox 7 is checked (true), set the value of checkbox 8 to true (checked)
+ const [id7] = Object.entries(formContainer._fields)[7];
+ const [id8] = Object.entries(formContainer._fields)[8];
+
+ // Initially both should be empty and not filled
+ cy.get(`#${id7}`).should('have.class', 'cmp-adaptiveform-checkbox--empty');
+ // .and('not.have.class', 'cmp-adaptiveform-checkbox--filled');
+ cy.get(`#${id8}`).should('have.class', 'cmp-adaptiveform-checkbox--empty');
+ // .and('not.have.class', 'cmp-adaptiveform-checkbox--filled');
+
+ // Click checkbox 7
+ cy.get(`#${id7}`).find('input').click();
+
+ // After click, both should be filled
+ cy.get(`#${id7}`).should('have.class', 'cmp-adaptiveform-checkbox--filled');
+ cy.get(`#${id8}`).should('have.class', 'cmp-adaptiveform-checkbox--filled');
+ });
+
+ // test for the checkbox having the rule editor enabled for the string data type
+ it("checkbox 9 triggers 10; both go from empty to filled", () => {
+ // Rule on checkbox 9: When checkbox 9 is checked (string : "on"), set the value of checkbox 10 to (string : "on") checked
+ const [id9] = Object.entries(formContainer._fields)[9];
+ const [id10] = Object.entries(formContainer._fields)[10];
+
+ // Initially both should be empty and not filled
+ cy.get(`#${id9}`).should('have.class', 'cmp-adaptiveform-checkbox--empty')
+ .and('not.have.class', 'cmp-adaptiveform-checkbox--filled');
+ cy.get(`#${id10}`).should('have.class', 'cmp-adaptiveform-checkbox--empty')
+ .and('not.have.class', 'cmp-adaptiveform-checkbox--filled');
+
+ // Click checkbox 9
+ cy.get(`#${id9}`).find('input').click();
+
+ // After click, both should be filled
+ cy.get(`#${id9}`).should('have.class', 'cmp-adaptiveform-checkbox--filled');
+ cy.get(`#${id10}`).should('have.class', 'cmp-adaptiveform-checkbox--filled');
+ });
+
+ // test for the checkbox having the rule editor enabled for the number data type
+ it("checkbox 11 triggers 12; both go from empty to filled", () => {
+ // Rule on checkbox 11: When checkbox 11 is checked (number : 1), set the value of checkbox 12 to (number : 1) checked
+ const [id11] = Object.entries(formContainer._fields)[11];
+ const [id12] = Object.entries(formContainer._fields)[12];
+
+ // Initially both should be empty and not filled
+ cy.get(`#${id11}`).should('have.class', 'cmp-adaptiveform-checkbox--empty')
+ .and('not.have.class', 'cmp-adaptiveform-checkbox--filled');
+ cy.get(`#${id12}`).should('have.class', 'cmp-adaptiveform-checkbox--empty')
+ .and('not.have.class', 'cmp-adaptiveform-checkbox--filled');
+
+ // Click checkbox 11
+ cy.get(`#${id11}`).find('input').click();
+
+ // After click, both should be filled
+ cy.get(`#${id11}`).should('have.class', 'cmp-adaptiveform-checkbox--filled');
+ cy.get(`#${id12}`).should('have.class', 'cmp-adaptiveform-checkbox--filled');
+ });
})
From 84d1c471a9aa0ddd9fd36e76b768ada91cfcc8b7 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal <47965724+im-shiv@users.noreply.github.com>
Date: Thu, 9 Oct 2025 15:27:45 +0530
Subject: [PATCH 09/35] FORMS-18328 default date localization changes (#1722)
* FORMS-18328 default date localization changes
* FORMS-18328 updating comment message
---------
Co-authored-by: Shivam Agarwal
---
.../v1/datepicker/_cq_dialog/.content.xml | 6 ++---
.../clientlibs/editor/js/editDialog.js | 24 ++++++++++++++++++-
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/_cq_dialog/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/_cq_dialog/.content.xml
index 4886b1c14d..2e4584bb04 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/_cq_dialog/.content.xml
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/_cq_dialog/.content.xml
@@ -49,10 +49,10 @@
@@ -80,9 +80,9 @@
Date: Fri, 3 Oct 2025 13:32:34 +0300
Subject: [PATCH 10/35] FORMS-18632: Info or functionality is unavailable at
320px width equivalent
---
.../clientlibs/site/css/datepickerwidget.css | 40 ++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/clientlibs/site/css/datepickerwidget.css b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/clientlibs/site/css/datepickerwidget.css
index 7072753701..b72103c5cd 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/clientlibs/site/css/datepickerwidget.css
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/datepicker/v1/datepicker/clientlibs/site/css/datepickerwidget.css
@@ -24,6 +24,8 @@
outline: solid #CCCCCC 2px;
flex-direction: column;
width: 433px;
+ max-width: calc(100vw - 20px);
+ box-sizing: border-box;
}
.datetimepicker .dp-clear {
@@ -112,7 +114,8 @@
box-sizing: border-box;
-moz-box-sizing: border-box;
color: #666666;
- min-width:40px;
+ min-width: 40px;
+ flex: 0 0 calc(100% / 7);
}
.datetimepicker .view ul.header li {
@@ -165,4 +168,39 @@
.datefieldwidget.widgetreadonly .cmp-adaptiveform-datepicker__calendar-icon {
display: none;
+}
+
+/* Responsive styles for WCAG 1.4.10 Reflow compliance at 320px */
+@media (max-width: 400px) {
+ .datetimepicker {
+ width: calc(100vw - 20px);
+ left: 10px !important;
+ right: 10px !important;
+ }
+
+ .datetimepicker .view ul {
+ padding: 2px;
+ }
+
+ .datetimepicker .view ul li {
+ min-width: 30px;
+ padding: 3px 1px;
+ font-size: 0.75rem;
+ flex: 0 0 calc(100% / 7);
+ }
+
+ .datetimepicker .dp-header .dp-caption {
+ flex: 1;
+ font-size: 0.875rem;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ .datetimepicker .dp-header .dp-leftnav,
+ .datetimepicker .dp-header .dp-rightnav {
+ min-width: 35px;
+ width: 35px;
+ flex-shrink: 0;
+ }
}
\ No newline at end of file
From 40df4deddc8e045e0a781e2dff1ad8a733492766 Mon Sep 17 00:00:00 2001
From: CezarSTF
Date: Thu, 9 Oct 2025 10:32:25 +0300
Subject: [PATCH 11/35] FORMS-18632: Info or functionality is unavailable at
320px width equivalent @sunnym @vavarshn
---
.../datepicker.runtime.layout.cy.js | 129 ++++++++++++++++++
1 file changed, 129 insertions(+)
diff --git a/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js b/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
index ba57542199..17ab8ef88d 100644
--- a/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
+++ b/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
@@ -361,4 +361,133 @@ describe("Form Runtime layout of Date Picker ", () => {
});
});
+ describe("Reflow at 320px width (WCAG 1.4.10)", () => {
+
+ it("should display all date picker controls at 320px viewport width", () => {
+ cy.viewport(320, 568);
+
+ const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
+
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
+ .should("be.visible")
+ .click();
+
+ cy.get('.datetimepicker.datePickerTarget')
+ .should("be.visible")
+ .and("have.css", "display", "flex");
+
+ cy.get(".dp-leftnav")
+ .should("be.visible")
+ .and("be.visible");
+
+ cy.get(".dp-rightnav")
+ .should("be.visible")
+ .and("be.visible");
+
+ cy.get(".dp-caption")
+ .should("be.visible");
+ });
+
+ it("should display all days in the first column (Sunday) at 320px", () => {
+ cy.viewport(320, 568);
+
+ const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
+ const date = '2026-02-01';
+
+ cy.get(`#${datePicker}`).find("input").clear().type(date);
+
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
+ .should("be.visible")
+ .click();
+
+ cy.get('.datetimepicker.datePickerTarget').within(() => {
+ cy.get('ul.header li').first().should("be.visible").and("contain", "Sun");
+
+ cy.get("#li-day-2").should("be.visible");
+ cy.get("#li-day-9").should("be.visible");
+ cy.get("#li-day-16").should("be.visible");
+ cy.get("#li-day-23").should("be.visible");
+ });
+ });
+
+ it("should allow navigation with previous/next buttons at 320px", () => {
+ cy.viewport(320, 568);
+
+ const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
+ const date = '2025-03-01';
+
+ cy.get(`#${datePicker}`).find("input").clear().type(date);
+
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
+ .should("be.visible")
+ .click();
+
+ cy.get(".dp-caption").should("contain", "March");
+ cy.get(".dp-leftnav").should("be.visible").click();
+ cy.get(".dp-caption").should("contain", "February");
+ cy.get(".dp-rightnav").should("be.visible").click();
+ cy.get(".dp-caption").should("contain", "March");
+ });
+
+ it("should not cause horizontal overflow at 320px", () => {
+ cy.viewport(320, 568);
+
+ const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
+
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
+ .should("be.visible")
+ .click();
+
+ cy.get('.datetimepicker.datePickerTarget').then(($picker) => {
+ const pickerWidth = $picker.outerWidth();
+ expect(pickerWidth).to.be.lessThan(320);
+ });
+
+ cy.document().then((doc) => {
+ expect(doc.documentElement.scrollWidth).to.equal(doc.documentElement.clientWidth);
+ });
+ });
+
+ it("should maintain date column alignment at 320px", () => {
+ cy.viewport(320, 568);
+
+ const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
+ const date = '2025-03-01';
+
+ cy.get(`#${datePicker}`).find("input").clear().type(date);
+
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
+ .should("be.visible")
+ .click();
+
+ cy.get('.datetimepicker.datePickerTarget .view.dp-monthview ul:not(.header)').then(($rows) => {
+ const firstCellWidth = $rows.eq(0).find('li').eq(0).outerWidth();
+
+ $rows.each((rowIndex, row) => {
+ cy.wrap(row).find('li').each((cellIndex, cell) => {
+ const cellWidth = Cypress.$(cell).outerWidth();
+ expect(Math.abs(cellWidth - firstCellWidth)).to.be.lessThan(2);
+ });
+ });
+ });
+ });
+
+ it("should allow date selection at 320px viewport", () => {
+ cy.viewport(320, 568);
+
+ const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
+ const date = '2025-03-01';
+
+ cy.get(`#${datePicker}`).find("input").clear().type(date);
+
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
+ .should("be.visible")
+ .click();
+
+ cy.get("#li-day-10").should("be.visible").click();
+
+ cy.get(`#${datePicker}`).find("input").blur().should("have.value", "Sunday, 2 March, 2025");
+ });
+ });
+
})
\ No newline at end of file
From 1ecac891f8df9c2655ac81a5c65c027b86e2b898 Mon Sep 17 00:00:00 2001
From: CezarSTF
Date: Mon, 13 Oct 2025 14:34:49 +0300
Subject: [PATCH 12/35] FORMS-18632: Info or functionality is unavailable at
320px width equivalent @sunnym @vavarshn
---
.../datepicker.runtime.layout.cy.js | 140 ++----------------
1 file changed, 15 insertions(+), 125 deletions(-)
diff --git a/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js b/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
index 17ab8ef88d..f565580892 100644
--- a/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
+++ b/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
@@ -361,133 +361,23 @@ describe("Form Runtime layout of Date Picker ", () => {
});
});
- describe("Reflow at 320px width (WCAG 1.4.10)", () => {
+ // WCAG 1.4.10 Reflow tests - FORMS-18632
+ it("should display navigation controls at 320px viewport", () => {
+ cy.viewport(320, 568);
+ const [datePicker] = Object.entries(formContainer._fields)[0];
- it("should display all date picker controls at 320px viewport width", () => {
- cy.viewport(320, 568);
-
- const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
-
- cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
- .should("be.visible")
- .click();
-
- cy.get('.datetimepicker.datePickerTarget')
- .should("be.visible")
- .and("have.css", "display", "flex");
-
- cy.get(".dp-leftnav")
- .should("be.visible")
- .and("be.visible");
-
- cy.get(".dp-rightnav")
- .should("be.visible")
- .and("be.visible");
-
- cy.get(".dp-caption")
- .should("be.visible");
- });
-
- it("should display all days in the first column (Sunday) at 320px", () => {
- cy.viewport(320, 568);
-
- const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
- const date = '2026-02-01';
-
- cy.get(`#${datePicker}`).find("input").clear().type(date);
-
- cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
- .should("be.visible")
- .click();
-
- cy.get('.datetimepicker.datePickerTarget').within(() => {
- cy.get('ul.header li').first().should("be.visible").and("contain", "Sun");
-
- cy.get("#li-day-2").should("be.visible");
- cy.get("#li-day-9").should("be.visible");
- cy.get("#li-day-16").should("be.visible");
- cy.get("#li-day-23").should("be.visible");
- });
- });
-
- it("should allow navigation with previous/next buttons at 320px", () => {
- cy.viewport(320, 568);
-
- const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
- const date = '2025-03-01';
-
- cy.get(`#${datePicker}`).find("input").clear().type(date);
-
- cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
- .should("be.visible")
- .click();
-
- cy.get(".dp-caption").should("contain", "March");
- cy.get(".dp-leftnav").should("be.visible").click();
- cy.get(".dp-caption").should("contain", "February");
- cy.get(".dp-rightnav").should("be.visible").click();
- cy.get(".dp-caption").should("contain", "March");
- });
-
- it("should not cause horizontal overflow at 320px", () => {
- cy.viewport(320, 568);
-
- const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
-
- cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
- .should("be.visible")
- .click();
-
- cy.get('.datetimepicker.datePickerTarget').then(($picker) => {
- const pickerWidth = $picker.outerWidth();
- expect(pickerWidth).to.be.lessThan(320);
- });
-
- cy.document().then((doc) => {
- expect(doc.documentElement.scrollWidth).to.equal(doc.documentElement.clientWidth);
- });
- });
-
- it("should maintain date column alignment at 320px", () => {
- cy.viewport(320, 568);
-
- const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
- const date = '2025-03-01';
-
- cy.get(`#${datePicker}`).find("input").clear().type(date);
-
- cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
- .should("be.visible")
- .click();
-
- cy.get('.datetimepicker.datePickerTarget .view.dp-monthview ul:not(.header)').then(($rows) => {
- const firstCellWidth = $rows.eq(0).find('li').eq(0).outerWidth();
-
- $rows.each((rowIndex, row) => {
- cy.wrap(row).find('li').each((cellIndex, cell) => {
- const cellWidth = Cypress.$(cell).outerWidth();
- expect(Math.abs(cellWidth - firstCellWidth)).to.be.lessThan(2);
- });
- });
- });
- });
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon").click();
+ cy.get(".dp-leftnav").should("be.visible");
+ cy.get(".dp-rightnav").should("be.visible");
+ });
- it("should allow date selection at 320px viewport", () => {
- cy.viewport(320, 568);
-
- const [datePicker, datePickerFieldView] = Object.entries(formContainer._fields)[0];
- const date = '2025-03-01';
-
- cy.get(`#${datePicker}`).find("input").clear().type(date);
-
- cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon")
- .should("be.visible")
- .click();
-
- cy.get("#li-day-10").should("be.visible").click();
-
- cy.get(`#${datePicker}`).find("input").blur().should("have.value", "Sunday, 2 March, 2025");
- });
+ it("should display first column dates at 320px", () => {
+ cy.viewport(320, 568);
+ const [datePicker] = Object.entries(formContainer._fields)[0];
+
+ cy.get(`#${datePicker}`).find("input").clear().type('2026-02-01');
+ cy.get(`#${datePicker}`).find(".cmp-adaptiveform-datepicker__calendar-icon").click();
+ cy.get("#li-day-2").should("be.visible");
});
})
\ No newline at end of file
From ff3bd0a1ad5b6a9b6b0733fcd94fde6f585b28a4 Mon Sep 17 00:00:00 2001
From: CezarSTF
Date: Mon, 13 Oct 2025 15:51:46 +0300
Subject: [PATCH 13/35] FORMS-18632: Info or functionality is unavailable at
320px width equivalent @sunnym @vavarshn
---
.../test-module/specs/datepicker/datepicker.runtime.layout.cy.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js b/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
index f565580892..7872c4438f 100644
--- a/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
+++ b/ui.tests/test-module/specs/datepicker/datepicker.runtime.layout.cy.js
@@ -361,7 +361,6 @@ describe("Form Runtime layout of Date Picker ", () => {
});
});
- // WCAG 1.4.10 Reflow tests - FORMS-18632
it("should display navigation controls at 320px viewport", () => {
cy.viewport(320, 568);
const [datePicker] = Object.entries(formContainer._fields)[0];
From 4a2a4f56fbf1bac7cb14c56bdacc3004b8907c8f Mon Sep 17 00:00:00 2001
From: Rishi Mehta <69448117+rismehta@users.noreply.github.com>
Date: Thu, 20 Nov 2025 17:29:08 +0530
Subject: [PATCH 14/35] Unload (#1752)
* guideBridge unload
* feat: unload
* Fixing unload
* unload test cases
* Fixing test and enhancing logic to auto deduce form if there is only one form in the page
* improved js doc
* Simplifying API usage
* review comments
* Fixing test
* Removing container itself
* Review comments
* Fixing test
* Review comments
---
ui.frontend/src/GuideBridge.js | 98 ++++++++++++
ui.frontend/src/utils.js | 16 ++
ui.frontend/src/view/FormContainer.js | 19 +++
ui.tests/test-module/specs/guideBridge.cy.js | 157 +++++++++++++++++++
4 files changed, 290 insertions(+)
diff --git a/ui.frontend/src/GuideBridge.js b/ui.frontend/src/GuideBridge.js
index 08943d36f1..2648d7171e 100644
--- a/ui.frontend/src/GuideBridge.js
+++ b/ui.frontend/src/GuideBridge.js
@@ -18,6 +18,7 @@ import {Constants} from "./constants.js";
import Response from "./Response.js";
import AfFormData from "./FormData.js";
import {readAttachments} from "@aemforms/af-core";
+import Utils from "./utils.js";
/**
* The GuideBridge class represents the bridge between an adaptive form and JavaScript APIs.
@@ -451,6 +452,103 @@ class GuideBridge {
getConfigsForKey(key) {
return this.#userConfig[key] || [];
}
+
+ /**
+ * Unloads the adaptive form, cleaning up internal state and removing DOM elements.
+ * @summary Unloads an adaptive form, removing form container view, handlers, and configurations.
+ * @param {string} [formContainerPath] - Optional path of the form container to unload.
+ * If not provided, unloads the currently connected form.
+ * @method
+ * @memberof GuideBridge
+ * @instance
+ * @example
+ * // Simplest - unload current connected form
+ * guideBridge.unloadAdaptiveForm();
+ *
+ * // Unload specific form by path (for multiple forms on page)
+ * guideBridge.unloadAdaptiveForm('/content/forms/af/myform');
+ *
+ * // Get path from form container and unload
+ * const formPath = formContainer.getPath();
+ * guideBridge.unloadAdaptiveForm(formPath);
+ *
+ */
+ unloadAdaptiveForm(formContainerPath) {
+ // Use provided path or fall back to current formContainerPath
+ const pathToUnload = formContainerPath || this.#formContainerPath;
+
+ if (!pathToUnload) {
+ console.warn("No form container path specified or available to unload.");
+ return;
+ }
+
+ // Get the container element from the view and disconnect mutation observers
+ let container = null;
+ if (this.#formContainerViewMap[pathToUnload]) {
+ const formContainerView = this.#formContainerViewMap[pathToUnload];
+ container = formContainerView.getFormElement();
+
+ // Disconnect all mutation observers for this form
+ if (typeof formContainerView._disconnectMutationObservers === 'function') {
+ formContainerView._disconnectMutationObservers();
+ }
+ }
+
+ // Clear XFA-specific state if XFA forms are loaded
+ if (window.formBridge && typeof window.formBridge.destroyForm === 'function') {
+ window.formBridge.destroyForm();
+ }
+
+ // Clean up global state when this is the last/only form
+ // NOTE: Global widgets, caches, and utilities don't have form-specific identifiers,
+ // so we can only safely clear them if this is the only/last form on the page.
+ // For multi-form scenarios, these will remain but will be garbage collected
+ // when no longer referenced by any form.
+ const isLastForm = Object.keys(this.#formContainerViewMap).length === 1;
+ if (isLastForm) {
+ // Clear DatePicker cache
+ if (window.afCache && typeof window.afCache.store === 'object') {
+ window.afCache.store = {};
+ }
+
+ // Clean up global widgets
+ const widgetSelectors = [
+ '.cmp-adaptiveform-recaptcha__widget',
+ '.cmp-adaptiveform-turnstile__widget',
+ '.cmp-adaptiveform-hcaptcha__widget',
+ '.datetimepicker.datePickerTarget' // DatePicker popup
+ ];
+
+ widgetSelectors.forEach(selector => {
+ const widgets = document.querySelectorAll(selector);
+ widgets.forEach(widget => widget.remove());
+ });
+
+ // Clear Utils static state (contextPath, fieldCreatorSets, fieldCreatorOrder)
+ Utils._clearState();
+
+ // Clear XFA utility (global XFA logger/utility)
+ if (window.xfalib && window.xfalib.ut) {
+ window.xfalib.ut = null;
+ }
+ }
+
+ // Remove the entire form container element from DOM
+ if (container) {
+ container.remove();
+ }
+
+ // Remove the form container from the map
+ delete this.#formContainerViewMap[pathToUnload];
+
+ // Reset formContainerPath if it matches the one being unloaded
+ if (this.#formContainerPath === pathToUnload) {
+ this.#formContainerPath = "";
+ }
+
+ // Note: FunctionRuntime.customFunctions is intentionally NOT cleared
+ // as it's a global registry shared across all forms, matching classic behavior
+ }
};
export default GuideBridge;
diff --git a/ui.frontend/src/utils.js b/ui.frontend/src/utils.js
index 94c6b90db1..65431709d1 100644
--- a/ui.frontend/src/utils.js
+++ b/ui.frontend/src/utils.js
@@ -112,6 +112,11 @@ class Utils {
childList: true,
characterData: true
});
+
+ // Store observer in form container for cleanup
+ if (formContainer._addMutationObserver) {
+ formContainer._addMutationObserver(observer);
+ }
}
/**
@@ -257,6 +262,17 @@ class Utils {
return Utils.#contextPath;
}
+ /**
+ * Clears all static state in Utils.
+ * Should be called when the last form is unloaded to ensure clean state.
+ * @private
+ */
+ static _clearState() {
+ Utils.#contextPath = "";
+ Utils.#fieldCreatorSets = {};
+ Utils.#fieldCreatorOrder = [];
+ }
+
/**
* Registers handler on elements on hook.
* @param {Element} parentElement - The parent element.
diff --git a/ui.frontend/src/view/FormContainer.js b/ui.frontend/src/view/FormContainer.js
index ea0b31295d..6053e3a571 100644
--- a/ui.frontend/src/view/FormContainer.js
+++ b/ui.frontend/src/view/FormContainer.js
@@ -35,6 +35,7 @@ class FormContainer {
this._fields = {};
this._deferredParents = {};
this._element = params._element;
+ this._mutationObservers = []; // Store mutation observers for cleanup
// Prevent default behaviour on form container.
this.#preventDefaultSubmit();
@@ -66,6 +67,24 @@ class FormContainer {
}
}
+ /**
+ * Adds a mutation observer to the container for cleanup.
+ * @param {MutationObserver} observer - The mutation observer to track.
+ * @private
+ */
+ _addMutationObserver(observer) {
+ this._mutationObservers.push(observer);
+ }
+
+ /**
+ * Disconnects all mutation observers.
+ * @private
+ */
+ _disconnectMutationObservers() {
+ this._mutationObservers.forEach(observer => observer.disconnect());
+ this._mutationObservers = [];
+ }
+
/**
* Adds an instance manager view to the fields of the formContainer.
* @param {object} instanceManager - The instance manager view to be added.
diff --git a/ui.tests/test-module/specs/guideBridge.cy.js b/ui.tests/test-module/specs/guideBridge.cy.js
index 5b53726571..68a7f62e07 100644
--- a/ui.tests/test-module/specs/guideBridge.cy.js
+++ b/ui.tests/test-module/specs/guideBridge.cy.js
@@ -90,4 +90,161 @@ describe('GuideBridge ', () => {
});
cy.expectNoConsoleErrors();
})
+
+ it('should unload the adaptive form and clean up state', () => {
+ cy.window().then($window => {
+ if($window.guideBridge && $window.guideBridge.isConnected()) {
+ const formContainerPath = formContainer.getPath();
+ const containerSelector = '[data-cmp-is="adaptiveFormContainer"]';
+
+ // Verify form is loaded and connected
+ expect($window.guideBridge.isConnected()).to.be.true;
+ expect($window.guideBridge.getFormModel()).to.not.be.null;
+
+ // Capture Utils state before unload
+ let contextPathBeforeUnload = '';
+ if ($window.FormView && $window.FormView.Utils) {
+ contextPathBeforeUnload = $window.FormView.Utils.getContextPath();
+ }
+
+ // Verify MutationObservers exist before unload
+ const mutationObserversBeforeUnload = formContainer._mutationObservers;
+ expect(mutationObserversBeforeUnload).to.be.an('array');
+ const hasObservers = mutationObserversBeforeUnload.length > 0;
+
+ // Create some mock widget elements in body to test cleanup
+ const mockRecaptchaWidget = $window.document.createElement('div');
+ mockRecaptchaWidget.className = 'cmp-adaptiveform-recaptcha__widget';
+ $window.document.body.appendChild(mockRecaptchaWidget);
+
+ const mockDatePickerWidget = $window.document.createElement('div');
+ mockDatePickerWidget.className = 'datetimepicker datePickerTarget';
+ $window.document.body.appendChild(mockDatePickerWidget);
+
+ // Set up some cache to test cleanup
+ if ($window.afCache) {
+ $window.afCache.store = { testKey: 'testValue' };
+ }
+
+ // Verify DOM elements exist before unload
+ const formContainerEl = $window.document.querySelector(containerSelector);
+ expect(formContainerEl).to.not.be.null;
+ expect(formContainerEl.children.length).to.be.greaterThan(0);
+ expect($window.document.querySelector('.cmp-adaptiveform-recaptcha__widget')).to.not.be.null;
+ expect($window.document.querySelector('.datetimepicker.datePickerTarget')).to.not.be.null;
+
+ // Call unloadAdaptiveForm with just the path
+ $window.guideBridge.unloadAdaptiveForm(formContainerPath);
+
+ // Verify container is completely removed from DOM
+ expect($window.document.querySelector(containerSelector)).to.be.null;
+
+ // Verify widget elements are removed from body
+ expect($window.document.querySelector('.cmp-adaptiveform-recaptcha__widget')).to.be.null;
+ expect($window.document.querySelector('.datetimepicker.datePickerTarget')).to.be.null;
+
+ // Verify cache is cleared
+ if ($window.afCache) {
+ expect($window.afCache.store).to.deep.equal({});
+ }
+
+ // Verify MutationObservers are disconnected and cleared
+ // Note: The _disconnectMutationObservers method is called during unload
+ // which disconnects and clears the observers array
+ if (hasObservers) {
+ // After unload, observers should be disconnected and array should be empty
+ expect(formContainer._mutationObservers).to.be.an('array');
+ expect(formContainer._mutationObservers.length).to.equal(0,
+ `Expected mutation observers to be cleared after unload. Found ${formContainer._mutationObservers.length} observers.`);
+ }
+
+ // Verify Utils static state is cleared (since this is the last/only form)
+ if ($window.FormView && $window.FormView.Utils) {
+ // contextPath should be cleared
+ const contextPathAfterUnload = $window.FormView.Utils.getContextPath();
+ expect(contextPathAfterUnload).to.equal('',
+ `Expected contextPath to be cleared. Was: "${contextPathBeforeUnload}", Now: "${contextPathAfterUnload}"`);
+ }
+
+ // Verify form model is no longer available for the unloaded path
+ expect($window.guideBridge.getFormModel()).to.be.null;
+ }
+ });
+ cy.expectNoConsoleErrors();
+ })
+
+ it('should handle multiple calls to unloadAdaptiveForm safely', () => {
+ cy.window().then($window => {
+ if($window.guideBridge && $window.guideBridge.isConnected()) {
+ const formContainerPath = formContainer.getPath();
+
+ // First call
+ $window.guideBridge.unloadAdaptiveForm(formContainerPath);
+
+ // Second call should not throw errors
+ expect(() => {
+ $window.guideBridge.unloadAdaptiveForm(formContainerPath);
+ }).to.not.throw();
+
+ // Verify no console errors
+ cy.expectNoConsoleErrors();
+ }
+ });
+ })
+
+ it('should auto-deduce form when path not provided', () => {
+ cy.previewForm(pagePath).then(p => {
+ formContainer = p;
+ cy.window().then($window => {
+ if($window.guideBridge && $window.guideBridge.isConnected()) {
+ const containerSelector = '[data-cmp-is="adaptiveFormContainer"]';
+ const formContainerEl = $window.document.querySelector(containerSelector);
+
+ // Call without any parameters - should auto-find and clean current form
+ $window.guideBridge.unloadAdaptiveForm();
+
+ // Verify container is completely removed from DOM
+ expect($window.document.querySelector(containerSelector)).to.be.null;
+
+ // Verify form is disconnected
+ expect($window.guideBridge.isConnected()).to.be.false;
+ }
+ });
+ cy.expectNoConsoleErrors();
+ });
+ })
+
+ it('should warn when unloadAdaptiveForm is called without a valid form path', () => {
+ cy.previewForm(pagePath).then(p => {
+ formContainer = p;
+ cy.window().then($window => {
+ if($window.guideBridge && $window.guideBridge.isConnected()) {
+ const formContainerPath = formContainer.getPath();
+
+ // First unload the form to clear the internal formContainerPath
+ $window.guideBridge.unloadAdaptiveForm(formContainerPath);
+
+ // Now guideBridge has no formContainerPath set
+ expect($window.guideBridge.isConnected()).to.be.false;
+
+ // Spy on console.warn to capture the warning
+ let warningMessage = null;
+ const originalWarn = $window.console.warn;
+ $window.console.warn = function(msg) {
+ warningMessage = msg;
+ originalWarn.apply($window.console, arguments);
+ };
+
+ // Call unloadAdaptiveForm again without any form path available
+ $window.guideBridge.unloadAdaptiveForm();
+
+ // Restore original warn
+ $window.console.warn = originalWarn;
+
+ // Verify warning was logged
+ expect(warningMessage).to.equal('No form container path specified or available to unload.');
+ }
+ });
+ });
+ })
})
From 80a8047f0da23e1c0331c8c814704b5413c632ea Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Thu, 20 Nov 2025 19:39:55 +0530
Subject: [PATCH 15/35] @releng [maven-scm] :prepare release
core-forms-components-reactor-3.0.126
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index d90095c9fa..84e8b42439 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 81103d5fdd..7c91dea1c2 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index e94432c4b4..f4e71f5043 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index fddc693b01..d82d693ff2 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 0203bfb2d1..2317e17bc7 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index eaef875a3f..30e417fe85 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index ba8bef5bfa..6a63ac7835 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index 2d37454435..38dc073f68 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index 03b9caa50a..ffeaa4fc2f 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index f2c08bcc43..f81f1f9654 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index fc484bb89a..e196d7c083 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index 11341f0d15..9eee879d40 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index 65e9cd6bed..55bac8355b 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index 001f9b6f5a..d72421a0b1 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.125-SNAPSHOT
+ 3.0.126
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
diff --git a/pom.xml b/pom.xml
index 22fddf533e..af67d0fc55 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index b17be2823b..496eb8c099 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index f3e8ead703..03e3af6324 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.126
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 18a8c9be5c..6b6a5548f7 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index bbe7ded7d6..2d246c6316 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.125-SNAPSHOT
+ 3.0.126
../parent/pom.xml
From 801fce416b7d94217e2919eff4b471a0f1dc9270 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Thu, 20 Nov 2025 19:39:56 +0530
Subject: [PATCH 16/35] @releng [maven-scm] :prepare for next development
iteration
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index 84e8b42439..fa4f390af4 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 7c91dea1c2..0ec50255a9 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index f4e71f5043..7f7cc4cf62 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index d82d693ff2..8408adbfbd 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 2317e17bc7..88397eee78 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index 30e417fe85..4a40c51cf3 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index 6a63ac7835..686ce06545 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index 38dc073f68..050e84265a 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index ffeaa4fc2f..67598d92b5 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index f81f1f9654..a551e26f24 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index e196d7c083..0fcf4df579 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index 9eee879d40..b81f8a2b55 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index 55bac8355b..f8e78a31fc 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index d72421a0b1..db3ff596ea 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.126
+ 3.0.127-SNAPSHOT
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
diff --git a/pom.xml b/pom.xml
index af67d0fc55..ae450f1f2d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index 496eb8c099..75d77da946 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index 03e3af6324..55fe7a030b 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.126
+ HEAD
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 6b6a5548f7..879e441742 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index 2d246c6316..7544c5c961 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.126
+ 3.0.127-SNAPSHOT
../parent/pom.xml
From ed6f4e77ed160258db6f4c14d1e38f18176224bc Mon Sep 17 00:00:00 2001
From: ci-build
Date: Thu, 20 Nov 2025 14:32:00 +0000
Subject: [PATCH 17/35] Update VERSIONS.md and README.md to include version
3.0.126
---
README.md | 2 +-
VERSIONS.md | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index cd12b7f6a3..0483482e4e 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,7 @@ The latest version of the AEM Forms Core Components, require the below minimum s
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
-| 3.0.124 | 2.24.6 | Continual | 11 | 3.3.9+ |
+| 3.0.126 | 2.24.6 | Continual | 11 | 3.3.9+ |
For a list of requirements for previous versions, see [Historical System Requirements](VERSIONS.md).
diff --git a/VERSIONS.md b/VERSIONS.md
index 697a48a9c1..9e7d273395 100644
--- a/VERSIONS.md
+++ b/VERSIONS.md
@@ -4,6 +4,7 @@ See below for a full list of minimum system requirements for historical versions
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
+| 3.0.126 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.124 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.122 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.120 | 2.24.6 | Continual | 11 | 3.3.9+ |
From e76276c8c891164327d2260655609beb16b1ecb7 Mon Sep 17 00:00:00 2001
From: Anirudh Aggarwal <35608797+ard1498@users.noreply.github.com>
Date: Fri, 28 Nov 2025 16:14:47 +0530
Subject: [PATCH 18/35] FORMS-22032 Added support for reading associate
properties container (#1758)
* FORMS-22032 Added support for reading associate level properties
* FORMS-22032 Added corresponding schema changes.
* FORMS-22032 Update adaptive-form-associate-properties schema and increment core.print.api.version to 1.0.26
* FORMS-22032 Added test case to boost coverage
* FORMS-22032 Added an exception check addressing a review comment.
* FORMS-22032 resolved formatting issue.
---------
Co-authored-by: Anirudh Aggarwal
---
.../util/AbstractFormComponentImpl.java | 24 ++++++++++++++++
.../util/AbstractFormComponentImplTest.java | 19 +++++++++++++
.../adaptive-form-properties.schema.json | 5 +++-
.../schema/0.15.2/adaptive-form.schema.json | 5 +++-
...tive-form-associate-properties.schema.json | 28 +++++++++++++++++++
parent/pom.xml | 2 +-
6 files changed, 80 insertions(+), 3 deletions(-)
create mode 100644 bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json
diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java
index 27dfdc95d3..f7b1ef5e6a 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java
@@ -61,6 +61,7 @@
import com.adobe.cq.forms.core.components.models.form.FieldType;
import com.adobe.cq.forms.core.components.models.form.FormComponent;
import com.adobe.cq.forms.core.components.models.form.Label;
+import com.adobe.cq.forms.core.components.models.form.print.associate.AssociateProperties;
import com.adobe.cq.forms.core.components.models.form.print.dorapi.DorContainer;
import com.adobe.cq.wcm.core.components.models.Component;
import com.adobe.cq.wcm.core.components.util.ComponentUtils;
@@ -302,6 +303,7 @@ protected boolean getEditMode() {
return customLayoutProperties;
}
+ public static final String CUSTOM_ASSOCIATE_PROPERTY_WRAPPER = "fd:associate";
public static final String CUSTOM_DOR_PROPERTY_WRAPPER = "fd:dor";
public static final String CUSTOM_DOR_CONTAINER_WRAPPER = "dorContainer";
// used for DOR and SPA editor to work
@@ -341,6 +343,10 @@ protected boolean getEditMode() {
if (!disabledScripts.isEmpty()) {
properties.put("fd:disabledXfaScripts", disabledScripts);
}
+ Map associateProperties = getAssociateProperties();
+ if (!associateProperties.isEmpty()) {
+ properties.put(CUSTOM_ASSOCIATE_PROPERTY_WRAPPER, associateProperties);
+ }
return properties;
}
@@ -603,6 +609,24 @@ private Map getCustomProperties() {
return customProperties;
}
+ private Map getAssociateProperties() {
+ if (FormConstants.CHANNEL_PRINT.equals(this.channel) && resource != null) {
+ Resource associatePropertiesResource = resource.getChild(CUSTOM_ASSOCIATE_PROPERTY_WRAPPER);
+ if (associatePropertiesResource != null) {
+ try {
+ AssociateProperties associateProperties = associatePropertiesResource.adaptTo(AssociateProperties.class);
+ ObjectMapper objectMapper = new ObjectMapper();
+ if (associateProperties != null) {
+ return objectMapper.convertValue(associateProperties, new TypeReference>() {});
+ }
+ } catch (Exception e) {
+ logger.warn("Unable to adapt associate properties", e);
+ }
+ }
+ }
+ return Collections.emptyMap();
+ }
+
@Override
@JsonIgnore
public Map getDorProperties() {
diff --git a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java
index 9f66c5eebb..f3cc7f5fca 100644
--- a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java
+++ b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java
@@ -21,7 +21,9 @@
import java.util.Map;
import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
+import org.apache.sling.testing.resourceresolver.MockValueMap;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -215,4 +217,21 @@ public void testPrintChannelRule() {
Object formReadyRule = ((Map) rulesProperties).get("fd:formReady");
assertNotNull(formReadyRule);
}
+
+ @Test
+ public void testAssociateProperties() {
+ Resource resource = Mockito.mock(Resource.class);
+ AbstractFormComponentImpl abstractFormComponentImpl = new AbstractFormComponentImpl();
+ Utils.setInternalState(abstractFormComponentImpl, "resource", resource);
+ Utils.setInternalState(abstractFormComponentImpl, "channel", "print");
+
+ ValueMap valueMap = new MockValueMap(resource);
+ Mockito.doReturn(valueMap).when(resource).getValueMap();
+ Mockito.doReturn(null).when(resource).getChild("fd:dorContainer");
+ Mockito.doReturn(null).when(resource).getChild("fd:rules");
+ Resource associateResource = Mockito.mock(Resource.class);
+ Mockito.doReturn(associateResource).when(resource).getChild("fd:associate");
+ Map properties = abstractFormComponentImpl.getProperties();
+ assertNull(properties.get("fd:associate"));
+ }
}
diff --git a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json
index 55edb3c17a..9dc0adf220 100644
--- a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json
+++ b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json
@@ -228,6 +228,9 @@
"properties": {
"fd:dor": {
"$ref": "./adaptive-form-dor-properties.schema.json"
+ },
+ "fd:associate": {
+ "$ref": "./print/adaptive-form-associate-properties.schema.json"
}
},
"additionalProperties": true
@@ -341,4 +344,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json
index 189875cd22..e61f624d7f 100644
--- a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json
+++ b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json
@@ -1912,6 +1912,9 @@
},
"fd:signerInfo": {
"$ref": "./adaptive-form-sign-properties.schema.json"
+ },
+ "fd:associate": {
+ "$ref": "./print/adaptive-form-associate-properties.schema.json"
}
},
"additionalProperties": true
@@ -1952,4 +1955,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json b/bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json
new file mode 100644
index 0000000000..f17c595ca7
--- /dev/null
+++ b/bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json
@@ -0,0 +1,28 @@
+{
+ "$id": "classpath:/schema/0.15.2/print/adaptive-form-associate-properties.schema.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "enabled": {
+ "title": "Enabled",
+ "description": "If the associate is enabled for the channel.",
+ "type": "boolean",
+ "default": false,
+ "optional": true
+ },
+ "readOnly": {
+ "title": "ReadOnly",
+ "description": "If the associate can edit the components contents. There can be a case where field gets it's value from the prefill service and associate is restricted to edit the field contents. In that case readOnly is kept True.",
+ "type": "boolean",
+ "default": true
+ },
+ "ordered": {
+ "title": "Ordered",
+ "description": "If associate can arrange order of elements of a flowed container.",
+ "type": "boolean",
+ "optional": true,
+ "default": false
+ }
+ }
+}
diff --git a/parent/pom.xml b/parent/pom.xml
index c600faee99..3b458ded91 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -91,7 +91,7 @@
2.24.6
2.24.6
- 1.0.12
+ 1.0.26
UTF-8
2.16.0
From 054b7ffafb14f440652859510f0fbf5e2b4b6b48 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Mon, 1 Dec 2025 11:31:39 +0530
Subject: [PATCH 19/35] @releng [maven-scm] :prepare release
core-forms-components-reactor-3.0.128
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index fa4f390af4..cd9b77afc9 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 0ec50255a9..992b54404c 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index 7f7cc4cf62..117a0ce9c2 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index 8408adbfbd..ecd753676a 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 88397eee78..d2896a045d 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index 4a40c51cf3..98060fb1f1 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index 686ce06545..e35dda1e9d 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index 050e84265a..e0d7ec449b 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index 67598d92b5..ff1cc086c8 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index a551e26f24..70fdb44003 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index 0fcf4df579..c592b87faf 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index b81f8a2b55..a03984f0a1 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index f8e78a31fc..e58f43ae71 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index 202d028b3a..726385d976 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.127-SNAPSHOT
+ 3.0.128
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
diff --git a/pom.xml b/pom.xml
index ae450f1f2d..6baaf8c45a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index 75d77da946..2e8b8ea3af 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index 55fe7a030b..502addd7ae 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.128
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 879e441742..293652d2ce 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index 7544c5c961..5cbec364fb 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.127-SNAPSHOT
+ 3.0.128
../parent/pom.xml
From e9c8994f0fe03aed03e5a9e544c06e6825550772 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Mon, 1 Dec 2025 11:31:40 +0530
Subject: [PATCH 20/35] @releng [maven-scm] :prepare for next development
iteration
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index cd9b77afc9..61c98b2896 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 992b54404c..0ecd8736cf 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index 117a0ce9c2..aee0d85e76 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index ecd753676a..c76c8b8763 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index d2896a045d..8464e9e55d 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index 98060fb1f1..c88e61bf1d 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index e35dda1e9d..a2bf8c4ba5 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index e0d7ec449b..7e9efd5560 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index ff1cc086c8..e3f16bf774 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index 70fdb44003..145b50c7f5 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index c592b87faf..46f29df650 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index a03984f0a1..60fa651ca0 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index e58f43ae71..b61e19e043 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index 726385d976..d027ca8a72 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.128
+ 3.0.129-SNAPSHOT
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
diff --git a/pom.xml b/pom.xml
index 6baaf8c45a..b08490ba1d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index 2e8b8ea3af..deb413c721 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index 502addd7ae..71f50c138e 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.128
+ HEAD
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 293652d2ce..d716db00d2 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index 5cbec364fb..f81135fbd1 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.128
+ 3.0.129-SNAPSHOT
../parent/pom.xml
From 291b4c520e5e7f7b70697be0853cf047de9f7c62 Mon Sep 17 00:00:00 2001
From: ci-build
Date: Mon, 1 Dec 2025 06:21:47 +0000
Subject: [PATCH 21/35] Update VERSIONS.md and README.md to include version
3.0.128
---
README.md | 2 +-
VERSIONS.md | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0483482e4e..ab30b7d1a8 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,7 @@ The latest version of the AEM Forms Core Components, require the below minimum s
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
-| 3.0.126 | 2.24.6 | Continual | 11 | 3.3.9+ |
+| 3.0.128 | 2.24.6 | Continual | 11 | 3.3.9+ |
For a list of requirements for previous versions, see [Historical System Requirements](VERSIONS.md).
diff --git a/VERSIONS.md b/VERSIONS.md
index 9e7d273395..dc41aa3782 100644
--- a/VERSIONS.md
+++ b/VERSIONS.md
@@ -4,6 +4,7 @@ See below for a full list of minimum system requirements for historical versions
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
+| 3.0.128 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.126 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.124 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.122 | 2.24.6 | Continual | 11 | 3.3.9+ |
From 659cedd77dfe22b0c2a24283897cc4e938035078 Mon Sep 17 00:00:00 2001
From: armaang1729
Date: Tue, 2 Dec 2025 16:11:13 +0530
Subject: [PATCH 22/35] Merge pull request #1744 from adobe/FORMS-18096
FORMS-18096 : Accessibility Issues with Radio Buttons in Adaptive form Core component
---
.../components/form/radiobutton/.content.xml | 2 +-
.../populate-radiobuttonv2/.content.xml | 23 ++
.../radiobutton/radiobuttonv1/.content.xml | 7 +
.../{ => radiobuttonv1}/basic/.content.xml | 5 +-
.../radiobuttonv1/focustest/.content.xml | 23 ++
.../radiorepeatability/.content.xml | 21 +
.../radiobutton/radiobuttonv2/.content.xml | 7 +
.../radiobuttonv2/basic/.content.xml | 26 ++
.../radiobuttonv2/focustest/.content.xml | 23 ++
.../radiorepeatability/.content.xml | 21 +
.../radiorepeatability/.content.xml | 23 --
.../populate-radiobutton/.content.xml | 8 +-
.../populate-radiobuttonv2/.content.xml | 360 +++++++++++++++++
.../samples/radiobutton/.content.xml | 8 +-
.../radiobutton/radiobuttonv1/.content.xml | 5 +
.../radiobuttonv1/basic/.content.xml | 234 +++++++++++
.../radiobuttonv1/focustest/.content.xml | 57 +++
.../radiorepeatability/.content.xml | 95 +++++
.../radiobutton/radiobuttonv2/.content.xml | 5 +
.../{ => radiobuttonv2}/basic/.content.xml | 2 +-
.../focustest/.content.xml | 2 +-
.../radiorepeatability/.content.xml | 2 +-
.../.content.xml | 2 +-
.../.content.xml | 2 +-
.../af-commons/v1/fieldTemplates/legend.html | 7 +
.../form/radiobutton/v2/.content.xml | 19 +
.../radiobutton/v2/radiobutton/.content.xml | 9 +
.../form/radiobutton/v2/radiobutton/README.md | 115 ++++++
.../v2/radiobutton/clientlibs/.content.xml | 3 +
.../radiobutton/clientlibs/site/.content.xml | 6 +
.../v2/radiobutton/clientlibs/site/js.txt | 18 +
.../clientlibs/site/js/radiobuttonview.js | 206 ++++++++++
.../v2/radiobutton/radiobutton.html | 53 +++
.../radiobutton/v2/radiobutton/radiobutton.js | 36 ++
.../radiobutton/v2/radiobutton/widget.html | 34 ++
ui.frontend/src/view/FormFieldBase.js | 5 +-
.../radionbuttonv2.enum.enumName.cy.js | 204 ++++++++++
.../radiobutton/radiobutton.runtime.cy.js | 17 +-
.../radiobutton/radiobuttonv2.runtime.cy.js | 366 ++++++++++++++++++
39 files changed, 2015 insertions(+), 46 deletions(-)
create mode 100755 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml
rename it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/{ => radiobuttonv1}/basic/.content.xml (93%)
mode change 100755 => 100644
create mode 100644 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml
create mode 100644 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml
create mode 100644 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/basic/.content.xml
create mode 100644 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/focustest/.content.xml
create mode 100644 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/radiorepeatability/.content.xml
delete mode 100755 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiorepeatability/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/basic/.content.xml
create mode 100644 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml
rename it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/{ => radiobuttonv2}/basic/.content.xml (99%)
rename it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/{ => radiobuttonv2}/focustest/.content.xml (99%)
rename it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/{ => radiobuttonv2}/radiorepeatability/.content.xml (99%)
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/af-commons/v1/fieldTemplates/legend.html
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/.content.xml
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/.content.xml
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/README.md
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/.content.xml
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/.content.xml
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js.txt
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js/radiobuttonview.js
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.html
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.js
create mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/widget.html
create mode 100644 ui.tests/test-module/specs/customfunctions/radionbuttonv2.enum.enumName.cy.js
create mode 100644 ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js
diff --git a/examples/ui.apps/src/main/content/jcr_root/apps/forms-components-examples/components/form/radiobutton/.content.xml b/examples/ui.apps/src/main/content/jcr_root/apps/forms-components-examples/components/form/radiobutton/.content.xml
index 06c97ae938..8c3b579445 100644
--- a/examples/ui.apps/src/main/content/jcr_root/apps/forms-components-examples/components/form/radiobutton/.content.xml
+++ b/examples/ui.apps/src/main/content/jcr_root/apps/forms-components-examples/components/form/radiobutton/.content.xml
@@ -3,5 +3,5 @@
jcr:primaryType="cq:Component"
jcr:title="Adaptive Form Radio Button"
jcr:description="Add two or more radio buttons for users to select one of the available options."
- sling:resourceSuperType="core/fd/components/form/radiobutton/v1/radiobutton"
+ sling:resourceSuperType="core/fd/components/form/radiobutton/v2/radiobutton"
componentGroup="Core Components Examples - Adaptive Form"/>
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml
new file mode 100755
index 0000000000..384a7f4154
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml
new file mode 100755
index 0000000000..7256712059
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml
@@ -0,0 +1,7 @@
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/basic/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/basic/.content.xml
old mode 100755
new mode 100644
similarity index 93%
rename from it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/basic/.content.xml
rename to it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/basic/.content.xml
index bdc1e5fad1..033773bc60
--- a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/basic/.content.xml
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/basic/.content.xml
@@ -3,7 +3,6 @@
jcr:primaryType="dam:Asset">
-
\ No newline at end of file
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml
new file mode 100644
index 0000000000..72f9c8a3be
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml
new file mode 100644
index 0000000000..6a0bfd99d5
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml
new file mode 100755
index 0000000000..7256712059
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml
@@ -0,0 +1,7 @@
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/basic/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/basic/.content.xml
new file mode 100644
index 0000000000..033773bc60
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/basic/.content.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/focustest/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/focustest/.content.xml
new file mode 100644
index 0000000000..72f9c8a3be
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/focustest/.content.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/radiorepeatability/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/radiorepeatability/.content.xml
new file mode 100644
index 0000000000..6a0bfd99d5
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiobuttonv2/radiorepeatability/.content.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiorepeatability/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiorepeatability/.content.xml
deleted file mode 100755
index 46b161b293..0000000000
--- a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/radiobutton/radiorepeatability/.content.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobutton/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobutton/.content.xml
index 4cfef3806e..2ccbc6d966 100755
--- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobutton/.content.xml
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobutton/.content.xml
@@ -33,7 +33,7 @@
jcr:lastModifiedBy="admin"
jcr:primaryType="nt:unstructured"
jcr:title="RadioButton with no options"
- sling:resourceType="forms-components-examples/components/form/radiobutton"
+ sling:resourceType="core/fd/components/form/radiobutton/v1/radiobutton"
enabled="{Boolean}true"
fieldType="radio-group"
hideTitle="false"
@@ -109,7 +109,7 @@
jcr:lastModifiedBy="admin"
jcr:primaryType="nt:unstructured"
jcr:title="len(current options) = len(enums/enumNames)"
- sling:resourceType="forms-components-examples/components/form/radiobutton"
+ sling:resourceType="core/fd/components/form/radiobutton/v1/radiobutton"
enabled="{Boolean}true"
enum="[1,2,3]"
enumNames="[country1,country2,country3]"
@@ -187,7 +187,7 @@
jcr:lastModifiedBy="admin"
jcr:primaryType="nt:unstructured"
jcr:title="len(current options) < len(enums/enumNames)"
- sling:resourceType="forms-components-examples/components/form/radiobutton"
+ sling:resourceType="core/fd/components/form/radiobutton/v1/radiobutton"
enabled="{Boolean}true"
enum="[1,2]"
enumNames="[country1,country2]"
@@ -265,7 +265,7 @@
jcr:lastModifiedBy="admin"
jcr:primaryType="nt:unstructured"
jcr:title="len(current options) > len(enums/enumNames)"
- sling:resourceType="forms-components-examples/components/form/radiobutton"
+ sling:resourceType="core/fd/components/form/radiobutton/v1/radiobutton"
enabled="{Boolean}true"
enum="[1,2,3,4]"
enumNames="[country1,country2,country3,country4]"
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml
new file mode 100755
index 0000000000..7a6f567ce6
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/customfunctions/populate-radiobuttonv2/.content.xml
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/.content.xml
index 8f415a05ec..bbf62ed22c 100755
--- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/.content.xml
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/.content.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml
new file mode 100755
index 0000000000..bbf62ed22c
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/.content.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/basic/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/basic/.content.xml
new file mode 100755
index 0000000000..6efc7941c8
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/basic/.content.xml
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml
new file mode 100644
index 0000000000..255b43b69f
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/focustest/.content.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml
new file mode 100755
index 0000000000..35a9ab602d
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability/.content.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml
new file mode 100755
index 0000000000..bbf62ed22c
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/.content.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/basic/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/basic/.content.xml
similarity index 99%
rename from it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/basic/.content.xml
rename to it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/basic/.content.xml
index 62063519b1..58b0d08d79 100755
--- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/basic/.content.xml
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/basic/.content.xml
@@ -9,7 +9,7 @@
jcr:language="en"
jcr:primaryType="cq:PageContent"
jcr:title="basic"
- sling:configRef="/conf/forms/core-components-it/samples/radiobutton/basic/"
+ sling:configRef="/conf/forms/core-components-it/samples/radiobutton/radiobuttonv2/basic/"
sling:resourceType="forms-components-examples/components/page">
+ embed="[core.forms.components.runtime.base.xfa,core.forms.components.container.v2.runtime,core.forms.components.datePicker.v1.runtime,core.forms.components.textinput.v1.runtime,core.forms.components.numberinput.v1.runtime,core.forms.components.panelcontainer.v1.runtime,core.forms.components.radiobutton.v2.runtime,core.forms.components.text.v1.runtime,core.forms.components.checkboxgroup.v1.runtime,core.forms.components.button.v1.runtime,core.forms.components.image.v1.runtime,core.forms.components.dropdown.v1.runtime,core.forms.components.fileinput.v3.runtime,core.forms.components.accordion.v1.runtime,core.forms.components.tabs.v1.runtime,core.forms.components.wizard.v1.runtime,core.forms.components.verticaltabs.v1.runtime,core.forms.components.recaptcha.v1.runtime,core.forms.components.checkbox.v1.runtime,core.forms.components.fragment.v1.runtime,core.forms.components.switch.v1.runtime,core.forms.components.termsandconditions.v1.runtime, core.forms.components.hcaptcha.v1.runtime,core.forms.components.review.v1.runtime, core.forms.components.turnstile.v1.runtime]"/>
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml
index 195025373c..d69f17261b 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml
@@ -5,4 +5,4 @@
cssProcessor="[default:none,min:none]"
jsProcessor="[default:none,min:none]"
categories="[core.forms.components.runtime.all]"
- embed="[core.forms.components.runtime.base,core.forms.components.container.v2.runtime,core.forms.components.datePicker.v1.runtime,core.forms.components.textinput.v1.runtime,core.forms.components.numberinput.v1.runtime,core.forms.components.panelcontainer.v1.runtime,core.forms.components.radiobutton.v1.runtime,core.forms.components.text.v1.runtime,core.forms.components.checkboxgroup.v1.runtime,core.forms.components.button.v1.runtime,core.forms.components.image.v1.runtime,core.forms.components.dropdown.v1.runtime,core.forms.components.fileinput.v4.runtime,core.forms.components.accordion.v1.runtime,core.forms.components.tabs.v1.runtime,core.forms.components.wizard.v1.runtime,core.forms.components.verticaltabs.v1.runtime,core.forms.components.recaptcha.v1.runtime,core.forms.components.checkbox.v1.runtime,core.forms.components.fragment.v1.runtime,core.forms.components.switch.v1.runtime,core.forms.components.termsandconditions.v1.runtime, core.forms.components.hcaptcha.v1.runtime,core.forms.components.review.v1.runtime, core.forms.components.turnstile.v1.runtime,core.forms.components.scribble.v1.runtime,core.forms.components.datetime.v1.runtime]"/>
+ embed="[core.forms.components.runtime.base,core.forms.components.container.v2.runtime,core.forms.components.datePicker.v1.runtime,core.forms.components.textinput.v1.runtime,core.forms.components.numberinput.v1.runtime,core.forms.components.panelcontainer.v1.runtime,core.forms.components.radiobutton.v2.runtime,core.forms.components.text.v1.runtime,core.forms.components.checkboxgroup.v1.runtime,core.forms.components.button.v1.runtime,core.forms.components.image.v1.runtime,core.forms.components.dropdown.v1.runtime,core.forms.components.fileinput.v4.runtime,core.forms.components.accordion.v1.runtime,core.forms.components.tabs.v1.runtime,core.forms.components.wizard.v1.runtime,core.forms.components.verticaltabs.v1.runtime,core.forms.components.recaptcha.v1.runtime,core.forms.components.checkbox.v1.runtime,core.forms.components.fragment.v1.runtime,core.forms.components.switch.v1.runtime,core.forms.components.termsandconditions.v1.runtime, core.forms.components.hcaptcha.v1.runtime,core.forms.components.review.v1.runtime, core.forms.components.turnstile.v1.runtime,core.forms.components.scribble.v1.runtime,core.forms.components.datetime.v1.runtime]"/>
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/af-commons/v1/fieldTemplates/legend.html b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/af-commons/v1/fieldTemplates/legend.html
new file mode 100644
index 0000000000..83174f3118
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/af-commons/v1/fieldTemplates/legend.html
@@ -0,0 +1,7 @@
+
+
+ ${labelValue @ context = labelRichText ? 'html' : 'text'}
+
+
\ No newline at end of file
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/.content.xml
new file mode 100644
index 0000000000..cd3ddd1d64
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/.content.xml
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/.content.xml
new file mode 100644
index 0000000000..f212697391
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/.content.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/README.md b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/README.md
new file mode 100644
index 0000000000..0af3f2df52
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/README.md
@@ -0,0 +1,115 @@
+
+RadioButton (v2)
+====
+Adaptive form Radio Button component written in HTL.
+
+## Features
+
+* Provides the following type of input in form of radio button:
+ * string
+ * boolean
+ * number
+* Alignment of Options (`horizontal` or `vertical`)
+* Styles
+* Allows replacing this component with other component (as mentioned below).
+
+## Changes in v2
+
+- Root element changed from `div` to `fieldset` for better semantics and accessibility.
+- Label and help icon are now rendered inside a native `legend`.
+- Added modifier class `cmp-adaptiveform-radiobutton--v2` on the root block.
+- Extracted options markup to `widget.html` template (no functional change).
+- Documented `cmp-adaptiveform-radiobutton__widget` BEM element.
+- Client library categories remain the same as v1 (runtime/editor).
+
+### Use Object
+The Form Radio Button component uses the `com.adobe.cq.forms.core.components.models.form.RadioButton` Sling Model for its Use-object.
+
+### Edit Dialog Properties
+The following properties are written to JCR for this Radio Button component and are expected to be available as `Resource` properties:
+
+1. `./name` - defines the name of the field, which will be submitted with the form data
+2. `./jcr:title` - defines the label to use for this field
+3. `./hideTitle` - if set to `true`, the label of this field will be hidden
+4. `./type` - defines the type of values(string, boolean, number) which can be accepted
+5. `./enum` - an array[] of type, defines the available values for selection
+6. `./enumNames` - an array[] of strings, defines the display value of the enum
+7. `./default` - defines the default option of the field
+8. `./alignment` - defines how should the options be displayed, horizontally or vertically.
+9. `./description` - defines a help message that can be rendered in the field as a hint for the user
+10. `./required` - if set to `true`, this field will be marked as required, not allowing the form to be submitted until the field has a value
+11. `./requiredMessage` - defines the message displayed as tooltip when submitting the form if the value is left empty
+12. `./readOnly` - if set to `true`, the filed will be read only
+13. `./fieldType` - defines the type of the component
+
+
+## Client Libraries
+The component provides a `core.forms.components.radiobutton.v1.runtime` client library category that contains the Javascript runtime for the component.
+It should be added to a relevant site client library using the `embed` property.
+
+It also provides a `core.forms.components.radiobutton.v1.editor` editor client library category that includes
+JavaScript handling for dialog interaction. It is already included by its edit dialog.
+
+Note: v2 uses the v1 client library categories for both runtime and editor.
+
+## BEM Description
+```
+BLOCK cmp-adaptiveform-radiobutton
+ MODIFIER cmp-adaptiveform-radiobutton--v2
+ ELEMENT cmp-adaptiveform-radiobutton__label
+ ELEMENT cmp-adaptiveform-radiobutton__label-container
+ ELEMENT cmp-adaptiveform-radiobutton__widget
+ ELEMENT cmp-adaptiveform-radiobutton__option
+ ELEMENT cmp-adaptiveform-radiobutton__option-label
+ ELEMENT cmp-adaptiveform-radiobutton__option__widget
+ ELEMENT cmp-adaptiveform-radiobutton__questionmark
+ ELEMENT cmp-adaptiveform-radiobutton__shortdescription
+ ELEMENT cmp-adaptiveform-radiobutton__longdescription
+ ELEMENT cmp-adaptiveform-radiobutton__errormessage
+```
+
+### Note
+By placing the class names `cmp-adaptiveform-radiobutton__label` and `cmp-adaptiveform-radiobutton__questionmark` within the `cmp-adaptiveform-radiobutton__label-container` class, you create a logical grouping of the label and question mark elements. This approach simplifies the process of maintaining a consistent styling for both elements.
+
+## JavaScript Data Attribute Bindings
+
+The following attributes must be added for the initialization of the radio-button component in the form view:
+1. `data-cmp-is="adaptiveFormRadioButton"`
+2. `data-cmp-adaptiveformcontainer-path="${formstructparser.formContainerPath}"`
+
+
+
+The following are optional attributes that can be added to the component in the form view:
+1. `data-cmp-valid` having a boolean value to indicate whether the field is currently valid or not
+2. `data-cmp-required` having a boolean value to indicate whether the field is currently required or not
+3. `data-cmp-readonly` having a boolean value to indicate whether the field is currently readonly or not
+4. `data-cmp-active` having a boolean value to indicate whether the field is currently active or not
+5. `data-cmp-visible` having a boolean value to indicate whether the field is currently visible or not
+6. `data-cmp-enabled` having a boolean value to indicate whether the field is currently enabled or not
+
+## Replace feature:
+We support replace feature that allows replacing Reset Button component to any of the below components:
+
+* Check Box Group
+* Drop down
+
+
+## Information
+* **Vendor**: Adobe
+* **Version**: v2
+* **Compatibility**: Cloud
+* **Status**: production-ready
\ No newline at end of file
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/.content.xml
new file mode 100644
index 0000000000..564d04a5c1
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/.content.xml
@@ -0,0 +1,3 @@
+
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/.content.xml
new file mode 100644
index 0000000000..a29e33d085
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/.content.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js.txt b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js.txt
new file mode 100644
index 0000000000..b85fb16f9f
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js.txt
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright 2022 Adobe
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###############################################################################
+
+#base=js
+radiobuttonview.js
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js/radiobuttonview.js b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js/radiobuttonview.js
new file mode 100644
index 0000000000..472354ab66
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/clientlibs/site/js/radiobuttonview.js
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright 2022 Adobe
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+(function() {
+
+ "use strict";
+ class RadioButton extends FormView.FormOptionFieldBase {
+
+ static NS = FormView.Constants.NS;
+ /**
+ * Each FormField has a data attribute class that is prefixed along with the global namespace to
+ * distinguish between them. If a component wants to put a data-attribute X, the attribute in HTML would be
+ * data-{NS}-{IS}-x=""
+ * @type {string}
+ */
+ static IS = "adaptiveFormRadioButton";
+ static bemBlock = 'cmp-adaptiveform-radiobutton';
+ static selectors = {
+ self: "[data-" + this.NS + '-is="' + this.IS + '"]',
+ widgets: `.${RadioButton.bemBlock}__widget`,
+ widget: `.${RadioButton.bemBlock}__option__widget`,
+ label: `.${RadioButton.bemBlock}__label`,
+ description: `.${RadioButton.bemBlock}__longdescription`,
+ qm: `.${RadioButton.bemBlock}__questionmark`,
+ errorDiv: `.${RadioButton.bemBlock}__errormessage`,
+ tooltipDiv: `.${RadioButton.bemBlock}__shortdescription`,
+ option: `.${RadioButton.bemBlock}__option`,
+ optionLabel: `.${RadioButton.bemBlock}__option-label`
+ };
+
+ constructor(params) {
+ super(params);
+ this.qm = this.element.querySelector(RadioButton.selectors.qm);
+ }
+
+ getWidgets() {
+ return this.element.querySelector(RadioButton.selectors.widgets);
+ }
+
+ getWidget() {
+ return this.element.querySelectorAll(RadioButton.selectors.widget);
+ }
+
+ getDescription() {
+ return this.element.querySelector(RadioButton.selectors.description);
+ }
+
+ getLabel() {
+ return this.element.querySelector(RadioButton.selectors.label);
+ }
+
+ getQuestionMarkDiv() {
+ return this.element.querySelector(RadioButton.selectors.qm);
+ }
+
+ getTooltipDiv() {
+ return this.element.querySelector(RadioButton.selectors.tooltipDiv);
+ }
+
+ getErrorDiv() {
+ return this.element.querySelector(RadioButton.selectors.errorDiv);
+ }
+
+ getOptions() {
+ return this.element.querySelectorAll(RadioButton.selectors.option);
+ }
+
+ #addWidgetListeners(optionWidget) {
+ optionWidget.addEventListener('change', (e) => {
+ this.setModelValue(e.target.value);
+ });
+ optionWidget.addEventListener('focus', (e) => {
+ this.setActive();
+ });
+ optionWidget.addEventListener('blur', (e) => {
+ this.setInactive();
+ });
+ }
+
+ setModel(model) {
+ super.setModel(model);
+ this.widget.forEach(optionWidget => {
+ this.#addWidgetListeners(optionWidget);
+ });
+ }
+
+ updateEnabled(enabled, state) {
+ this.element.setAttribute(FormView.Constants.DATA_ATTRIBUTE_ENABLED, enabled);
+ let widgets = this.widget;
+ widgets.forEach(widget => {
+ if (enabled === false) {
+ if(state.readOnly === false){
+ widget.setAttribute(FormView.Constants.HTML_ATTRS.DISABLED, "disabled");
+ }
+ } else if (state.readOnly === false) {
+ widget.removeAttribute(FormView.Constants.HTML_ATTRS.DISABLED);
+ }
+ });
+ }
+
+ updateReadOnly(readonly) {
+ let widgets = this.widget;
+ this.element.setAttribute(FormView.Constants.DATA_ATTRIBUTE_READONLY, readonly);
+ widgets.forEach(widget => {
+ if (readonly === true) {
+ widget.setAttribute(FormView.Constants.HTML_ATTRS.DISABLED, "disabled");
+ } else {
+ widget.removeAttribute(FormView.Constants.HTML_ATTRS.DISABLED);
+ }
+ });
+ }
+
+ updateValidity(validity) {
+ if(validity.valid === undefined) {
+ this.element.removeAttribute(FormView.Constants.DATA_ATTRIBUTE_VALID);
+ this.widget.forEach(widget => widget.removeAttribute(FormView.Constants.ARIA_INVALID));
+ } else {
+ this.element.setAttribute(FormView.Constants.DATA_ATTRIBUTE_VALID, validity.valid);
+ this.widget.forEach(widget => widget.setAttribute(FormView.Constants.ARIA_INVALID, !validity.valid));
+ }
+ }
+
+ updateValue(modelValue) {
+ this.widget.forEach(widget => {
+ if (modelValue != null && widget.value != null && (modelValue.toString() == widget.value.toString())) {
+ widget.checked = true;
+ widget.setAttribute(FormView.Constants.HTML_ATTRS.CHECKED, FormView.Constants.HTML_ATTRS.CHECKED);
+ } else {
+ widget.checked = false;
+ widget.removeAttribute(FormView.Constants.HTML_ATTRS.CHECKED);
+ }
+ }, this)
+ super.updateEmptyStatus();
+ }
+
+ #createRadioOption(value, itemLabel) {
+ const optionTemplate = `
+
+
+
+ ${itemLabel}
+
+
`;
+
+ const container = document.createElement('div'); // Create a container element to hold the template
+ container.innerHTML = optionTemplate;
+ let addedOptionWidget = container.querySelector(RadioButton.selectors.widget);
+ if(this._model.readOnly === true || this._model.enabled === false) {
+ addedOptionWidget.setAttribute("disabled", true);
+ if(this._model.readOnly === true) {
+ addedOptionWidget.setAttribute("aria-readonly", true);
+ }
+ }
+ this.#addWidgetListeners(addedOptionWidget);
+ return container.firstElementChild; // Return the first child, which is the created option
+ }
+
+ updateEnum(newEnums) {
+ super.updateEnumForRadioButtonAndCheckbox(newEnums, this.#createRadioOption);
+ // refresh the widget references, to dynamically added options
+ this.widget = this.getWidget();
+ }
+
+ updateEnumNames(newEnumNames) {
+ super.updateEnumNamesForRadioButtonAndCheckbox(newEnumNames, this.#createRadioOption);
+ // refresh the widget references, to dynamically added options
+ this.widget = this.getWidget();
+ }
+
+ updateRequired(required, state) {
+ if (this.widget) {
+ this.element.toggleAttribute("required", required);
+ this.element.setAttribute("data-cmp-required", required);
+ }
+ }
+
+ syncMarkupWithModel() {
+ super.syncMarkupWithModel();
+ this.#syncWidgetName();
+ }
+
+ #syncWidgetName() {
+ const name = this.getModel()?.name;
+ this.widget.forEach(widget => {
+ widget.setAttribute("name", `${this.id}_${name}`);
+ });
+ }
+ }
+
+ FormView.Utils.setupField(({element, formContainer}) => {
+ return new RadioButton({element, formContainer});
+ }, RadioButton.selectors.self);
+
+})();
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.html b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.html
new file mode 100644
index 0000000000..0c4e846a7a
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.js b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.js
new file mode 100644
index 0000000000..56b6a4e059
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/radiobutton.js
@@ -0,0 +1,36 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ Copyright 2025 Adobe
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+use(function() {
+
+ var clientlibsArr = [ 'core.forms.components.base.v1.editor' ];
+ var labelPath = 'core/fd/components/af-commons/v1/fieldTemplates/label.html';
+ var shortDescriptionPath = "core/fd/components/af-commons/v1/fieldTemplates/shortDescription.html";
+ var longDescriptionPath = "core/fd/components/af-commons/v1/fieldTemplates/longDescription.html";
+ var questionMarkPath = "core/fd/components/af-commons/v1/fieldTemplates/questionMark.html"
+ var errorMessagePath = "core/fd/components/af-commons/v1/fieldTemplates/errorMessage.html";
+ var legendPath = "core/fd/components/af-commons/v1/fieldTemplates/legend.html"
+ return {
+ labelPath : labelPath,
+ shortDescriptionPath : shortDescriptionPath,
+ longDescriptionPath : longDescriptionPath,
+ questionMarkPath : questionMarkPath,
+ errorMessagePath : errorMessagePath,
+ legendPath : legendPath,
+ clientlibs : clientlibsArr
+ }
+});
+
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/widget.html b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/widget.html
new file mode 100644
index 0000000000..efd6bd1ba3
--- /dev/null
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/radiobutton/v2/radiobutton/widget.html
@@ -0,0 +1,34 @@
+
+
+
+
+
diff --git a/ui.frontend/src/view/FormFieldBase.js b/ui.frontend/src/view/FormFieldBase.js
index 876441501a..6d117c14ca 100644
--- a/ui.frontend/src/view/FormFieldBase.js
+++ b/ui.frontend/src/view/FormFieldBase.js
@@ -166,8 +166,11 @@ class FormFieldBase extends FormField {
*/
#syncLabel() {
let labelElement = typeof this.getLabel === 'function' ? this.getLabel() : null;
- if (labelElement) {
+ if (labelElement && labelElement.tagName?.toUpperCase() === 'LABEL') {
labelElement.setAttribute('for', this.getWidgetId());
+ } else if (labelElement) {
+ //remove the 'for' attribute if it exists on non-label
+ labelElement.removeAttribute('for');
}
}
diff --git a/ui.tests/test-module/specs/customfunctions/radionbuttonv2.enum.enumName.cy.js b/ui.tests/test-module/specs/customfunctions/radionbuttonv2.enum.enumName.cy.js
new file mode 100644
index 0000000000..7e80d8fd76
--- /dev/null
+++ b/ui.tests/test-module/specs/customfunctions/radionbuttonv2.enum.enumName.cy.js
@@ -0,0 +1,204 @@
+/*
+ *
+ * ADOBE CONFIDENTIAL
+ * ___________________
+ *
+ * Copyright 2023 Adobe Systems Incorporated
+ * All Rights Reserved.
+ *
+ * NOTICE: All information contained herein is, and remains
+ * the property of Adobe Systems Incorporated and its suppliers,
+ * if any. The intellectual and technical concepts contained
+ * herein are proprietary to Adobe Systems Incorporated and its
+ * suppliers and are protected by trade secret or copyright law.
+ * Dissemination of this information or reproduction of this material
+ * is strictly forbidden unless prior written permission is obtained
+ * from Adobe Systems Incorporated.
+ */
+
+describe('Test UpdateEnum, UpdateEnumName for RadioButton', () => {
+ const pagePath = "/content/forms/af/core-components-it/samples/customfunctions/populate-radiobuttonv2.html";
+ let formContainer = null;
+
+ let addEnumNameBtn1= '#button-4f38b76fd2-widget',
+ addEnumBtn1 = '#button-d4b00ec0b8-widget',
+ addBothBtn1 = '#button-eaa3f23f0b-widget',
+
+ addEnumNameBtn2 = '#button-56661f131d-widget',
+ addEnumBtn2 = '#button-0c6ee72db4-widget',
+ addBothBtn2 = '#button-69bf3d3a88-widget',
+
+ addEnumNameBtn3 = '#button-4ecaf3bc01-widget',
+ addEnumBtn3 = '#button-4dc9bdc9a3-widget',
+ addBothBtn3 = '#button-54180ffb16-widget',
+
+ addEnumNameBtn4 = '#button-a48e23295a-widget',
+ addEnumBtn4 = '#button-933aa82bb7-widget',
+ addBothBtn4 = '#button-26157ea292-widget',
+ clearBtn = '#button-3e6807207c-widget';
+
+ let radiobutton1 = '#radiobutton-9810c51fa5-widget',
+ radiobutton2 = '#radiobutton-7842f66371-widget',
+ radiobutton3 = '#radiobutton-073bbdd83c-widget',
+ radiobutton4 = '#radiobutton-6bc17edce1-widget';
+
+ let enums = ["one", "two", "three"],
+ enumNames = ["India", "US", "Singapore"];
+
+ /**
+ * initialization of form container before every test
+ * */
+ beforeEach(() => {
+ cy.previewForm(pagePath).then(p => {
+ formContainer = p;
+ })
+ });
+
+ describe('Radiobutton with no options', () => {
+ it('add enums', () => {
+ cy.get(addEnumBtn1).click().then(() => {
+ cy.get(radiobutton1).children().should('have.length', 3);
+ cy.get(radiobutton1).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(enums[index]);
+ })
+ })
+ });
+
+ it('add enums Names', () => {
+ cy.get(addEnumNameBtn1).click().then(() => {
+ cy.get(radiobutton1).children().should('have.length', 3);
+ cy.get(radiobutton1).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enumNames[index]);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ })
+ })
+ });
+
+ it('add both', () => {
+ cy.get(addBothBtn1).click().then(() => {
+ cy.get(radiobutton1).children().should('have.length', 3);
+ cy.get(radiobutton1).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ })
+ })
+ });
+ });
+
+ describe('length of current options = length of new enums, enumNames', () => {
+ it('add enums', () => {
+ cy.get(addEnumBtn2).click().then(() => {
+ cy.get(radiobutton2).children().should('have.length', 3);
+ cy.get(radiobutton2).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(`country${index + 1}`);
+ })
+ })
+ });
+
+ it('add enums Names', () => {
+ cy.get(addEnumNameBtn2).click().then(() => {
+ cy.get(radiobutton2).children().should('have.length', 3);
+ cy.get(radiobutton2).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(`${index + 1}`);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ })
+ })
+ });
+
+ it('add both', () => {
+ cy.get(addBothBtn2).click().then(() => {
+ cy.get(radiobutton2).children().should('have.length', 3);
+ cy.get(radiobutton2).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ })
+ })
+ });
+ });
+
+ describe('length of current options < length of new enums, enumNames', () => {
+ it('add enums', () => {
+ cy.get(addEnumBtn3).click().then(() => {
+ cy.get(radiobutton3).children().should('have.length', 3);
+ cy.get(radiobutton3).children().each((option, index) => {
+ if(index < 2) {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(`country${index + 1}`);
+ } else {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(enums[index]);
+ }
+ })
+ })
+ });
+
+ it('add enums Names', () => {
+ cy.get(addEnumNameBtn3).click().then(() => {
+ cy.get(radiobutton3).children().should('have.length', 2);
+ cy.get(radiobutton3).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(`${index + 1}`);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ })
+ })
+ });
+
+ it('add both', () => {
+ cy.get(addBothBtn3).click().then(() => {
+ cy.get(radiobutton3).children().should('have.length', 3);
+ cy.get(radiobutton3).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ })
+ })
+ });
+ });
+
+ describe('length of current options > length of new enums, enumNames', () => {
+ it('add enums', () => {
+ cy.get(addEnumBtn4).click().then(() => {
+ cy.get(radiobutton4).children().should('have.length', 3);
+ cy.get(radiobutton4).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(`country${index + 1}`);
+ })
+ })
+ });
+
+ it('add enums Names', () => {
+ cy.get(addEnumNameBtn4).click().then(() => {
+ cy.get(radiobutton4).children().should('have.length', 4);
+ cy.get(radiobutton4).children().each((option, index) => {
+ if(index < 3) {
+ expect(option.find('input').val()).to.be.eq(`${index + 1}`);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ } else {
+ expect(option.find('input').val()).to.be.eq(`${index + 1}`);
+ expect(option.find('span').text()).to.be.eq(`${index + 1}`);
+ }
+
+ })
+ })
+ });
+
+ it('add both', () => {
+ cy.get(addBothBtn4).click().then(() => {
+ cy.get(radiobutton4).children().should('have.length', 3);
+ cy.get(radiobutton4).children().each((option, index) => {
+ expect(option.find('input').val()).to.be.eq(enums[index]);
+ expect(option.find('span').text()).to.be.eq(enumNames[index]);
+ })
+ })
+ });
+
+ });
+
+ describe('Clear all RadioButton options', () => {
+ it('check clear', () => {
+ cy.get(clearBtn).click().then(() => {
+ cy.get(radiobutton4).children().should('have.length', 0); // only the blank option
+ })
+ });
+ });
+})
\ No newline at end of file
diff --git a/ui.tests/test-module/specs/radiobutton/radiobutton.runtime.cy.js b/ui.tests/test-module/specs/radiobutton/radiobutton.runtime.cy.js
index 27bb4ca228..25b45ce03f 100644
--- a/ui.tests/test-module/specs/radiobutton/radiobutton.runtime.cy.js
+++ b/ui.tests/test-module/specs/radiobutton/radiobutton.runtime.cy.js
@@ -15,7 +15,7 @@
******************************************************************************/
describe("Form with Radio Button Input", () => {
- const pagePath = "content/forms/af/core-components-it/samples/radiobutton/basic.html";
+ const pagePath = "content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/basic.html";
let formContainer = null;
const bemBlock = 'cmp-adaptiveform-radiobutton';
/**
@@ -207,7 +207,14 @@ describe("Form with Radio Button Input", () => {
cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option").should('have.length', 2);
cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__label").contains('Select Animal').should('have.css', 'font-weight', '700');
cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option-label span").contains('Dog').should('have.css', 'font-style', 'italic');
- cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option-label span").contains('Cat').should('have.css', 'text-decoration', 'underline solid rgb(50, 50, 50)');
+ cy.get(`#${radioButton9}`)
+ .find(".cmp-adaptiveform-radiobutton__option-label span")
+ .contains('Cat')
+ .should(($el) => {
+ const line = $el.css('text-decoration-line');
+ const shorthand = $el.css('text-decoration');
+ expect(line || shorthand).to.include('underline');
+ });
});
it("decoration element should not have same class name", () => {
@@ -262,7 +269,7 @@ describe("Form with Radio Button Input", () => {
describe("setFocus on radiobutton via rules", () => {
- const pagePath = "content/forms/af/core-components-it/samples/radiobutton/focustest.html"
+ const pagePath = "content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/focustest.html"
let formContainer = null
beforeEach(() => {
@@ -283,7 +290,7 @@ describe("setFocus on radiobutton via rules", () => {
describe(" radiobutton repeatability ", () => {
- const pagePath = "content/forms/af/core-components-it/samples/radiobutton/radiorepeatability.html"
+ const pagePath = "content/forms/af/core-components-it/samples/radiobutton/radiobuttonv1/radiorepeatability.html"
let formContainer = null
beforeEach(() => {
@@ -352,7 +359,5 @@ describe(" radiobutton repeatability ", () => {
});
});
});
-
-
})
})
\ No newline at end of file
diff --git a/ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js b/ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js
new file mode 100644
index 0000000000..36598c05dd
--- /dev/null
+++ b/ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ * Copyright 2022 Adobe
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+describe("Form with Radio Button Input", () => {
+
+ const pagePath = "content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/basic.html";
+ let formContainer = null;
+ const bemBlock = 'cmp-adaptiveform-radiobutton';
+ /**
+ * initialization of form container before every test
+ * */
+ beforeEach(() => {
+ cy.previewForm(pagePath).then(p => {
+ formContainer = p;
+ })
+ });
+
+ const checkHTML = (id, state) => {
+ const visible = state.visible;
+ const passVisibleCheck = `${visible === true ? "" : "not."}be.visible`;
+ const passDisabledAttributeCheck = `${state.enabled === false || state.readOnly === true ? "" : "not."}have.attr`;
+ cy.get(`#${id}`)
+ .should(passVisibleCheck)
+ .invoke('attr', 'data-cmp-visible')
+ .should('eq', visible.toString());
+ cy.get(`#${id}`)
+ .invoke('attr', 'data-cmp-enabled')
+ .should('eq', state.enabled.toString());
+ return cy.get(`#${id}`).within((root) => {
+ cy.get('*').should(passVisibleCheck);
+ cy.get('input')
+ .should('have.length', 2);
+ cy.get('input')
+ .should(passDisabledAttributeCheck, 'disabled');
+ cy.get('input').eq(0).should('be.checked');
+ })
+ }
+
+ it("radiobutton should get model and view initialized properly", () => {
+ expect(formContainer, "formcontainer is initialized").to.not.be.null;
+ expect(formContainer._model.items.length, "model and view elements match").to.equal(Object.keys(formContainer._fields).length);
+ Object.entries(formContainer._fields).forEach(([id, field]) => {
+ expect(field.getId()).to.equal(id);
+ expect(formContainer._model.getElement(id), `model and view are in sync`).to.equal(field.getModel());
+ });
+ });
+
+ it("radiobutton model's changes are reflected in the html", () => {
+ const [id, fieldView] = Object.entries(formContainer._fields)[0];
+
+ // checking alignment of radio button in runtime
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__widget").should('have.class', 'VERTICAL');
+ const [id2, fieldView2] = Object.entries(formContainer._fields)[1];
+ cy.get(`#${id2}`).find(".cmp-adaptiveform-radiobutton__widget").should('have.class', 'HORIZONTAL');
+
+ // check model's change is reflected in HTML
+ const model = formContainer._model.getElement(id);
+ const val = Array('0','1');
+ model.value = '0';
+ checkHTML(model.id, model.getState()).then(() => {
+ model.visible = false;
+ return checkHTML(model.id, model.getState());
+ }).then(() => {
+ model.enable = false;
+ cy.get(`#${id2}`).find(".cmp-adaptiveform-radiobutton__option__widget").should('not.have.attr', 'aria-disabled');
+ return checkHTML(model.id, model.getState());
+ });
+ });
+
+ it("should have data-name attribute in parent div matching model name", () => {
+ const [radioButton1, radioButton1FieldView] = Object.entries(formContainer._fields)[0];
+ const modelName = radioButton1FieldView.getModel().name;
+ cy.get(`#${radioButton1}`).invoke('attr', 'data-name').should('eq', modelName);
+ });
+
+ it("should set proper name attribute for radio buttons", () => {
+ const [id, fieldView] = Object.entries(formContainer._fields)[0];
+ const model = formContainer._model.getElement(id);
+ const expectedName = `${id}_${model.name}`;
+
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__option__widget").each(($radio) => {
+ cy.wrap($radio).should('have.attr', 'name', expectedName);
+ });
+ });
+
+ it("radiobutton html changes are reflected in model", () => {
+ const [id, fieldView] = Object.entries(formContainer._fields)[1];
+ const model = formContainer._model.getElement(id);
+
+ // check the default value to be selected as 0
+ expect(model.getState().value).to.equal('0');
+
+ cy.get(`#${id}`).find("input").eq(1).click().then(x => {
+ expect(model.getState().value).to.equal('1');
+ });
+ cy.get(`#${id}`).find("input").eq(3).click().then(x => {
+ expect(model.getState().value).to.equal('3');
+ });
+ });
+
+ it("radiobutton should show error messages in the HTML", () => {
+ const [id, fieldView] = Object.entries(formContainer._fields)[0];
+ formContainer._model.validate();
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__errormessage").should('have.text',"This is a required radiobutton");
+ cy.get(`#${id}`).should('have.attr', 'data-cmp-valid', 'false')
+ cy.get(`#${id} > div.${bemBlock}__errormessage`).should('have.attr', 'id', `${id}__errormessage`);
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__widget").should('have.attr', 'aria-describedby', `${id}__errormessage`);
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__option__widget").should('have.attr', 'aria-invalid', 'true');
+
+ cy.get(`#${id}`).find("input").eq(1).click().then(x => {
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__errormessage").should('have.text',"");
+ cy.get(`#${id}`).should('have.attr', 'data-cmp-valid', 'true')
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__option__widget").should('have.attr', 'aria-invalid', 'false');
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__option__widget").should('not.have.attr', 'aria-checked');
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__widget").should('have.attr', 'aria-describedby', '');
+ });
+ });
+
+ it("Radio button should not have aria-disabled attribute if enable is false", () => {
+ const [id, fieldView] = Object.entries(formContainer._fields)[3];
+ cy.get(`#${id}`).find(".cmp-adaptiveform-radiobutton__option__widget").should('not.have.attr', 'aria-disabled');
+ })
+
+ it("should toggle description and tooltip", () => {
+ cy.toggleDescriptionTooltip(bemBlock, 'tooltip_scenario_test');
+ })
+
+ it("should show and hide components on certain select", () => {
+ // Rule on radioButton1: When radioButton2 has Item 1 selected => Show radioButton3 and Hide radioButton4
+
+ const [radioButton1, radioButton1FieldView] = Object.entries(formContainer._fields)[0];
+ const [radioButton3, radioButton3FieldView] = Object.entries(formContainer._fields)[2];
+ const [radioButton4, radioButton4FieldView] = Object.entries(formContainer._fields)[3];
+
+ cy.get(`#${radioButton1}`).find("input").first().check().blur().then(x => {
+ cy.get(`#${radioButton3}`).should('be.visible')
+ cy.get(`#${radioButton4}`).should('not.be.visible')
+ })
+ })
+
+ it("should enable and disable components on certain select", () => {
+ // Rule on radioButton1: When radioButton2 has Item 2 selected => Enable radioButton4 and Disable radioButton2
+
+ const [radioButton1, radioButton1FieldView] = Object.entries(formContainer._fields)[0];
+ const [radioButton2, radioButton2FieldView] = Object.entries(formContainer._fields)[1];
+ const [radioButton4, radioButton4FieldView] = Object.entries(formContainer._fields)[3];
+
+ cy.get(`#${radioButton1}`).find("input").check("1").blur().then(x => {
+ cy.get(`#${radioButton4}`).find("input").should('be.enabled')
+ cy.get(`#${radioButton2}`).find("input").should('not.be.enabled')
+ })
+ })
+
+ it("should show validation error messages based on expression rule", () => {
+ // Rule on radioButton6: Validate radioButton6 using Expression: radioButton6 === radioButton5
+
+ const [radioButton5, radioButton5FieldView] = Object.entries(formContainer._fields)[4];
+ const [radioButton6, radioButton6FieldView] = Object.entries(formContainer._fields)[5];
+
+ cy.get(`#${radioButton5}`).find("input").check(["1"]).then(x => {
+ cy.get(`#${radioButton6}`).find("input").check(["0"])
+ cy.get(`#${radioButton6}`).find(".cmp-adaptiveform-radiobutton__errormessage").should('have.text', "Please enter a valid value.")
+
+ cy.get(`#${radioButton6}`).find("input").check(["1"])
+ cy.get(`#${radioButton6}`).find(".cmp-adaptiveform-radiobutton__errormessage").should('have.text', "")
+ })
+ })
+
+ it("should set and clear value based on rules", () => {
+ // Rule on radioButton4: When input has Item1 selected, set value of radioButton6 to "Item 2" and clear value of radioButton1
+
+ const [radioButton1, radioButton1FieldView] = Object.entries(formContainer._fields)[0];
+ const [radioButton6, radioButton6FieldView] = Object.entries(formContainer._fields)[5];
+ const [radioButton4, radioButton4FieldView] = Object.entries(formContainer._fields)[3];
+
+ cy.get(`#${radioButton1}`).find("input").check("1")
+ cy.get(`#${radioButton4}`).find("input").check("0").blur().then(x => {
+ cy.get(`#${radioButton6}`).find("input").should('be.checked')
+ cy.get(`#${radioButton1}`).find("input").should('not.be.checked')
+ })
+ })
+
+ it("should update enum values on providing duplicate enums", () => {
+
+ const [radioButton7, radioButton7FieldView] = Object.entries(formContainer._fields)[6];
+ cy.get(`#${radioButton7}`).find(".cmp-adaptiveform-radiobutton__option").should('have.length', 2);
+ cy.get(`#${radioButton7}`).find(".cmp-adaptiveform-radiobutton__option-label").contains('Item 3');
+ cy.get(`#${radioButton7}`).find(".cmp-adaptiveform-radiobutton__option-label").contains('Item 2');
+ cy.get(`#${radioButton7}`).find(".cmp-adaptiveform-radiobutton__option-label").contains('Item 1').should('not.exist');
+
+ })
+
+ it("rich text should render correctly", () => {
+ const [radioButton9, radioButton9FieldView] = Object.entries(formContainer._fields)[8];
+ cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option").should('have.length', 2);
+ cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__label").contains('Select Animal').should('have.css', 'font-weight', '700');
+ cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option-label span").contains('Dog').should('have.css', 'font-style', 'italic');
+ cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option-label span").contains('Cat').should('have.css', 'text-decoration', 'underline solid rgb(50, 50, 50)');
+ });
+
+ it("decoration element should not have same class name", () => {
+ expect(formContainer, "formcontainer is initialized").to.not.be.null;
+ cy.wrap().then(() => {
+ const id = formContainer._model._children[0].id;
+ cy.get(`#${id}`).parent().should("not.have.class", bemBlock);
+ })
+ })
+
+ it("should add filled/empty class at container div", () => {
+ const [radioButton1, radioButton1FieldView] = Object.entries(formContainer._fields)[0];
+ cy.get(`#${radioButton1}`).should('have.class', 'cmp-adaptiveform-radiobutton--empty');
+ cy.get(`#${radioButton1}`).invoke('attr', 'data-cmp-required').should('eq', 'true');
+ cy.get(`#${radioButton1}`).invoke('attr', 'data-cmp-readonly').should('eq', 'false');
+ cy.get(`#${radioButton1}`).find("input").check("1").blur().then(x => {
+ cy.get(`#${radioButton1}`).should('have.class', 'cmp-adaptiveform-radiobutton--filled');
+ })
+ })
+
+ it("radiobutton with boolean type selection should happen in first click", () => {
+ const [radioButton8, radioButton1FieldView] = Object.entries(formContainer._fields)[7];
+ cy.get(`#${radioButton8}`).find("input").check("true").then(() => {
+ cy.get(`#${radioButton8}`).find('input[value="true"]').should("be.checked");
+ })
+
+ cy.get(`#${radioButton8}`).find("input").check("false").then(() => {
+ cy.get(`#${radioButton8}`).find('input[value="false"]').should("be.checked");
+ })
+ })
+
+ it("test if required property updated in model is reflected in view", () => {
+ const [id, radioButtonView] = Object.entries(formContainer._fields)[7];
+ cy.get(`#${id}`).invoke('attr', 'data-cmp-required').should('eq', 'false').then(() => {
+ radioButtonView._model.required = true;
+ })
+ cy.get(`#${id}`).invoke('attr', 'data-cmp-required').should('eq', 'true');
+ })
+
+ it("reset of radiobutton resulting in invalidation", () => {
+ expect(formContainer, "formcontainer is initialized").to.not.be.null;
+ const [radioButton1, radioButton1FieldView] = Object.entries(formContainer._fields)[0];
+ const [resetButton, resetButtonFieldView] = Object.entries(formContainer._fields)[9];
+
+ cy.get(`#${radioButton1}`).find("input").check("1");
+ cy.get(`#${resetButton} button`).click().then(() => {
+ cy.get(`#${radioButton1}`).find("input[value='1']").should('not.be.checked');
+ cy.get(`#${radioButton1}`).invoke('attr', 'data-cmp-valid').should('not.exist');
+ })
+ })
+
+ it("radio button group MUST be wrapped in a and have a legend", () => {
+ const [radioButton1] = Object.entries(formContainer._fields)[0];
+ cy.get(`#${radioButton1}`).then($el => {
+ expect($el.prop('tagName')).to.eq('FIELDSET');
+ });
+ cy.get(`#${radioButton1}`).find('legend').should('exist');
+ })
+})
+
+describe("setFocus on radiobutton via rules", () => {
+
+ const pagePath = "content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/focustest.html"
+ let formContainer = null
+
+ beforeEach(() => {
+ cy.previewForm(pagePath).then(p => {
+ formContainer = p;
+ })
+ });
+
+ it("should focus on radio button when button is clicked", () => {
+ const [button] = Object.entries(formContainer._fields).filter(it => it[1].getModel()._jsonModel.fieldType==='button')[0];
+ const [radioButton] = Object.entries(formContainer._fields).filter(it => it[1].getModel()._jsonModel.fieldType==='radio-group')[0];
+ cy.get(`#${radioButton}`).find("input").eq(0).should('not.have.focus');
+ cy.get(`#${button}-widget`).click().then(() => {
+ cy.get(`#${radioButton}`).find("input").eq(0).should('have.focus')
+ })
+ })
+})
+
+describe(" radiobutton repeatability ", () => {
+
+ const pagePath = "content/forms/af/core-components-it/samples/radiobutton/radiobuttonv2/radiorepeatability.html"
+ let formContainer = null
+
+ beforeEach(() => {
+ cy.previewForm(pagePath).then(p => {
+ formContainer = p;
+ })
+ });
+
+ const clickRadio = function (panelModel, index) {
+ const panelId = panelModel.id;
+ // panel only has radio button hence just searching for individual inputs of radio button
+ cy.get(`#${panelId}`).find("input").eq(index).click().then(() => {
+ // in this case radio button input index is same as value
+ checkRepeatablePanel(panelModel, index);
+ });
+ }
+
+ const checkRepeatablePanel = function (panelModel, radioButtonValue) {
+ const panelId = panelModel.id;
+ const radioButtonModel = panelModel.items[0];
+ expect(radioButtonModel.value).to.equal(radioButtonValue);
+ //Repeatable panel HTML should exist
+ cy.get(`#${panelId}`).should('exist');
+ cy.get(`#${radioButtonModel.id}`).should('exist').then(() => {
+ //Repeatable panel should have radio button
+ cy.get(`#${radioButtonModel.id}`).find("input").should('have.length', 2);
+ //Repeatable panel should have radio button with value 0 checked
+ cy.get(`#${radioButtonModel.id}`).find("input").eq(0).should(radioButtonValue === 0 ? 'be.checked' : 'not.be.checked');
+ //Repeatable panel should have radio button with value 1 unchecked
+ cy.get(`#${radioButtonModel.id}`).find("input").eq(1).should(radioButtonValue === 1 ? 'be.checked' : 'not.be.checked');
+ });
+ }
+
+ it("radio button inside the panel should repeat and data is set for repeatable instance", () => {
+ const initialData = '{"panelcontainer1716541354700":[{}]}';
+ cy.getFormData().then((result) => {
+ expect(result.data.data).to.equal(initialData);
+ });
+
+ const formModel = formContainer.getModel();
+ const panelInstanceMangerModel = formModel.items[0];
+ const firstPanelModel = panelInstanceMangerModel.items[0];
+ const repeatButtonId = formModel.items[1].id;
+ const resetButtonId = formModel.items[2].id;
+ //Check First repeatable panel on initial render
+ checkRepeatablePanel(firstPanelModel, null);
+ clickRadio(firstPanelModel, 1);
+
+ cy.get(`#${repeatButtonId}-widget`).click().then(() => {
+ const secondPanelModel = panelInstanceMangerModel.items[1];
+ //Check Second repeatable panel on repeat, initially
+ checkRepeatablePanel(secondPanelModel, null);
+ clickRadio(secondPanelModel, 0);
+ //now check first panel again, there should not be syncing of radio buttons across repeatable panels
+ checkRepeatablePanel(firstPanelModel, 1);
+
+ cy.getFormData().then((result) => {
+ const expectedData = '{"panelcontainer1716541354700":[{"radiobutton1716541359617":1},{"radiobutton1716541359617":0}]}';
+ expect(result.data.data).to.equal(expectedData);
+ });
+
+ // Do a reset and then check data
+ cy.get(`#${resetButtonId}-widget`).click().then(() => {
+ cy.getFormData().then((result) => {
+ expect(result.data.data).to.equal(initialData);
+ });
+ });
+ });
+
+
+ })
+})
\ No newline at end of file
From b77f020132b06f3fbdb7f3f13395ace92186dc48 Mon Sep 17 00:00:00 2001
From: Rishi Mehta <69448117+rismehta@users.noreply.github.com>
Date: Wed, 3 Dec 2025 19:18:02 +0530
Subject: [PATCH 23/35] FORMS-23027 updating dependencies to support java 21
(#1695)
* Upgrading spot bugs
* Formatting code
* FORMS-23027 adding java 21 in circle ci build
* FORMS-23027 updating dependencies to support java 8, 11 and 21 tests
---------
Co-authored-by: Shivam Agarwal
---
.circleci/config.yml | 31 +++++++++++++++++++
bundles/af-core/pom.xml | 2 +-
.../internal/datalayer/ComponentDataImpl.java | 19 ++++++++++++
.../internal/form/ReservedProperties.java | 2 +-
.../internal/models/v1/form/FragmentImpl.java | 5 +--
.../components/util/AbstractBaseImpl.java | 2 +-
.../util/AbstractContainerImpl.java | 4 +--
.../util/AbstractFormComponentImpl.java | 3 +-
bundles/core/pom.xml | 2 +-
.../v1/formsportal/PortalListerImpl.java | 5 +--
.../internal/models/v2/HtmlPageItemImpl.java | 2 +-
.../models/v2/aemform/AEMFormImpl.java | 2 +-
parent/pom.xml | 16 +++++++---
13 files changed, 76 insertions(+), 19 deletions(-)
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 93d49f13c7..78d1be830b 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -136,6 +136,9 @@ executors:
forms_executor_java8:
docker:
- image: cimg/openjdk:8.0-browsers
+ forms_executor_java21:
+ docker:
+ - image: cimg/openjdk:21.0-browsers
test_executor_cloudready:
machine:
image: ubuntu-2204:2024.01.1
@@ -187,6 +190,30 @@ jobs:
conf: .circleci/codecov.yml
flags: unittests
+ build-java-21:
+ executor: forms_executor_java21
+ working_directory: /home/circleci/build
+ steps:
+ - checkout
+ - restore_cache:
+ keys:
+ - maven-repo-java21-v1-{{ checksum "pom.xml" }}
+ - maven-repo-java21-v1-
+ - run:
+ name: Update permissions
+ command: sudo chown -R circleci /usr/local/lib/node_modules
+ - run:
+ name: Build with Java 21
+ command: node .circleci/ci/build.js
+ - save_cache:
+ paths:
+ - ~/.m2
+ key: maven-repo-java21-v1-{{ .Branch }}-{{ checksum "pom.xml" }}
+ - store_test_results:
+ path: bundles/core/target/surefire-reports
+ - store_artifacts:
+ path: bundles/core/target/surefire-reports
+
# cypress-chrome-cloudready-with-addon:
# executor: test_executor_cloudready
# environment:
@@ -398,6 +425,10 @@ workflows:
filters:
tags:
only: /.*/
+ - build-java-21:
+ filters:
+ tags:
+ only: /.*/
# - cypress-chrome-cloudready-with-addon:
# filters:
# tags:
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 172f68d6fb..8f27ef4750 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -551,7 +551,7 @@
org.junit.platform
junit-platform-commons
- 1.5.2
+ 1.10.2
test
+
+ net.bytebuddy
+ byte-buddy
+ 1.14.17
+
org.powermock
powermock-api-mockito2
From c644906bdce404ea7cd0b047ca4f32212b3c6edd Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Thu, 4 Dec 2025 18:14:32 +0530
Subject: [PATCH 24/35] @releng [maven-scm] :prepare release
core-forms-components-reactor-3.0.130
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index 61c98b2896..4bfa934b58 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index fe952a122b..1b381a0bad 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index b0d1224ae3..f7761de5c0 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index c76c8b8763..48c3cd246a 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 8464e9e55d..34e9e5f98a 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index c88e61bf1d..fd8e798e44 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index a2bf8c4ba5..e4772b8489 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index 7e9efd5560..45674526c5 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index e3f16bf774..edb53facd5 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index 145b50c7f5..b4cebd6858 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index 46f29df650..510946e2d1 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index 60fa651ca0..32a880c990 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index b61e19e043..2b32f27d66 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index d33b09388a..3bc2deb6e4 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.129-SNAPSHOT
+ 3.0.130
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
diff --git a/pom.xml b/pom.xml
index b08490ba1d..f2f8fc299b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index deb413c721..c56132a884 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index 71f50c138e..b543fae376 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.130
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index d716db00d2..4aa958c07a 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index f81135fbd1..d18e3a56c2 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.129-SNAPSHOT
+ 3.0.130
../parent/pom.xml
From 4474b8d7c1c0d5537fa17df9a367bad0d7d9cf37 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Thu, 4 Dec 2025 18:14:34 +0530
Subject: [PATCH 25/35] @releng [maven-scm] :prepare for next development
iteration
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index 4bfa934b58..d237c0ec51 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 1b381a0bad..904e856f6b 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index f7761de5c0..3f84f2c4cf 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index 48c3cd246a..ececade015 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 34e9e5f98a..74921ee369 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index fd8e798e44..a05985f78a 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index e4772b8489..db407cfd79 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index 45674526c5..788a303848 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index edb53facd5..9fb2fe3426 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index b4cebd6858..b4164d19f8 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index 510946e2d1..eaa8b20db2 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index 32a880c990..4c372634a0 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index 2b32f27d66..40e4c8f1aa 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index 3bc2deb6e4..cb3c831216 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.130
+ 3.0.131-SNAPSHOT
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
diff --git a/pom.xml b/pom.xml
index f2f8fc299b..390518a9c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index c56132a884..098e237df8 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index b543fae376..ec8e0d43ff 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.130
+ HEAD
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 4aa958c07a..58cf3eadd6 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index d18e3a56c2..c405bd9a79 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.130
+ 3.0.131-SNAPSHOT
../parent/pom.xml
From 3149491393f348398716df50ce30f123c2bbbddb Mon Sep 17 00:00:00 2001
From: ci-build
Date: Thu, 4 Dec 2025 13:07:52 +0000
Subject: [PATCH 26/35] Update VERSIONS.md and README.md to include version
3.0.130
---
README.md | 2 +-
VERSIONS.md | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ab30b7d1a8..922622ae34 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,7 @@ The latest version of the AEM Forms Core Components, require the below minimum s
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
-| 3.0.128 | 2.24.6 | Continual | 11 | 3.3.9+ |
+| 3.0.130 | 2.24.6 | Continual | 11 | 3.3.9+ |
For a list of requirements for previous versions, see [Historical System Requirements](VERSIONS.md).
diff --git a/VERSIONS.md b/VERSIONS.md
index dc41aa3782..801b289593 100644
--- a/VERSIONS.md
+++ b/VERSIONS.md
@@ -4,6 +4,7 @@ See below for a full list of minimum system requirements for historical versions
| Forms Core Components | WCM Core Components | AEM Forms as a cloud service | Java | Maven |
|-----------------------|---------------------| ---------------------------- | ----- | ------ |
+| 3.0.130 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.128 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.126 | 2.24.6 | Continual | 11 | 3.3.9+ |
| 3.0.124 | 2.24.6 | Continual | 11 | 3.3.9+ |
From 506afa32721daeba4421db680e5e1e2864022808 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal <47965724+im-shiv@users.noreply.github.com>
Date: Tue, 9 Dec 2025 12:04:18 +0530
Subject: [PATCH 27/35] FORMS-23288 updating logic to get locale from url
(#1768)
* FORMS-23288 updating logic to get locale from url
* FORMS-23288 adding tests
* FORMS-23288 addressing comments
---------
Co-authored-by: Shivam Agarwal
---
ui.frontend/src/HTTPAPILayer.js | 12 ++++--
ui.frontend/src/constants.js | 8 +++-
.../formContainer/formContainer.runtime.cy.js | 43 +++++++++++++++++++
3 files changed, 59 insertions(+), 4 deletions(-)
diff --git a/ui.frontend/src/HTTPAPILayer.js b/ui.frontend/src/HTTPAPILayer.js
index 4fdad424ef..b048f7134a 100644
--- a/ui.frontend/src/HTTPAPILayer.js
+++ b/ui.frontend/src/HTTPAPILayer.js
@@ -66,9 +66,15 @@ class HTTPAPILayer {
lang = `${params['afAcceptLang']}`
} else {
// check for selector in the URL
- const parts = window.location.pathname.split('.');
- if (parts?.length >= 3) {
- lang = `${parts[parts.length - 2]}`;
+ const selectorMatch = (window.location.pathname || "").match(/\/([^/]+)\.html(?=\/|$)/); // capture page name prior to .html
+ if (selectorMatch && selectorMatch.length > 1) {
+ const parts = selectorMatch[1].split('.');
+ if (parts.length >= 2) {
+ const possibleLocale = parts[parts.length - 1];
+ if (Constants.LOCALE_SELECTOR_PATTERN.test(possibleLocale)) {
+ lang = possibleLocale;
+ }
+ }
}
}
// If 'afAcceptLang' is not set and URL selector is not present, use sites page language
diff --git a/ui.frontend/src/constants.js b/ui.frontend/src/constants.js
index 04d6f8078e..700ecd05ff 100644
--- a/ui.frontend/src/constants.js
+++ b/ui.frontend/src/constants.js
@@ -374,6 +374,12 @@ export const Constants = {
* @memberof module:FormView~Constants
* @namespace FIELD_TYPE
*/
- FIELD_TYPE: FIELD_TYPE
+ FIELD_TYPE: FIELD_TYPE,
+
+ /**
+ * Pattern to detect ISO-like locale selectors (e.g., en, en-US, pt_BR).
+ * @type {RegExp}
+ */
+ LOCALE_SELECTOR_PATTERN: /^[a-z]{2}(?:[-_][a-z0-9]{2,8})?$/i
};
diff --git a/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js b/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
index 6ed3961550..f8960ceed0 100644
--- a/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
+++ b/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
@@ -116,3 +116,46 @@ describe("Form Runtime with Hamburger Menu", () => {
})
+describe("Form Runtime URL handling", () => {
+ const basePagePath = "content/forms/af/core-components-it/samples/formcontainer/basic.html";
+ const formModelEndpoint = "**/guideContainer.model*.json*";
+
+ const assertFormModelFetch = (formPath) => {
+ cy.intercept("GET", formModelEndpoint).as("fetchFormModelJson");
+ cy.previewForm(formPath).then(container => {
+ expect(container, `formcontainer is initialized`).to.not.be.null;
+ const model = typeof container.getModel === "function" ? container.getModel() : container._model;
+ expect(model, `model is initialized`).to.exist;
+ });
+ cy.wait("@fetchFormModelJson")
+ .its("response.body")
+ .should(body => {
+ expect(body, `response body is available`).to.exist;
+ });
+ };
+
+ it("fetches form model json without locale selector in URL", () => {
+ assertFormModelFetch(basePagePath);
+ });
+
+ it("fetches form model when .fr locale selector is appended", () => {
+ const selectorPath = basePagePath.replace(".html", ".fr.html");
+ assertFormModelFetch(selectorPath);
+ });
+
+ it("fetches form model when .hello.fr selector chain exists", () => {
+ const selectorPath = basePagePath.replace(".html", ".hello.fr.html");
+ assertFormModelFetch(selectorPath);
+ });
+
+ it("fetches form model when DAM asset path is appended", () => {
+ const selectorPath = `${basePagePath}/content/dam/assets/stickers/other/watermark.jpg`;
+ assertFormModelFetch(selectorPath);
+ });
+
+ it("fetches form model when locale selector and asset path exist", () => {
+ const selectorPath = `${basePagePath.replace(".html", ".fr.html")}/content/dam/assets/stickers/other/watermark.jpg`;
+ assertFormModelFetch(selectorPath);
+ });
+});
+
From 5d7761896c020984a07b21564459c7bb661c1711 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal <47965724+im-shiv@users.noreply.github.com>
Date: Tue, 9 Dec 2025 12:04:50 +0530
Subject: [PATCH 28/35] Revert "FORMS-23288 updating logic to get locale from
url (#1768)" (#1771)
This reverts commit 506afa32721daeba4421db680e5e1e2864022808.
---
ui.frontend/src/HTTPAPILayer.js | 12 ++----
ui.frontend/src/constants.js | 8 +---
.../formContainer/formContainer.runtime.cy.js | 43 -------------------
3 files changed, 4 insertions(+), 59 deletions(-)
diff --git a/ui.frontend/src/HTTPAPILayer.js b/ui.frontend/src/HTTPAPILayer.js
index b048f7134a..4fdad424ef 100644
--- a/ui.frontend/src/HTTPAPILayer.js
+++ b/ui.frontend/src/HTTPAPILayer.js
@@ -66,15 +66,9 @@ class HTTPAPILayer {
lang = `${params['afAcceptLang']}`
} else {
// check for selector in the URL
- const selectorMatch = (window.location.pathname || "").match(/\/([^/]+)\.html(?=\/|$)/); // capture page name prior to .html
- if (selectorMatch && selectorMatch.length > 1) {
- const parts = selectorMatch[1].split('.');
- if (parts.length >= 2) {
- const possibleLocale = parts[parts.length - 1];
- if (Constants.LOCALE_SELECTOR_PATTERN.test(possibleLocale)) {
- lang = possibleLocale;
- }
- }
+ const parts = window.location.pathname.split('.');
+ if (parts?.length >= 3) {
+ lang = `${parts[parts.length - 2]}`;
}
}
// If 'afAcceptLang' is not set and URL selector is not present, use sites page language
diff --git a/ui.frontend/src/constants.js b/ui.frontend/src/constants.js
index 700ecd05ff..04d6f8078e 100644
--- a/ui.frontend/src/constants.js
+++ b/ui.frontend/src/constants.js
@@ -374,12 +374,6 @@ export const Constants = {
* @memberof module:FormView~Constants
* @namespace FIELD_TYPE
*/
- FIELD_TYPE: FIELD_TYPE,
-
- /**
- * Pattern to detect ISO-like locale selectors (e.g., en, en-US, pt_BR).
- * @type {RegExp}
- */
- LOCALE_SELECTOR_PATTERN: /^[a-z]{2}(?:[-_][a-z0-9]{2,8})?$/i
+ FIELD_TYPE: FIELD_TYPE
};
diff --git a/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js b/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
index f8960ceed0..6ed3961550 100644
--- a/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
+++ b/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
@@ -116,46 +116,3 @@ describe("Form Runtime with Hamburger Menu", () => {
})
-describe("Form Runtime URL handling", () => {
- const basePagePath = "content/forms/af/core-components-it/samples/formcontainer/basic.html";
- const formModelEndpoint = "**/guideContainer.model*.json*";
-
- const assertFormModelFetch = (formPath) => {
- cy.intercept("GET", formModelEndpoint).as("fetchFormModelJson");
- cy.previewForm(formPath).then(container => {
- expect(container, `formcontainer is initialized`).to.not.be.null;
- const model = typeof container.getModel === "function" ? container.getModel() : container._model;
- expect(model, `model is initialized`).to.exist;
- });
- cy.wait("@fetchFormModelJson")
- .its("response.body")
- .should(body => {
- expect(body, `response body is available`).to.exist;
- });
- };
-
- it("fetches form model json without locale selector in URL", () => {
- assertFormModelFetch(basePagePath);
- });
-
- it("fetches form model when .fr locale selector is appended", () => {
- const selectorPath = basePagePath.replace(".html", ".fr.html");
- assertFormModelFetch(selectorPath);
- });
-
- it("fetches form model when .hello.fr selector chain exists", () => {
- const selectorPath = basePagePath.replace(".html", ".hello.fr.html");
- assertFormModelFetch(selectorPath);
- });
-
- it("fetches form model when DAM asset path is appended", () => {
- const selectorPath = `${basePagePath}/content/dam/assets/stickers/other/watermark.jpg`;
- assertFormModelFetch(selectorPath);
- });
-
- it("fetches form model when locale selector and asset path exist", () => {
- const selectorPath = `${basePagePath.replace(".html", ".fr.html")}/content/dam/assets/stickers/other/watermark.jpg`;
- assertFormModelFetch(selectorPath);
- });
-});
-
From d2c077d529e0afaedeff84d2620df856bfa0ec01 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal <47965724+im-shiv@users.noreply.github.com>
Date: Tue, 9 Dec 2025 12:11:46 +0530
Subject: [PATCH 29/35] FORMS-23288 updating logic to get locale from url
(#1772)
* FORMS-23288 updating logic to get locale from url
* FORMS-23288 adding tests
* FORMS-23288 addressing comments
---------
Co-authored-by: Shivam Agarwal
---
ui.frontend/src/HTTPAPILayer.js | 12 ++++--
ui.frontend/src/constants.js | 8 +++-
.../formContainer/formContainer.runtime.cy.js | 43 +++++++++++++++++++
3 files changed, 59 insertions(+), 4 deletions(-)
diff --git a/ui.frontend/src/HTTPAPILayer.js b/ui.frontend/src/HTTPAPILayer.js
index 4fdad424ef..b048f7134a 100644
--- a/ui.frontend/src/HTTPAPILayer.js
+++ b/ui.frontend/src/HTTPAPILayer.js
@@ -66,9 +66,15 @@ class HTTPAPILayer {
lang = `${params['afAcceptLang']}`
} else {
// check for selector in the URL
- const parts = window.location.pathname.split('.');
- if (parts?.length >= 3) {
- lang = `${parts[parts.length - 2]}`;
+ const selectorMatch = (window.location.pathname || "").match(/\/([^/]+)\.html(?=\/|$)/); // capture page name prior to .html
+ if (selectorMatch && selectorMatch.length > 1) {
+ const parts = selectorMatch[1].split('.');
+ if (parts.length >= 2) {
+ const possibleLocale = parts[parts.length - 1];
+ if (Constants.LOCALE_SELECTOR_PATTERN.test(possibleLocale)) {
+ lang = possibleLocale;
+ }
+ }
}
}
// If 'afAcceptLang' is not set and URL selector is not present, use sites page language
diff --git a/ui.frontend/src/constants.js b/ui.frontend/src/constants.js
index 04d6f8078e..700ecd05ff 100644
--- a/ui.frontend/src/constants.js
+++ b/ui.frontend/src/constants.js
@@ -374,6 +374,12 @@ export const Constants = {
* @memberof module:FormView~Constants
* @namespace FIELD_TYPE
*/
- FIELD_TYPE: FIELD_TYPE
+ FIELD_TYPE: FIELD_TYPE,
+
+ /**
+ * Pattern to detect ISO-like locale selectors (e.g., en, en-US, pt_BR).
+ * @type {RegExp}
+ */
+ LOCALE_SELECTOR_PATTERN: /^[a-z]{2}(?:[-_][a-z0-9]{2,8})?$/i
};
diff --git a/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js b/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
index 6ed3961550..f8960ceed0 100644
--- a/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
+++ b/ui.tests/test-module/specs/formContainer/formContainer.runtime.cy.js
@@ -116,3 +116,46 @@ describe("Form Runtime with Hamburger Menu", () => {
})
+describe("Form Runtime URL handling", () => {
+ const basePagePath = "content/forms/af/core-components-it/samples/formcontainer/basic.html";
+ const formModelEndpoint = "**/guideContainer.model*.json*";
+
+ const assertFormModelFetch = (formPath) => {
+ cy.intercept("GET", formModelEndpoint).as("fetchFormModelJson");
+ cy.previewForm(formPath).then(container => {
+ expect(container, `formcontainer is initialized`).to.not.be.null;
+ const model = typeof container.getModel === "function" ? container.getModel() : container._model;
+ expect(model, `model is initialized`).to.exist;
+ });
+ cy.wait("@fetchFormModelJson")
+ .its("response.body")
+ .should(body => {
+ expect(body, `response body is available`).to.exist;
+ });
+ };
+
+ it("fetches form model json without locale selector in URL", () => {
+ assertFormModelFetch(basePagePath);
+ });
+
+ it("fetches form model when .fr locale selector is appended", () => {
+ const selectorPath = basePagePath.replace(".html", ".fr.html");
+ assertFormModelFetch(selectorPath);
+ });
+
+ it("fetches form model when .hello.fr selector chain exists", () => {
+ const selectorPath = basePagePath.replace(".html", ".hello.fr.html");
+ assertFormModelFetch(selectorPath);
+ });
+
+ it("fetches form model when DAM asset path is appended", () => {
+ const selectorPath = `${basePagePath}/content/dam/assets/stickers/other/watermark.jpg`;
+ assertFormModelFetch(selectorPath);
+ });
+
+ it("fetches form model when locale selector and asset path exist", () => {
+ const selectorPath = `${basePagePath.replace(".html", ".fr.html")}/content/dam/assets/stickers/other/watermark.jpg`;
+ assertFormModelFetch(selectorPath);
+ });
+});
+
From 1236bd4467b532241c84df6efa7fe5e943d3e646 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Tue, 9 Dec 2025 14:05:13 +0530
Subject: [PATCH 30/35] @releng [maven-scm] :prepare release
core-forms-components-reactor-3.0.132
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index d237c0ec51..326aef858a 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index 904e856f6b..d83fad02ae 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index 3f84f2c4cf..e2b89cff9f 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index ececade015..4ed8ca1679 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 74921ee369..17537046b0 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index a05985f78a..a440259624 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index db407cfd79..9ff4d9b428 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index 788a303848..d074c300b0 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index 9fb2fe3426..0d2200f4e0 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index b4164d19f8..bfdb344d99 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index eaa8b20db2..d48fcf48e5 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index 4c372634a0..ec20348f9c 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index 40e4c8f1aa..7a59030002 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index cb3c831216..4d1aa96f76 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.131-SNAPSHOT
+ 3.0.132
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
diff --git a/pom.xml b/pom.xml
index 390518a9c8..cb20d51844 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index 098e237df8..13c85dcc87 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index ec8e0d43ff..96f2aab5b9 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- HEAD
+ core-forms-components-reactor-3.0.132
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 58cf3eadd6..5f63cb8a2a 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index c405bd9a79..d38d06109e 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.131-SNAPSHOT
+ 3.0.132
../parent/pom.xml
From f3dd1f88dfdd84d050c5372483c189228bdb5707 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Tue, 9 Dec 2025 14:05:14 +0530
Subject: [PATCH 31/35] @releng [maven-scm] :prepare for next development
iteration
---
all/pom.xml | 4 ++--
bundles/af-core/pom.xml | 4 ++--
bundles/core/pom.xml | 4 ++--
examples/all/pom.xml | 4 ++--
examples/core/pom.xml | 4 ++--
examples/pom.xml | 2 +-
examples/ui.apps/pom.xml | 4 ++--
examples/ui.content/pom.xml | 4 ++--
it/apps/pom.xml | 4 ++--
it/config/pom.xml | 4 ++--
it/content/pom.xml | 4 ++--
it/core/pom.xml | 4 ++--
jsdocs/pom.xml | 4 ++--
parent/pom.xml | 4 ++--
pom.xml | 4 ++--
ui.af.apps/pom.xml | 4 ++--
ui.apps/pom.xml | 4 ++--
ui.frontend/pom.xml | 2 +-
ui.tests/pom.xml | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index 326aef858a..eab1d41711 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/bundles/af-core/pom.xml b/bundles/af-core/pom.xml
index d83fad02ae..941e405144 100644
--- a/bundles/af-core/pom.xml
+++ b/bundles/af-core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index e2b89cff9f..6b75c84e6c 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -38,7 +38,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/examples/all/pom.xml b/examples/all/pom.xml
index 4ed8ca1679..365816a60e 100644
--- a/examples/all/pom.xml
+++ b/examples/all/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/examples/core/pom.xml b/examples/core/pom.xml
index 17537046b0..fc09b3b0de 100644
--- a/examples/core/pom.xml
+++ b/examples/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/examples/pom.xml b/examples/pom.xml
index a440259624..e943035a0b 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../parent/pom.xml
diff --git a/examples/ui.apps/pom.xml b/examples/ui.apps/pom.xml
index 9ff4d9b428..32b128aa4a 100644
--- a/examples/ui.apps/pom.xml
+++ b/examples/ui.apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/examples/ui.content/pom.xml b/examples/ui.content/pom.xml
index d074c300b0..767297c4da 100644
--- a/examples/ui.content/pom.xml
+++ b/examples/ui.content/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/it/apps/pom.xml b/it/apps/pom.xml
index 0d2200f4e0..f3b017be93 100644
--- a/it/apps/pom.xml
+++ b/it/apps/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -32,7 +32,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/it/config/pom.xml b/it/config/pom.xml
index bfdb344d99..8d2d52f6d2 100644
--- a/it/config/pom.xml
+++ b/it/config/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/it/content/pom.xml b/it/content/pom.xml
index d48fcf48e5..e99bbd966d 100644
--- a/it/content/pom.xml
+++ b/it/content/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -34,7 +34,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/it/core/pom.xml b/it/core/pom.xml
index ec20348f9c..1b481491a8 100644
--- a/it/core/pom.xml
+++ b/it/core/pom.xml
@@ -18,7 +18,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../../parent/pom.xml
@@ -33,7 +33,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/jsdocs/pom.xml b/jsdocs/pom.xml
index 7a59030002..1bdbd563de 100644
--- a/jsdocs/pom.xml
+++ b/jsdocs/pom.xml
@@ -22,7 +22,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../parent/pom.xml
@@ -39,7 +39,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/parent/pom.xml b/parent/pom.xml
index 4d1aa96f76..3fd1246019 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
pom
- 3.0.132
+ 3.0.133-SNAPSHOT
AEM Forms Core Components - Parent
Parent POM for AEM Forms Core Components
@@ -31,7 +31,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
diff --git a/pom.xml b/pom.xml
index cb20d51844..15b46bddfe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
parent/pom.xml
@@ -77,7 +77,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
diff --git a/ui.af.apps/pom.xml b/ui.af.apps/pom.xml
index 13c85dcc87..4c14282ad7 100644
--- a/ui.af.apps/pom.xml
+++ b/ui.af.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/ui.apps/pom.xml b/ui.apps/pom.xml
index 96f2aab5b9..00862a0f62 100644
--- a/ui.apps/pom.xml
+++ b/ui.apps/pom.xml
@@ -20,7 +20,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../parent/pom.xml
@@ -37,7 +37,7 @@
scm:git:https://github.com/adobe/aem-core-forms-components
scm:git:git@github.com:adobe/aem-core-forms-components.git
https://github.com/adobe/aem-core-forms-components
- core-forms-components-reactor-3.0.132
+ HEAD
Adobe
diff --git a/ui.frontend/pom.xml b/ui.frontend/pom.xml
index 5f63cb8a2a..1de159b121 100644
--- a/ui.frontend/pom.xml
+++ b/ui.frontend/pom.xml
@@ -16,7 +16,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../parent/pom.xml
4.0.0
diff --git a/ui.tests/pom.xml b/ui.tests/pom.xml
index d38d06109e..9e8e95a2f4 100644
--- a/ui.tests/pom.xml
+++ b/ui.tests/pom.xml
@@ -24,7 +24,7 @@
com.adobe.aem
core-forms-components-parent
- 3.0.132
+ 3.0.133-SNAPSHOT
../parent/pom.xml
From 865c071a3dc4aa89a56abb8b6836aac9d1f417f5 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Wed, 10 Dec 2025 13:44:54 +0530
Subject: [PATCH 32/35] Revert FORMS-22032 Added support for reading associate
properties container (#1758)
---
.../util/AbstractFormComponentImpl.java | 24 ----------------
.../util/AbstractFormComponentImplTest.java | 19 -------------
.../adaptive-form-properties.schema.json | 5 +---
.../schema/0.15.2/adaptive-form.schema.json | 5 +---
...tive-form-associate-properties.schema.json | 28 -------------------
.../.content.xml | 0
6 files changed, 2 insertions(+), 79 deletions(-)
delete mode 100644 bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json
delete mode 100644 ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all-xfa/.content.xml
diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java
index 2765124549..fa835dba69 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImpl.java
@@ -49,7 +49,6 @@
import com.adobe.cq.forms.core.components.models.form.FieldType;
import com.adobe.cq.forms.core.components.models.form.FormComponent;
import com.adobe.cq.forms.core.components.models.form.Label;
-import com.adobe.cq.forms.core.components.models.form.print.associate.AssociateProperties;
import com.adobe.cq.wcm.core.components.models.Component;
import com.adobe.cq.wcm.core.components.util.ComponentUtils;
import com.day.cq.i18n.I18n;
@@ -286,7 +285,6 @@ protected boolean getEditMode() {
return customLayoutProperties;
}
- public static final String CUSTOM_ASSOCIATE_PROPERTY_WRAPPER = "fd:associate";
public static final String CUSTOM_DOR_PROPERTY_WRAPPER = "fd:dor";
// used for DOR and SPA editor to work
public static final String CUSTOM_JCR_PATH_PROPERTY_WRAPPER = "fd:path";
@@ -321,10 +319,6 @@ protected boolean getEditMode() {
if (rulesProperties.size() > 0) {
properties.put(CUSTOM_RULE_PROPERTY_WRAPPER, rulesProperties);
}
- Map associateProperties = getAssociateProperties();
- if (!associateProperties.isEmpty()) {
- properties.put(CUSTOM_ASSOCIATE_PROPERTY_WRAPPER, associateProperties);
- }
return properties;
}
@@ -576,24 +570,6 @@ private Map getCustomProperties() {
return customProperties;
}
- private Map getAssociateProperties() {
- if (FormConstants.CHANNEL_PRINT.equals(this.channel) && resource != null) {
- Resource associatePropertiesResource = resource.getChild(CUSTOM_ASSOCIATE_PROPERTY_WRAPPER);
- if (associatePropertiesResource != null) {
- try {
- AssociateProperties associateProperties = associatePropertiesResource.adaptTo(AssociateProperties.class);
- ObjectMapper objectMapper = new ObjectMapper();
- if (associateProperties != null) {
- return objectMapper.convertValue(associateProperties, new TypeReference>() {});
- }
- } catch (Exception e) {
- logger.warn("Unable to adapt associate properties", e);
- }
- }
- }
- return Collections.emptyMap();
- }
-
@Override
@JsonIgnore
public Map getDorProperties() {
diff --git a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java
index 3fb2ab3ecd..19eb8f156a 100644
--- a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java
+++ b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/util/AbstractFormComponentImplTest.java
@@ -20,9 +20,7 @@
import java.util.Map;
import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.testing.mock.sling.servlet.MockSlingHttpServletRequest;
-import org.apache.sling.testing.resourceresolver.MockValueMap;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -156,21 +154,4 @@ private AbstractFormComponentImpl prepareTestClass(String path) {
Utils.setInternalState(abstractFormComponentImpl, "resource", resource);
return abstractFormComponentImpl;
}
-
- @Test
- public void testAssociateProperties() {
- Resource resource = Mockito.mock(Resource.class);
- AbstractFormComponentImpl abstractFormComponentImpl = new AbstractFormComponentImpl();
- Utils.setInternalState(abstractFormComponentImpl, "resource", resource);
- Utils.setInternalState(abstractFormComponentImpl, "channel", "print");
-
- ValueMap valueMap = new MockValueMap(resource);
- Mockito.doReturn(valueMap).when(resource).getValueMap();
- Mockito.doReturn(null).when(resource).getChild("fd:dorContainer");
- Mockito.doReturn(null).when(resource).getChild("fd:rules");
- Resource associateResource = Mockito.mock(Resource.class);
- Mockito.doReturn(associateResource).when(resource).getChild("fd:associate");
- Map properties = abstractFormComponentImpl.getProperties();
- assertNull(properties.get("fd:associate"));
- }
}
diff --git a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json
index 9dc0adf220..55edb3c17a 100644
--- a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json
+++ b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form-properties.schema.json
@@ -228,9 +228,6 @@
"properties": {
"fd:dor": {
"$ref": "./adaptive-form-dor-properties.schema.json"
- },
- "fd:associate": {
- "$ref": "./print/adaptive-form-associate-properties.schema.json"
}
},
"additionalProperties": true
@@ -344,4 +341,4 @@
}
}
]
-}
+}
\ No newline at end of file
diff --git a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json
index e61f624d7f..189875cd22 100644
--- a/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json
+++ b/bundles/af-core/src/test/resources/schema/0.15.2/adaptive-form.schema.json
@@ -1912,9 +1912,6 @@
},
"fd:signerInfo": {
"$ref": "./adaptive-form-sign-properties.schema.json"
- },
- "fd:associate": {
- "$ref": "./print/adaptive-form-associate-properties.schema.json"
}
},
"additionalProperties": true
@@ -1955,4 +1952,4 @@
]
}
]
-}
+}
\ No newline at end of file
diff --git a/bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json b/bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json
deleted file mode 100644
index f17c595ca7..0000000000
--- a/bundles/af-core/src/test/resources/schema/0.15.2/print/adaptive-form-associate-properties.schema.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "$id": "classpath:/schema/0.15.2/print/adaptive-form-associate-properties.schema.json",
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "additionalProperties": true,
- "properties": {
- "enabled": {
- "title": "Enabled",
- "description": "If the associate is enabled for the channel.",
- "type": "boolean",
- "default": false,
- "optional": true
- },
- "readOnly": {
- "title": "ReadOnly",
- "description": "If the associate can edit the components contents. There can be a case where field gets it's value from the prefill service and associate is restricted to edit the field contents. In that case readOnly is kept True.",
- "type": "boolean",
- "default": true
- },
- "ordered": {
- "title": "Ordered",
- "description": "If associate can arrange order of elements of a flowed container.",
- "type": "boolean",
- "optional": true,
- "default": false
- }
- }
-}
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all-xfa/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all-xfa/.content.xml
deleted file mode 100644
index e69de29bb2..0000000000
From 0e2fe1a24e6e2dc18b115d1b03e80f99e52777ca Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Thu, 11 Dec 2025 14:38:05 +0530
Subject: [PATCH 33/35] fixing failing tests
---
.../core-forms-components-runtime-all/.content.xml | 2 +-
.../specs/checkboxgroup/checkboxgroup.runtime.cy.js | 2 +-
.../datepicker/datepicker.runtime.persian.locale.cy.js | 4 ++--
.../specs/radiobutton/radiobutton.authoring.cy.js | 6 ++----
.../specs/radiobutton/radiobuttonv2.runtime.cy.js | 9 ++++++++-
5 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml
index d69f17261b..c484806166 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/af-clientlibs/core-forms-components-runtime-all/.content.xml
@@ -5,4 +5,4 @@
cssProcessor="[default:none,min:none]"
jsProcessor="[default:none,min:none]"
categories="[core.forms.components.runtime.all]"
- embed="[core.forms.components.runtime.base,core.forms.components.container.v2.runtime,core.forms.components.datePicker.v1.runtime,core.forms.components.textinput.v1.runtime,core.forms.components.numberinput.v1.runtime,core.forms.components.panelcontainer.v1.runtime,core.forms.components.radiobutton.v2.runtime,core.forms.components.text.v1.runtime,core.forms.components.checkboxgroup.v1.runtime,core.forms.components.button.v1.runtime,core.forms.components.image.v1.runtime,core.forms.components.dropdown.v1.runtime,core.forms.components.fileinput.v4.runtime,core.forms.components.accordion.v1.runtime,core.forms.components.tabs.v1.runtime,core.forms.components.wizard.v1.runtime,core.forms.components.verticaltabs.v1.runtime,core.forms.components.recaptcha.v1.runtime,core.forms.components.checkbox.v1.runtime,core.forms.components.fragment.v1.runtime,core.forms.components.switch.v1.runtime,core.forms.components.termsandconditions.v1.runtime, core.forms.components.hcaptcha.v1.runtime,core.forms.components.review.v1.runtime, core.forms.components.turnstile.v1.runtime,core.forms.components.scribble.v1.runtime,core.forms.components.datetime.v1.runtime]"/>
+ embed="[core.forms.components.runtime.base,core.forms.components.container.v2.runtime,core.forms.components.datePicker.v1.runtime,core.forms.components.textinput.v1.runtime,core.forms.components.numberinput.v1.runtime,core.forms.components.panelcontainer.v1.runtime,core.forms.components.radiobutton.v2.runtime,core.forms.components.text.v1.runtime,core.forms.components.checkboxgroup.v1.runtime,core.forms.components.button.v1.runtime,core.forms.components.image.v1.runtime,core.forms.components.dropdown.v1.runtime,core.forms.components.fileinput.v4.runtime,core.forms.components.accordion.v1.runtime,core.forms.components.tabs.v1.runtime,core.forms.components.wizard.v1.runtime,core.forms.components.verticaltabs.v1.runtime,core.forms.components.recaptcha.v1.runtime,core.forms.components.checkbox.v1.runtime,core.forms.components.fragment.v1.runtime,core.forms.components.switch.v1.runtime,core.forms.components.termsandconditions.v1.runtime,core.forms.components.review.v1.runtime,core.forms.components.scribble.v1.runtime,core.forms.components.datetime.v1.runtime]"/>
diff --git a/ui.tests/test-module/specs/checkboxgroup/checkboxgroup.runtime.cy.js b/ui.tests/test-module/specs/checkboxgroup/checkboxgroup.runtime.cy.js
index ed380e316a..a29abd0bb9 100644
--- a/ui.tests/test-module/specs/checkboxgroup/checkboxgroup.runtime.cy.js
+++ b/ui.tests/test-module/specs/checkboxgroup/checkboxgroup.runtime.cy.js
@@ -205,7 +205,7 @@ describe("Form Runtime with CheckBoxGroup Input", () => {
cy.get(`#${checkBox7}`).find(".cmp-adaptiveform-checkboxgroup-item").should('have.length', 2);
cy.get(`#${checkBox7}`).find(".cmp-adaptiveform-checkboxgroup__label").contains('Select Animal').should('have.css', 'font-weight', '700');
cy.get(`#${checkBox7}`).find(".cmp-adaptiveform-checkboxgroup__option-label span").contains('Dog').should('have.css', 'font-style', 'italic');
- cy.get(`#${checkBox7}`).find(".cmp-adaptiveform-checkboxgroup__option-label span").contains('Cat').should('have.css', 'text-decoration', 'underline solid rgb(50, 50, 50)');
+ cy.get(`#${checkBox7}`).find(".cmp-adaptiveform-checkboxgroup__option-label span").contains('Cat').should('have.css', 'text-decoration', 'underline');
});
it("decoration element should not have same class name", () => {
diff --git a/ui.tests/test-module/specs/datepicker/datepicker.runtime.persian.locale.cy.js b/ui.tests/test-module/specs/datepicker/datepicker.runtime.persian.locale.cy.js
index 4af41cb058..89d39c4b02 100644
--- a/ui.tests/test-module/specs/datepicker/datepicker.runtime.persian.locale.cy.js
+++ b/ui.tests/test-module/specs/datepicker/datepicker.runtime.persian.locale.cy.js
@@ -40,7 +40,7 @@ describe("Form Runtime with Date Picker", () => {
// Year should be in Buddhist calendar year for Thai language
it("Test localisation for date picker for Persian", () => {
const [datePicker8, datePicker7FieldView] = Object.entries(formContainer._fields)[8];
- cy.get(`#${datePicker8}`).find(".cmp-adaptiveform-datepicker__calendar-icon").should("be.visible").click().then(() => {
+ cy.get(`#${datePicker8}`).find(".cmp-adaptiveform-datepicker__calendar-icon").should("be.visible").click({force: true}).then(() => {
let todayDate = new Date();
cy.get(".dp-caption").invoke("text").should("eq", "مارس, 2024");
cy.get(".dp-caption").eq(3).click();
@@ -51,7 +51,7 @@ describe("Form Runtime with Date Picker", () => {
it("snapshot testing for rtl", () => {
const [datePicker8, datePicker8FieldView] = Object.entries(formContainer._fields)[8];
- cy.get(`#${datePicker8}`).find(".cmp-adaptiveform-datepicker__calendar-icon").should("be.visible").click();
+ cy.get(`#${datePicker8}`).find(".cmp-adaptiveform-datepicker__calendar-icon").should("be.visible").click({force: true});
cy.get('body').toMatchImageSnapshot({
imageConfig: {
threshold: 0,
diff --git a/ui.tests/test-module/specs/radiobutton/radiobutton.authoring.cy.js b/ui.tests/test-module/specs/radiobutton/radiobutton.authoring.cy.js
index 7562aa237f..da6d5d7b39 100644
--- a/ui.tests/test-module/specs/radiobutton/radiobutton.authoring.cy.js
+++ b/ui.tests/test-module/specs/radiobutton/radiobutton.authoring.cy.js
@@ -133,8 +133,7 @@ describe('Page - Authoring', function () {
cy.get("coral-selectlist-item").contains('Number').should('be.visible').click({force: true});
cy.get(".cmp-adaptiveform-radiobutton__value").invoke('val', 'Not a Number');
cy.get('.cq-dialog-submit').click();
- cy.get('.cmp-adaptiveform-base__editdialogbasic [icon="alert"]').should('be.visible').click();
- cy.get('.cmp-adaptiveform-base__editdialogbasic coral-tooltip').contains('Value Type Mismatch').should('be.visible');
+ cy.get('.coral-Form-errorlabel').should('contain.text', 'Value Type Mismatch');
cy.get('.cq-dialog-cancel').click();
cy.deleteComponentByPath(radioButtonDrop);
@@ -146,8 +145,7 @@ describe('Page - Authoring', function () {
cy.get("coral-selectlist-item").contains('Boolean').should('be.visible').click({force: true});
cy.get(".cmp-adaptiveform-radiobutton__value").invoke('val', 'Not a Boolean');
cy.get('.cq-dialog-submit').click();
- cy.get('.cmp-adaptiveform-base__editdialogbasic [icon="alert"]').eq(0).should('be.visible').click();
- cy.get('.cmp-adaptiveform-base__editdialogbasic coral-tooltip').contains('Value Type Mismatch').should('be.visible');
+ cy.get('.coral-Form-errorlabel').should('contain.text', 'Value Type Mismatch');
cy.get('.cq-dialog-cancel').click();
cy.deleteComponentByPath(radioButtonDrop);
diff --git a/ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js b/ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js
index 36598c05dd..1a2f2b0e33 100644
--- a/ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js
+++ b/ui.tests/test-module/specs/radiobutton/radiobuttonv2.runtime.cy.js
@@ -207,7 +207,14 @@ describe("Form with Radio Button Input", () => {
cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option").should('have.length', 2);
cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__label").contains('Select Animal').should('have.css', 'font-weight', '700');
cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option-label span").contains('Dog').should('have.css', 'font-style', 'italic');
- cy.get(`#${radioButton9}`).find(".cmp-adaptiveform-radiobutton__option-label span").contains('Cat').should('have.css', 'text-decoration', 'underline solid rgb(50, 50, 50)');
+ cy.get(`#${radioButton9}`)
+ .find(".cmp-adaptiveform-radiobutton__option-label span")
+ .contains('Cat')
+ .should(($el) => {
+ const line = $el.css('text-decoration-line');
+ const shorthand = $el.css('text-decoration');
+ expect(line || shorthand).to.include('underline');
+ });
});
it("decoration element should not have same class name", () => {
From 9d55ae600e83ff836650ff278c82275e4726fafc Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Thu, 11 Dec 2025 21:26:19 +0530
Subject: [PATCH 34/35] updating to latest 6.5.24 build
---
.circleci/config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 93fe52e515..fb1179c3a5 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -140,7 +140,7 @@ executors:
docker:
- image: docker-adobe-cif-release.dr-uw2.adobeitc.com/circleci-qp:6.4.6-openjdk11
<<: *docker_auth
- - image: docker-adobe-cif-release.dr-uw2.adobeitc.com/circleci-aem:6.5.24-load4-openjdk11
+ - image: docker-adobe-cif-release.dr-uw2.adobeitc.com/circleci-aem:6.5.24.0-openjdk11
<<: *docker_auth
jobs:
From 8691607bc1a19e1e3bc3587937edcafc546f52b6 Mon Sep 17 00:00:00 2001
From: Shivam Agarwal
Date: Fri, 12 Dec 2025 09:23:14 +0530
Subject: [PATCH 35/35] fixing rule editor rules
---
.../specs/fragmentLocalization.cy.js | 33 ++++++++++---------
.../authoring/ruleEditor.authoring.cy.js | 6 ++--
2 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/ui.tests/test-module/specs/fragmentLocalization.cy.js b/ui.tests/test-module/specs/fragmentLocalization.cy.js
index 74a83e47cb..078b15711d 100644
--- a/ui.tests/test-module/specs/fragmentLocalization.cy.js
+++ b/ui.tests/test-module/specs/fragmentLocalization.cy.js
@@ -47,23 +47,24 @@ describe('Fragment Localization Tests', () => {
});
}
-
- it('should localize fragment content using getFormLocale API', () => {
- return cy.window().then($window => {
- if($window.guideBridge && $window.guideBridge.isConnected()) {
- // use cursor based API if latest AddOn
- return getFormId(formPath)
- .then(formId => {
- return fetch(`/adobe/forms/af/${formId}/de`)
- .then(response => {
- return response.text().then(body => {
- expect(body).to.contain("Responsive Text Input de")
- })
+ if (cy.af.isLatestAddon()) {
+ it('should localize fragment content using getFormLocale API', () => {
+ return cy.window().then($window => {
+ if($window.guideBridge && $window.guideBridge.isConnected()) {
+ // use cursor based API if latest AddOn
+ return getFormId(formPath)
+ .then(formId => {
+ return fetch(`/adobe/forms/af/${formId}/de`)
+ .then(response => {
+ return response.text().then(body => {
+ expect(body).to.contain("Responsive Text Input de")
+ })
+ })
+ })
+ }
+ });
})
- })
- }
- });
- })
+ }
it("should display localized text when fragment is rendered in form", () => {
const firstTextComponent = formContainer._model.items[0].items[0].items[0].id;
diff --git a/ui.tests/test-module/specs/ruleeditor/authoring/ruleEditor.authoring.cy.js b/ui.tests/test-module/specs/ruleeditor/authoring/ruleEditor.authoring.cy.js
index e29b800743..07452db07d 100644
--- a/ui.tests/test-module/specs/ruleeditor/authoring/ruleEditor.authoring.cy.js
+++ b/ui.tests/test-module/specs/ruleeditor/authoring/ruleEditor.authoring.cy.js
@@ -184,7 +184,7 @@ describe('Rule editor authoring sanity for core-components',function(){
});
// check if rule is created
- cy.getRuleEditorIframe().find("[title^='datepicker'][title$=' - Validate'] .title-cell").should("exist");
+ cy.getRuleEditorIframe().find(formsSelectors.ruleEditor.ruleSummary.DATE_PICKER_RULE).should("exist");
// check and close rule editor
cy.getRuleEditorIframe().find(formsSelectors.ruleEditor.action.closeRuleEditor).should("exist");
@@ -426,7 +426,7 @@ describe('Rule editor authoring sanity for core-components',function(){
cy.wait(1000);
// click on create option from rule editor header
// commenting the below check as 'af-rule-editor-initialized' event does not seem to be triggered in 650
- cy.getRuleEditorIframe().find("[title^='submit'][title$=' - Click'] .title-cell").should("be.visible").click();
+ cy.getRuleEditorIframe().find("[title='Submit - Click'] .title-cell").should("be.visible").click();
// select FUNCTION_CALL action from dropdown
cy.getRuleEditorIframe().find(formsSelectors.ruleEditor.operator.FUNCTION_CALL).should("exist");
cy.getRuleEditorIframe().find(formsSelectors.ruleEditor.operator.FUNCTION_CALL).click({force: true});
@@ -441,7 +441,7 @@ describe('Rule editor authoring sanity for core-components',function(){
cy.getRuleEditorIframe().find(formsSelectors.ruleEditor.action.saveRule).click();
// check if rule is created
- cy.getRuleEditorIframe().find("[title^='submit'][title$=' - Click'] .title-cell").should("exist");
+ cy.getRuleEditorIframe().find(formsSelectors.ruleEditor.ruleSummary.CUSTOM_SUBMIT_FORM_RULE).should("exist");
// check and close rule editor
cy.getRuleEditorIframe().find(formsSelectors.ruleEditor.action.closeRuleEditor).should("exist");