From c23bcc7bb960df7bcc99463649adbb6269346f67 Mon Sep 17 00:00:00 2001 From: Rishi Mehta Date: Tue, 23 Jul 2024 16:19:02 +0530 Subject: [PATCH 1/6] Fixing exclusive maximum and minimum issue with number input --- .../core/components/util/ComponentUtils.java | 3 +++ .../models/v1/form/NumberInputImplTest.java | 7 +++++ ...rter-numberinput-backwardcompatible-2.json | 24 +++++++++++++++++ .../form/numberinput/test-content.json | 27 +++++++++++++++++++ .../v1/datepicker/_cq_dialog/.content.xml | 4 +-- .../v1/numberinput/_cq_dialog/.content.xml | 2 ++ 6 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 bundles/af-core/src/test/resources/form/numberinput/exporter-numberinput-backwardcompatible-2.json diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/ComponentUtils.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/ComponentUtils.java index 9a7f3c40fd..a1c69a051f 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/ComponentUtils.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/util/ComponentUtils.java @@ -167,6 +167,9 @@ public static T getExclusiveValue(Object exclusiveValue, T value, Object exc } else { return null; } + } else if (Boolean.TRUE.equals(exclusiveValueCheck) && value != null) { // backward compatibility case // not to be changed + // If so, return the value + return (T) value; } else { // Handle other cases or return null if desired return null; diff --git a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/NumberInputImplTest.java b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/NumberInputImplTest.java index 2f6a56d0b7..a69b567eaf 100644 --- a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/NumberInputImplTest.java +++ b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/NumberInputImplTest.java @@ -51,6 +51,7 @@ public class NumberInputImplTest { private static final String PATH_NUMBER_INPUT_INTEGER_TYPE = CONTENT_ROOT + "/numberinput-integer-type"; private static final String PATH_NUMBER_INPUT_CONSTRAINTS = CONTENT_ROOT + "/numberinput-exclusive"; private static final String PATH_NUMBER_INPUT_BACKWARD_COMPATIBLE = CONTENT_ROOT + "/numberinput-backwardcompatible"; + private static final String PATH_NUMBER_INPUT_BACKWARD_COMPATIBLE_2 = CONTENT_ROOT + "/numberinput-backwardcompatible-2"; private static final String PATH_NUMBER_INPUT_BACKWARD_COMPATIBLE_STRING = CONTENT_ROOT + "/numberinput-backwardcompatible-string"; private static final String PATH_NUMBER_INPUT = CONTENT_ROOT + "/numberinput"; private static final String PATH_NUMBER_INPUT_DATALAYER = CONTENT_ROOT + "/numberinput-datalayer"; @@ -267,6 +268,12 @@ void testJSONExportBackwardCompatible() throws Exception { Utils.testJSONExport(numberInput, Utils.getTestExporterJSONPath(BASE, PATH_NUMBER_INPUT_BACKWARD_COMPATIBLE)); } + @Test + void testJSONExportBackwardCompatible2() throws Exception { + NumberInput numberInput = Utils.getComponentUnderTest(PATH_NUMBER_INPUT_BACKWARD_COMPATIBLE_2, NumberInput.class, context); + Utils.testJSONExport(numberInput, Utils.getTestExporterJSONPath(BASE, PATH_NUMBER_INPUT_BACKWARD_COMPATIBLE_2)); + } + @Test void testGetProperties() throws Exception { NumberInput numberInput = Utils.getComponentUnderTest(PATH_NUMBER_INPUT_CUSTOMIZED, NumberInput.class, context); diff --git a/bundles/af-core/src/test/resources/form/numberinput/exporter-numberinput-backwardcompatible-2.json b/bundles/af-core/src/test/resources/form/numberinput/exporter-numberinput-backwardcompatible-2.json new file mode 100644 index 0000000000..d605eb9bf0 --- /dev/null +++ b/bundles/af-core/src/test/resources/form/numberinput/exporter-numberinput-backwardcompatible-2.json @@ -0,0 +1,24 @@ +{ + ":type": "core/fd/components/form/numberinput/v1/numberinput", + "description": "Enter your phone number.", + "events": { + "custom:setProperty": [ + "$event.payload" + ] + }, + "exclusiveMaximum": 2000002, + "exclusiveMinimum": 10002, + "fieldType": "number-input", + "id": "numberinput-57e5de6073", + "label": { + "value": "Phone Number" + }, + "name": "Phone Number", + "properties": { + "fd:dor": { + "dorExclusion": false + }, + "fd:path": "/content/numberinput-backwardcompatible-2" + }, + "type": "number" +} diff --git a/bundles/af-core/src/test/resources/form/numberinput/test-content.json b/bundles/af-core/src/test/resources/form/numberinput/test-content.json index b4804526d2..3211baa765 100644 --- a/bundles/af-core/src/test/resources/form/numberinput/test-content.json +++ b/bundles/af-core/src/test/resources/form/numberinput/test-content.json @@ -133,6 +133,33 @@ "fd:path": "/content/forms/af/af2/jcr:content/guideContainer/accordion/item_2/numberinput" } }, + "numberinput-backwardcompatible-2": { + "id": "numberinput-57e5de6073", + "sling:resourceType": "core/fd/components/form/numberinput/v1/numberinput", + "fieldType": "number-input", + "description": "Enter your phone number.", + "name": "Phone Number", + "jcr:title" : "Phone Number", + "type": "string", + "label": { + "value": "Phone Number" + }, + "events": { + "custom:setProperty": [ + "$event.payload" + ] + }, + "excludeMinimumCheck" : true, + "excludeMaximumCheck" : true, + "minimum" : 10002, + "maximum" : 2000002, + "properties": { + "fd:dor": { + "dorExclusion": false + }, + "fd:path": "/content/forms/af/af2/jcr:content/guideContainer/accordion/item_2/numberinput" + } + }, "numberinput-backwardcompatible-string": { "sling:resourceType": "core/fd/components/form/numberinput/v1/numberinput", "fieldType": "number-input", 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 91372443fb..4886b1c14d 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 @@ -95,7 +95,7 @@ + + Date: Tue, 23 Jul 2024 16:38:14 +0530 Subject: [PATCH 2/6] Fixing exclusive maximum and minimum issue with date picker --- .../internal/form/ReservedProperties.java | 2 ++ .../models/v1/form/DatePickerImpl.java | 18 +++++++++++-- .../models/v1/form/DatePickerImplTest.java | 7 +++++ ...xporter-datepicker-backwardcompatible.json | 25 +++++++++++++++++ .../form/datepicker/test-content.json | 27 +++++++++++++++++++ 5 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 bundles/af-core/src/test/resources/form/datepicker/exporter-datepicker-backwardcompatible.json diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java index b95917e3f3..9cc711f3e3 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/form/ReservedProperties.java @@ -87,6 +87,8 @@ private ReservedProperties() { public static final String PN_MINIMUM = "minimum"; public static final String PN_EXCLUSIVE_MINIMUM = "exclusiveMinimum"; public static final String PN_EXCLUSIVE_MAXIMUM = "exclusiveMaximum"; + public static final String PN_EXCLUDE_MINIMUM = "excludeMinimum"; + public static final String PN_EXCLUDE_MAXIMUM = "excludeMaximum"; public static final String PN_EXCLUDE_MINIMUM_CHECK = "excludeMinimumCheck"; public static final String PN_EXCLUDE_MAXIMUM_CHECK = "excludeMaximumCheck"; public static final String PN_ENFORCE_ENUM = "enforceEnum"; diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImpl.java index b97416f5b8..8dfa4d4bd1 100644 --- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImpl.java +++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImpl.java @@ -22,14 +22,18 @@ import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.resource.Resource; +import org.apache.sling.models.annotations.Default; import org.apache.sling.models.annotations.Exporter; import org.apache.sling.models.annotations.Model; +import org.apache.sling.models.annotations.injectorspecific.InjectionStrategy; import org.apache.sling.models.annotations.injectorspecific.SlingObject; +import org.apache.sling.models.annotations.injectorspecific.ValueMapValue; import org.jetbrains.annotations.NotNull; import com.adobe.cq.export.json.ComponentExporter; import com.adobe.cq.export.json.ExporterConstants; import com.adobe.cq.forms.core.components.internal.form.FormConstants; +import com.adobe.cq.forms.core.components.internal.form.ReservedProperties; import com.adobe.cq.forms.core.components.models.form.ConstraintType; import com.adobe.cq.forms.core.components.models.form.DatePicker; import com.adobe.cq.forms.core.components.util.AbstractFieldImpl; @@ -46,6 +50,16 @@ public class DatePickerImpl extends AbstractFieldImpl implements DatePicker { @SlingObject private Resource resource; + /*** Not to be changed, kept for backward compatibility **/ + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = ReservedProperties.PN_EXCLUDE_MINIMUM) + @Default(booleanValues = false) + protected boolean excludeMinimum; + + @ValueMapValue(injectionStrategy = InjectionStrategy.OPTIONAL, name = ReservedProperties.PN_EXCLUDE_MAXIMUM) + @Default(booleanValues = false) + protected boolean excludeMaximum; + /*** end of Not to be changed **/ + private Date exclusiveMinimumVaue; private Date exclusiveMaximumValue; @@ -84,8 +98,8 @@ public Date getExclusiveMinimumDate() { @PostConstruct private void initDatePicker() { - exclusiveMaximumValue = ComponentUtils.getExclusiveValue(exclusiveMaximum, maximumDate, null); - exclusiveMinimumVaue = ComponentUtils.getExclusiveValue(exclusiveMinimum, minimumDate, null); + exclusiveMaximumValue = ComponentUtils.getExclusiveValue(exclusiveMaximum, maximumDate, excludeMaximum); + exclusiveMinimumVaue = ComponentUtils.getExclusiveValue(exclusiveMinimum, minimumDate, excludeMinimum); // in json either, exclusiveMaximum or maximum should be present if (exclusiveMaximumValue != null) { maximumDate = null; diff --git a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImplTest.java b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImplTest.java index dabcbb1e4b..d7ff283a62 100644 --- a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImplTest.java +++ b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/DatePickerImplTest.java @@ -47,6 +47,7 @@ public class DatePickerImplTest { private static final String PATH_DATEPICKER = CONTENT_ROOT + "/datepicker"; private static final String PATH_DATEPICKER_DATALAYER = CONTENT_ROOT + "/datepicker-datalayer"; private static final String PATH_DATEPICKER_DISPLAY_VALUE_EXPRESSION = CONTENT_ROOT + "/datepicker-displayValueExpression"; + private static final String PATH_DATEPICKER_BACKWARD_COMPATIBLE = CONTENT_ROOT + "/datepicker-backwardcompatible"; private final AemContext context = FormsCoreComponentTestContext.newAemContext(); @@ -241,6 +242,12 @@ void testJSONExport() throws Exception { Utils.testJSONExport(datePicker, Utils.getTestExporterJSONPath(BASE, PATH_DATEPICKER)); } + @Test + void testJSONExportBackwardCompatibility() throws Exception { + DatePicker datePicker = Utils.getComponentUnderTest(PATH_DATEPICKER_BACKWARD_COMPATIBLE, DatePicker.class, context); + Utils.testJSONExport(datePicker, Utils.getTestExporterJSONPath(BASE, PATH_DATEPICKER_BACKWARD_COMPATIBLE)); + } + @Test void testJSONExportForCustomized() throws Exception { DatePicker datePicker = Utils.getComponentUnderTest(PATH_DATEPICKER_CUSTOMIZED, DatePicker.class, context); diff --git a/bundles/af-core/src/test/resources/form/datepicker/exporter-datepicker-backwardcompatible.json b/bundles/af-core/src/test/resources/form/datepicker/exporter-datepicker-backwardcompatible.json new file mode 100644 index 0000000000..1c51515690 --- /dev/null +++ b/bundles/af-core/src/test/resources/form/datepicker/exporter-datepicker-backwardcompatible.json @@ -0,0 +1,25 @@ +{ + "id": "datepicker-0ac1fed1fe", + "fieldType": "date-input", + "name": "DoB", + "description": "Date of Birth", + "type": "string", + "label": { + "value": "DoB" + }, + "events": { + "custom:setProperty": [ + "$event.payload" + ] + }, + "properties": { + "fd:dor": { + "dorExclusion": false + }, + "fd:path": "/content/datepicker-backwardcompatible" + }, + "format": "date", + "exclusiveMaximum": "2024-07-23", + "exclusiveMinimum": "2024-07-10", + ":type": "core/fd/components/form/datepicker/v1/datepicker" +} \ No newline at end of file diff --git a/bundles/af-core/src/test/resources/form/datepicker/test-content.json b/bundles/af-core/src/test/resources/form/datepicker/test-content.json index 649610aa94..67aef568ce 100644 --- a/bundles/af-core/src/test/resources/form/datepicker/test-content.json +++ b/bundles/af-core/src/test/resources/form/datepicker/test-content.json @@ -89,6 +89,33 @@ "fd:path": "/content/forms/af/af2/jcr:content/guideContainer/datepicker" } }, + "datepicker-backwardcompatible": { + "id": "datepicker-0ac1fed1fe", + "sling:resourceType": "core/fd/components/form/datepicker/v1/datepicker", + "fieldType": "date-input", + "excludeMaximum" : true, + "excludeMinimum" : true, + "minimumDate": "Wed Jul 10 2024 00:00:00 GMT+0000", + "maximumDate": "Tue Jul 23 2024 00:00:00 GMT+0000", + "description": "Date of Birth", + "jcr:title" : "DoB", + "name": "DoB", + "type": "string", + "label": { + "value": "DoB" + }, + "events": { + "custom:setProperty": [ + "$event.payload" + ] + }, + "properties": { + "fd:dor": { + "dorExclusion": false + }, + "fd:path": "/content/forms/af/af2/jcr:content/guideContainer/datepicker" + } + }, "datepicker-displayValueExpression" : { "jcr:primaryType": "nt:unstructured", "sling:resourceType" : "core/fd/components/form/datepicker/v1/datepicker", From 5468f3a0586a213cd0919bd91fbde8ed30b2e0d7 Mon Sep 17 00:00:00 2001 From: Rishi Mehta Date: Wed, 24 Jul 2024 14:51:59 +0530 Subject: [PATCH 3/6] Adding test cases as per the customer use-case --- .../samples/datepicker/basic/.content.xml | 17 +++ .../samples/numberinput/basic/.content.xml | 25 +++- ui.frontend/package-lock.json | 110 +++++++++++++----- ui.frontend/package.json | 4 +- ui.tests/test-module/package-lock.json | 9 +- .../datepicker/datepicker.runtime.spec.js | 15 +++ .../numberinput/numberinput.runtime.spec.js | 13 +++ 7 files changed, 151 insertions(+), 42 deletions(-) diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/datepicker/basic/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/datepicker/basic/.content.xml index 9759c11c97..40ef5f82a5 100755 --- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/datepicker/basic/.content.xml +++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/datepicker/basic/.content.xml @@ -187,6 +187,23 @@ textIsRich="[true,true,true]" unboundFormElement="{Boolean}false" visible="{Boolean}true"/> + diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/numberinput/basic/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/numberinput/basic/.content.xml index 84b51cab1b..a21ad13cfa 100755 --- a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/numberinput/basic/.content.xml +++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/numberinput/basic/.content.xml @@ -139,12 +139,27 @@ displayValueExpression="formatCreditCardNumber($field)" fieldType="number-input" name="numberinput1710483567726"> - - + + + diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json index 6f28d5251a..fdf7280da7 100644 --- a/ui.frontend/package-lock.json +++ b/ui.frontend/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@aemforms/af-core": "^0.22.92", + "@aemforms/af-core": "file:///Users/rismehta/af2-web-runtime/packages/forms-next-core", "@aemforms/af-custom-functions": "1.0.9", "@aemforms/af-formatters": "^0.22.92" }, @@ -26,6 +26,41 @@ "webpack-merge": "^5.8.0" } }, + "../../af2-web-runtime/packages/forms-next-core": { + "name": "@aemforms/af-core", + "version": "0.22.95", + "license": "Adobe Proprietary", + "dependencies": { + "@adobe/json-formula": "0.1.50", + "@aemforms/af-formatters": "^0.22.95" + }, + "devDependencies": { + "@babel/preset-env": "^7.20.2", + "@types/jest": "29.2.4", + "@types/lodash": "^4.14.171", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", + "babel-jest": "^29.4.1", + "blob-polyfill": "^7.0.20220408", + "eslint": "^7.30.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jest": "^24.3.6", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.1.0", + "form-data": "^4.0.0", + "jest": "29.3", + "jest-environment-jsdom": "^29.3.1", + "jest-junit": "^12.2.0", + "nock": "^13.1.3", + "node-fetch": "^2.6.1", + "parse-multipart-data": "^1.5.0", + "ts-jest": "29.0", + "typedoc": "0.22.11", + "typedoc-plugin-markdown": "3.11.13", + "typescript": "^4.3.5" + } + }, "../../af2-web-runtime/packages/forms-next-formatters": { "name": "@aemforms/af-formatters", "version": "0.22.75", @@ -52,22 +87,9 @@ "typedoc-plugin-markdown": "3.11.13" } }, - "node_modules/@adobe/json-formula": { - "version": "0.1.50", - "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz", - "integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA==", - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aemforms/af-core": { - "version": "0.22.92", - "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.92.tgz", - "integrity": "sha512-Or7g38Gnx9d04Zhg50SIyJWhcNVio8J4ArrbcSomEdrzVfFU+dzrD9KOsytIdKm/J6Rg9+Z+2rR1ZMVLyOfvKw==", - "dependencies": { - "@adobe/json-formula": "0.1.50", - "@aemforms/af-formatters": "^0.22.92" - } + "resolved": "../../af2-web-runtime/packages/forms-next-core", + "link": true }, "node_modules/@aemforms/af-custom-functions": { "version": "1.0.9", @@ -11070,18 +11092,35 @@ } }, "dependencies": { - "@adobe/json-formula": { - "version": "0.1.50", - "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz", - "integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA==" - }, "@aemforms/af-core": { - "version": "0.22.92", - "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.92.tgz", - "integrity": "sha512-Or7g38Gnx9d04Zhg50SIyJWhcNVio8J4ArrbcSomEdrzVfFU+dzrD9KOsytIdKm/J6Rg9+Z+2rR1ZMVLyOfvKw==", + "version": "file:../../af2-web-runtime/packages/forms-next-core", "requires": { "@adobe/json-formula": "0.1.50", - "@aemforms/af-formatters": "^0.22.92" + "@aemforms/af-formatters": "^0.22.95", + "@babel/preset-env": "^7.20.2", + "@types/jest": "29.2.4", + "@types/lodash": "^4.14.171", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", + "babel-jest": "^29.4.1", + "blob-polyfill": "^7.0.20220408", + "eslint": "^7.30.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jest": "^24.3.6", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.1.0", + "form-data": "^4.0.0", + "jest": "29.3", + "jest-environment-jsdom": "^29.3.1", + "jest-junit": "^12.2.0", + "nock": "^13.1.3", + "node-fetch": "^2.6.1", + "parse-multipart-data": "^1.5.0", + "ts-jest": "29.0", + "typedoc": "0.22.11", + "typedoc-plugin-markdown": "3.11.13", + "typescript": "^4.3.5" } }, "@aemforms/af-custom-functions": { @@ -11368,7 +11407,8 @@ }, "@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", - "dev": true + "dev": true, + "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -13306,7 +13346,8 @@ }, "@webpack-cli/configtest": { "version": "1.2.0", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.5.0", @@ -13317,7 +13358,8 @@ }, "@webpack-cli/serve": { "version": "1.7.0", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -13351,7 +13393,8 @@ }, "acorn-import-assertions": { "version": "1.9.0", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -13387,7 +13430,8 @@ }, "ajv-keywords": { "version": "3.5.2", - "dev": true + "dev": true, + "requires": {} }, "ansi-escapes": { "version": "4.3.2", @@ -15753,7 +15797,8 @@ }, "jest-pnp-resolver": { "version": "1.2.3", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "26.0.0", @@ -18235,7 +18280,8 @@ }, "ws": { "version": "8.16.0", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "4.0.0", diff --git a/ui.frontend/package.json b/ui.frontend/package.json index d1468847c0..3c5b67bfc4 100644 --- a/ui.frontend/package.json +++ b/ui.frontend/package.json @@ -23,8 +23,8 @@ "webpack-merge": "^5.8.0" }, "dependencies": { - "@aemforms/af-core": "^0.22.92", - "@aemforms/af-formatters": "^0.22.92", + "@aemforms/af-core": "^0.22.96", + "@aemforms/af-formatters": "^0.22.96", "@aemforms/af-custom-functions": "1.0.9" } } diff --git a/ui.tests/test-module/package-lock.json b/ui.tests/test-module/package-lock.json index 5c54673beb..11fbffd3e0 100644 --- a/ui.tests/test-module/package-lock.json +++ b/ui.tests/test-module/package-lock.json @@ -14913,7 +14913,8 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", - "dev": true + "dev": true, + "requires": {} }, "backo2": { "version": "1.0.2", @@ -15926,7 +15927,8 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-5.0.8.tgz", "integrity": "sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==", - "dev": true + "dev": true, + "requires": {} }, "cypress-iframe": { "version": "1.0.1", @@ -20786,7 +20788,8 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true + "dev": true, + "requires": {} }, "xhr": { "version": "2.6.0", diff --git a/ui.tests/test-module/specs/datepicker/datepicker.runtime.spec.js b/ui.tests/test-module/specs/datepicker/datepicker.runtime.spec.js index a109ddba94..8a16fbe67c 100644 --- a/ui.tests/test-module/specs/datepicker/datepicker.runtime.spec.js +++ b/ui.tests/test-module/specs/datepicker/datepicker.runtime.spec.js @@ -340,4 +340,19 @@ describe("Form Runtime with Date Picker", () => { cy.get(".dp-caption").should('include.text', todayYear); }); }); + + it("check minimum, maximum, exclusiveMinimum and exclusiveMaximum constraints ", () => { + const [dateInput10, dateInput10FieldView] = Object.entries(formContainer._fields)[10]; + const input = "2024-07-10"; + let model = dateInput10FieldView.getModel(); + cy.get(`#${dateInput10}`).find("input").clear().type(input).blur().then(x => { + cy.get(`#${dateInput10}`).find(".cmp-adaptiveform-datepicker__errormessage").should('have.text',"Value must be greater than 2024-07-10."); + cy.get(`#${dateInput10}`).find("input").clear().type("2024-07-12").blur().then(x => { + cy.get(`#${dateInput10}`).find(".cmp-adaptiveform-datepicker__errormessage").should('have.text',""); + cy.get(`#${dateInput10}`).find("input").clear().type("2024-07-26").blur().then(x => { + cy.get(`#${dateInput10}`).find(".cmp-adaptiveform-datepicker__errormessage").should('have.text',"Value must be less than 2024-07-23."); + }) + }) + }) + }); }) diff --git a/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js b/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js index 41cbb05462..c45c11f1b2 100644 --- a/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js +++ b/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js @@ -249,6 +249,19 @@ describe("Form with Number Input", () => { }) } }); + + it("check minimum, maximum, exclusiveMinimum and exclusiveMaximum constraints ", () => { + debugger; + const [numberInput9, numberInput9FieldView] = Object.entries(formContainer._fields)[8]; + const input = "1212"; + let model = numberInput9FieldView.getModel(); + cy.get(`#${numberInput9}`).find("input").clear().type(input).blur().then(x => { + cy.get(`#${numberInput9}`).find(".cmp-adaptiveform-numberinput__errormessage").should('have.text',"Value must be less than or equal to 100."); + cy.get(`#${numberInput9}`).find("input").clear().type("10").blur().then(x => { + cy.get(`#${numberInput9}`).find(".cmp-adaptiveform-numberinput__errormessage").should('have.text',"Minimum value should be 10"); + }) + }) + }); }) describe("Form with Number Input Required Validation", () => { From fdc4252bc72c55c1c38a402e2b46bcc5f73e5e7c Mon Sep 17 00:00:00 2001 From: Rishi Mehta Date: Wed, 24 Jul 2024 15:01:32 +0530 Subject: [PATCH 4/6] updating package lock --- ui.frontend/package-lock.json | 103 +++++++++++----------------------- 1 file changed, 32 insertions(+), 71 deletions(-) diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json index fdf7280da7..3f7e438884 100644 --- a/ui.frontend/package-lock.json +++ b/ui.frontend/package-lock.json @@ -9,9 +9,9 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@aemforms/af-core": "file:///Users/rismehta/af2-web-runtime/packages/forms-next-core", + "@aemforms/af-core": "^0.22.96", "@aemforms/af-custom-functions": "1.0.9", - "@aemforms/af-formatters": "^0.22.92" + "@aemforms/af-formatters": "^0.22.96" }, "devDependencies": { "@babel/preset-env": "^7.18.2", @@ -26,41 +26,6 @@ "webpack-merge": "^5.8.0" } }, - "../../af2-web-runtime/packages/forms-next-core": { - "name": "@aemforms/af-core", - "version": "0.22.95", - "license": "Adobe Proprietary", - "dependencies": { - "@adobe/json-formula": "0.1.50", - "@aemforms/af-formatters": "^0.22.95" - }, - "devDependencies": { - "@babel/preset-env": "^7.20.2", - "@types/jest": "29.2.4", - "@types/lodash": "^4.14.171", - "@typescript-eslint/eslint-plugin": "^4.28.2", - "@typescript-eslint/parser": "^4.28.2", - "babel-jest": "^29.4.1", - "blob-polyfill": "^7.0.20220408", - "eslint": "^7.30.0", - "eslint-config-standard": "^16.0.3", - "eslint-plugin-import": "^2.23.4", - "eslint-plugin-jest": "^24.3.6", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", - "form-data": "^4.0.0", - "jest": "29.3", - "jest-environment-jsdom": "^29.3.1", - "jest-junit": "^12.2.0", - "nock": "^13.1.3", - "node-fetch": "^2.6.1", - "parse-multipart-data": "^1.5.0", - "ts-jest": "29.0", - "typedoc": "0.22.11", - "typedoc-plugin-markdown": "3.11.13", - "typescript": "^4.3.5" - } - }, "../../af2-web-runtime/packages/forms-next-formatters": { "name": "@aemforms/af-formatters", "version": "0.22.75", @@ -87,9 +52,22 @@ "typedoc-plugin-markdown": "3.11.13" } }, + "node_modules/@adobe/json-formula": { + "version": "0.1.50", + "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz", + "integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA==", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@aemforms/af-core": { - "resolved": "../../af2-web-runtime/packages/forms-next-core", - "link": true + "version": "0.22.96", + "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.96.tgz", + "integrity": "sha512-t6JLaGZXPWTjBsI59V9khpHIz2fLG9rMY09U7OALmVrPPnVWDUT6pXQfhbCmL1qDB7FCrso0DrjxjTIl/HBrQA==", + "dependencies": { + "@adobe/json-formula": "0.1.50", + "@aemforms/af-formatters": "^0.22.96" + } }, "node_modules/@aemforms/af-custom-functions": { "version": "1.0.9", @@ -97,9 +75,9 @@ "integrity": "sha512-ZDWTUNAbzNsfK7kTVSRyMQiFh0ypz0cBY10cr6N1py6CJFa8VFIpxznPRL0FzdOp6wtIZtMusw0Uloh98G2+RA==" }, "node_modules/@aemforms/af-formatters": { - "version": "0.22.92", - "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.92.tgz", - "integrity": "sha512-NLL7sCMeUIy6mIxsQM1tMdOd1JNmyd5s3UZut9HO83uJjpDEI7r0QPPQRenpnPBf+OxmPaakzE/uCdGsf0awQw==" + "version": "0.22.96", + "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.96.tgz", + "integrity": "sha512-pKYF1IBi8ihBRowxuJyaSu7OjKDUGU4OGuN/G+1GBXFxqEgiLM97gECJYIGchY9zfeVSsQNGUjXXuvj6q7s0NA==" }, "node_modules/@ampproject/remapping": { "version": "2.2.1", @@ -11092,35 +11070,18 @@ } }, "dependencies": { + "@adobe/json-formula": { + "version": "0.1.50", + "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz", + "integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA==" + }, "@aemforms/af-core": { - "version": "file:../../af2-web-runtime/packages/forms-next-core", + "version": "0.22.96", + "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.96.tgz", + "integrity": "sha512-t6JLaGZXPWTjBsI59V9khpHIz2fLG9rMY09U7OALmVrPPnVWDUT6pXQfhbCmL1qDB7FCrso0DrjxjTIl/HBrQA==", "requires": { "@adobe/json-formula": "0.1.50", - "@aemforms/af-formatters": "^0.22.95", - "@babel/preset-env": "^7.20.2", - "@types/jest": "29.2.4", - "@types/lodash": "^4.14.171", - "@typescript-eslint/eslint-plugin": "^4.28.2", - "@typescript-eslint/parser": "^4.28.2", - "babel-jest": "^29.4.1", - "blob-polyfill": "^7.0.20220408", - "eslint": "^7.30.0", - "eslint-config-standard": "^16.0.3", - "eslint-plugin-import": "^2.23.4", - "eslint-plugin-jest": "^24.3.6", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", - "form-data": "^4.0.0", - "jest": "29.3", - "jest-environment-jsdom": "^29.3.1", - "jest-junit": "^12.2.0", - "nock": "^13.1.3", - "node-fetch": "^2.6.1", - "parse-multipart-data": "^1.5.0", - "ts-jest": "29.0", - "typedoc": "0.22.11", - "typedoc-plugin-markdown": "3.11.13", - "typescript": "^4.3.5" + "@aemforms/af-formatters": "^0.22.96" } }, "@aemforms/af-custom-functions": { @@ -11129,9 +11090,9 @@ "integrity": "sha512-ZDWTUNAbzNsfK7kTVSRyMQiFh0ypz0cBY10cr6N1py6CJFa8VFIpxznPRL0FzdOp6wtIZtMusw0Uloh98G2+RA==" }, "@aemforms/af-formatters": { - "version": "0.22.92", - "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.92.tgz", - "integrity": "sha512-NLL7sCMeUIy6mIxsQM1tMdOd1JNmyd5s3UZut9HO83uJjpDEI7r0QPPQRenpnPBf+OxmPaakzE/uCdGsf0awQw==" + "version": "0.22.96", + "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.96.tgz", + "integrity": "sha512-pKYF1IBi8ihBRowxuJyaSu7OjKDUGU4OGuN/G+1GBXFxqEgiLM97gECJYIGchY9zfeVSsQNGUjXXuvj6q7s0NA==" }, "@ampproject/remapping": { "version": "2.2.1", From a6bed31d9a7857f8d2e11047ae2c3ddb20c60e69 Mon Sep 17 00:00:00 2001 From: Rishi Mehta Date: Wed, 24 Jul 2024 15:06:52 +0530 Subject: [PATCH 5/6] Fixing test case --- .../test-module/specs/numberinput/numberinput.runtime.spec.js | 1 - 1 file changed, 1 deletion(-) diff --git a/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js b/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js index c45c11f1b2..1f1f1fcf23 100644 --- a/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js +++ b/ui.tests/test-module/specs/numberinput/numberinput.runtime.spec.js @@ -251,7 +251,6 @@ describe("Form with Number Input", () => { }); it("check minimum, maximum, exclusiveMinimum and exclusiveMaximum constraints ", () => { - debugger; const [numberInput9, numberInput9FieldView] = Object.entries(formContainer._fields)[8]; const input = "1212"; let model = numberInput9FieldView.getModel(); From 847247d7490bb47d4232830c21be5ef8cf3abbcd Mon Sep 17 00:00:00 2001 From: Rishi Mehta Date: Wed, 24 Jul 2024 16:24:56 +0530 Subject: [PATCH 6/6] Fixing test case --- .../specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js b/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js index 6775e68564..f9b4e87dbb 100644 --- a/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js +++ b/ui.tests/test-module/specs/aemEmbedContainer/aemEmbedContainer.runtime.spec.js @@ -41,7 +41,7 @@ describe("Sites with Aem Embed Container", () => { it("test for aemembedcontainer presence inside iframe", () => { getIframeBody().find('.cmp-adaptiveform-container').should('have.length', 1); - getIframeBody().find('.cmp-adaptiveform-container').find('.cmp-adaptiveform-numberinput__widget').should('have.length', 8); + getIframeBody().find('.cmp-adaptiveform-container').find('.cmp-adaptiveform-numberinput__widget').its('length').should('be.gt', 8); }) it("test for form presence in nonIframe mode", () => {