From 184cffaff82e9b5f1f89bcf55e936523fdf073d2 Mon Sep 17 00:00:00 2001 From: Sandrina Pereira Date: Tue, 7 Nov 2023 12:47:41 +0100 Subject: [PATCH 1/5] chore(hotfix): Ignore 'Component' from conditional attributes removal --- src/helpers.js | 1 + src/tests/conditions.test.js | 54 ++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/helpers.js b/src/helpers.js index 1a86783ac..e94390faf 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -24,6 +24,7 @@ const dynamicInternalJsfAttrs = [ 'calculateConditionalProperties', // driven from conditionals 'calculateCustomValidationProperties', // To be deprecated in favor of json-logic 'scopedJsonSchema', // The respective JSON Schema + 'Component', // HOTFIX/TODO Internal customizations, check test conditions.test.js for more info. ]; const dynamicInternalJsfAttrsObj = Object.fromEntries( dynamicInternalJsfAttrs.map((k) => [k, true]) diff --git a/src/tests/conditions.test.js b/src/tests/conditions.test.js index 9114e5e89..6fe85bf95 100644 --- a/src/tests/conditions.test.js +++ b/src/tests/conditions.test.js @@ -358,4 +358,58 @@ describe('Conditional attributes updated', () => { ], }); }); + + it('Keeps custom attribute Component (fieldAttrsFromJsf) (hotfix temporary)', () => { + // This is necessary as hotfix because we (Remote) use it internally. + // Not cool, we'll need a better solution asap. + const { fields, handleValidation } = createHeadlessForm( + { + properties: { + is_full_time: { type: 'string', oneOf: [{ const: 'yes' }, { const: 'no' }] }, + salary_period: { + type: 'string', + title: 'Salary period', + oneOf: [ + { title: 'Weekly', const: 'weekly' }, + { title: 'Monthly', const: 'monthly' }, + ], + }, + }, + allOf: [ + { + if: { + properties: { is_full_time: { const: 'yes' } }, + required: ['is_full_time'], + }, + then: { + properties: { + salary_period: { + description: 'We recommend montlhy.', + }, + }, + }, + }, + ], + }, + { + strictInputType: false, + customProperties: { + salary_period: { + Component: '', + }, + }, + } + ); + + // It's there by default + expect(fields[1].Component).toBe(''); + + // Given "Yes", it stays there too. + handleValidation({ is_full_time: 'yes' }); + expect(fields[1].Component).toBe(''); + + // Given "No", it stays there too. + handleValidation({ is_full_time: 'no' }); + expect(fields[1].Component).toBe(''); + }); }); From 301e822243860a91b9cfc6e3de52b4a79c7cd4bb Mon Sep 17 00:00:00 2001 From: Sandrina Pereira Date: Tue, 7 Nov 2023 12:49:39 +0100 Subject: [PATCH 2/5] Release 0.7.4-dev.20231107114922 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 252ddf88c..abf7919c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@remoteoss/json-schema-form", - "version": "0.7.3-beta.0", + "version": "0.7.4-dev.20231107114922", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@remoteoss/json-schema-form", - "version": "0.7.3-beta.0", + "version": "0.7.4-dev.20231107114922", "license": "MIT", "dependencies": { "json-logic-js": "^2.0.2", diff --git a/package.json b/package.json index 59044a76a..67c68e3ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@remoteoss/json-schema-form", - "version": "0.7.3-beta.0", + "version": "0.7.4-dev.20231107114922", "description": "Headless UI form powered by JSON Schemas", "author": "Remote.com (https://remote.com/)", "license": "MIT", From 2121d70ce0a36f7a2bc6abd0e64652a07525f081 Mon Sep 17 00:00:00 2001 From: Sandrina Pereira Date: Tue, 7 Nov 2023 13:51:30 +0100 Subject: [PATCH 3/5] Add another internal attr calculateDynamicProperties --- src/helpers.js | 5 ++++- src/tests/conditions.test.js | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/helpers.js b/src/helpers.js index e94390faf..395d6f0a3 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -24,7 +24,10 @@ const dynamicInternalJsfAttrs = [ 'calculateConditionalProperties', // driven from conditionals 'calculateCustomValidationProperties', // To be deprecated in favor of json-logic 'scopedJsonSchema', // The respective JSON Schema - 'Component', // HOTFIX/TODO Internal customizations, check test conditions.test.js for more info. + + // HOTFIX/TODO Internal customizations, check test conditions.test.js for more info. + 'Component', + 'calculateDynamicProperties', ]; const dynamicInternalJsfAttrsObj = Object.fromEntries( dynamicInternalJsfAttrs.map((k) => [k, true]) diff --git a/src/tests/conditions.test.js b/src/tests/conditions.test.js index 6fe85bf95..308620d44 100644 --- a/src/tests/conditions.test.js +++ b/src/tests/conditions.test.js @@ -396,6 +396,7 @@ describe('Conditional attributes updated', () => { customProperties: { salary_period: { Component: '', + calculateDynamicProperties: () => true, }, }, } @@ -403,13 +404,16 @@ describe('Conditional attributes updated', () => { // It's there by default expect(fields[1].Component).toBe(''); + expect(fields[1].calculateDynamicProperties).toEqual(expect.any(Function)); // Given "Yes", it stays there too. handleValidation({ is_full_time: 'yes' }); expect(fields[1].Component).toBe(''); + expect(fields[1].calculateDynamicProperties).toEqual(expect.any(Function)); // Given "No", it stays there too. handleValidation({ is_full_time: 'no' }); expect(fields[1].Component).toBe(''); + expect(fields[1].calculateDynamicProperties).toEqual(expect.any(Function)); }); }); From a6a4866f3634118db707d7825c19097dfa200b1c Mon Sep 17 00:00:00 2001 From: Sandrina Pereira Date: Tue, 7 Nov 2023 13:53:21 +0100 Subject: [PATCH 4/5] Release 0.7.4-dev.20231107125305 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index abf7919c7..f9f93a41a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@remoteoss/json-schema-form", - "version": "0.7.4-dev.20231107114922", + "version": "0.7.4-dev.20231107125305", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@remoteoss/json-schema-form", - "version": "0.7.4-dev.20231107114922", + "version": "0.7.4-dev.20231107125305", "license": "MIT", "dependencies": { "json-logic-js": "^2.0.2", diff --git a/package.json b/package.json index 67c68e3ac..f6552afe5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@remoteoss/json-schema-form", - "version": "0.7.4-dev.20231107114922", + "version": "0.7.4-dev.20231107125305", "description": "Headless UI form powered by JSON Schemas", "author": "Remote.com (https://remote.com/)", "license": "MIT", From 82004b5fc9f51a8cabfd2d4bf4dad5791fdaca84 Mon Sep 17 00:00:00 2001 From: Sandrina Pereira Date: Tue, 7 Nov 2023 15:32:07 +0100 Subject: [PATCH 5/5] Revert back to 0.7.2-beta.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9f93a41a..907255b07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@remoteoss/json-schema-form", - "version": "0.7.4-dev.20231107125305", + "version": "0.7.2-beta.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@remoteoss/json-schema-form", - "version": "0.7.4-dev.20231107125305", + "version": "0.7.2-beta.0", "license": "MIT", "dependencies": { "json-logic-js": "^2.0.2", diff --git a/package.json b/package.json index f6552afe5..733883406 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@remoteoss/json-schema-form", - "version": "0.7.4-dev.20231107125305", + "version": "0.7.2-beta.0", "description": "Headless UI form powered by JSON Schemas", "author": "Remote.com (https://remote.com/)", "license": "MIT",