From 028419ec12000a553b327473ec813ae4d4cc98b6 Mon Sep 17 00:00:00 2001 From: cnathe Date: Thu, 30 Oct 2025 08:53:34 -0500 Subject: [PATCH 1/5] Issue 52063: Domain designer to handle lookup to a query with a pipe character - don't just split on '|', as the queryName could contain '|' characters --- .../components/releaseNotes/components.md | 5 ++ .../domainproperties/models.test.ts | 49 +++++++++++++++++++ .../components/domainproperties/models.tsx | 5 +- 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index 20395bd421..b8c6cc5db2 100644 --- a/packages/components/releaseNotes/components.md +++ b/packages/components/releaseNotes/components.md @@ -1,6 +1,11 @@ # @labkey/components Components, models, actions, and utility functions for LabKey applications and pages +### version TBD +*Released* TBD +- Issue 52063: Domain designer to handle lookup to a query with a pipe character + - don't just split on '|', as the queryName could contain '|' characters + ### version 6.67.1 *Released* 29 October 2025 - Issue 53563: Domain designer lookups don't show newly added entity types after initial load/view diff --git a/packages/components/src/internal/components/domainproperties/models.test.ts b/packages/components/src/internal/components/domainproperties/models.test.ts index f0edf0a680..349ccd495a 100644 --- a/packages/components/src/internal/components/domainproperties/models.test.ts +++ b/packages/components/src/internal/components/domainproperties/models.test.ts @@ -51,6 +51,7 @@ import { import { acceptablePropertyType, + decodeLookup, DEFAULT_TEXT_CHOICE_VALIDATOR, DomainDesign, DomainField, @@ -1522,3 +1523,51 @@ describe('resolveLookupQueryValue', () => { ); }); }); + +describe('decodeLookup', () => { + test('base', () => { + let result = decodeLookup('http://www.w3.org/2001/XMLSchema#string|query'); + expect(result.rangeURI).toBe('http://www.w3.org/2001/XMLSchema#string'); + expect(result.queryName).toBe('query'); + + result = decodeLookup('http://www.w3.org/2001/XMLSchema#int|anotherQuery'); + expect(result.rangeURI).toBe('http://www.w3.org/2001/XMLSchema#int'); + expect(result.queryName).toBe('anotherQuery'); + + result = decodeLookup('http://www.w3.org/2001/XMLSchema#dateTime|dateQuery'); + expect(result.rangeURI).toBe('http://www.w3.org/2001/XMLSchema#dateTime'); + expect(result.queryName).toBe('dateQuery'); + }); + + test('invalid', () => { + let result = decodeLookup(undefined); + expect(result.rangeURI).toBeUndefined(); + expect(result.queryName).toBeUndefined(); + + result = decodeLookup('invalidStringWithoutDelimiter'); + expect(result.rangeURI).toBe('invalidStringWithoutDelimiter'); + expect(result.queryName).toBeUndefined(); + + result = decodeLookup(''); + expect(result.rangeURI).toBe(''); + expect(result.queryName).toBeUndefined(); + + result = decodeLookup('onlyDelimiter|'); + expect(result.rangeURI).toBe('onlyDelimiter'); + expect(result.queryName).toBe(''); + + result = decodeLookup('|onlyQueryName'); + expect(result.rangeURI).toBe(''); + expect(result.queryName).toBe('onlyQueryName'); + }); + + test('multipl | delimiters', () => { + let result = decodeLookup('http://www.w3.org/2001/XMLSchema#string|query|extra'); + expect(result.rangeURI).toBe('http://www.w3.org/2001/XMLSchema#string'); + expect(result.queryName).toBe('query|extra'); + + result = decodeLookup('http://www.w3.org/2001/XMLSchema#int|another|query|with|pipes'); + expect(result.rangeURI).toBe('http://www.w3.org/2001/XMLSchema#int'); + expect(result.queryName).toBe('another|query|with|pipes'); + }); +}); diff --git a/packages/components/src/internal/components/domainproperties/models.tsx b/packages/components/src/internal/components/domainproperties/models.tsx index 0937d8157f..901b6b9260 100644 --- a/packages/components/src/internal/components/domainproperties/models.tsx +++ b/packages/components/src/internal/components/domainproperties/models.tsx @@ -1531,7 +1531,10 @@ export function getValidValuesDetailStr(validValues: string[]): string { } export function decodeLookup(value: string): { queryName: string; rangeURI: string } { - const [rangeURI, queryName] = value ? value.split('|') : [undefined, undefined]; + // Issue 52063: don't just split on '|', as the queryName could contain '|' characters + const separatorIndex = value?.indexOf('|') ?? -1; + const rangeURI = separatorIndex === -1 ? value : value.substring(0, separatorIndex); + const queryName = separatorIndex === -1 ? undefined : value.substring(separatorIndex + 1); return { queryName, From 880f7812df257e01803b5d69a43ab6120e581d1e Mon Sep 17 00:00:00 2001 From: cnathe Date: Thu, 30 Oct 2025 08:54:10 -0500 Subject: [PATCH 2/5] 6.67.1-domainLookup52063.0 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index ec27445887..c606a8ee12 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "6.67.1", + "version": "6.67.1-domainLookup52063.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "6.67.1", + "version": "6.67.1-domainLookup52063.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index e3775e88e5..94358471e7 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "6.67.1", + "version": "6.67.1-domainLookup52063.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From bc71d0fb723baeef19a5664e72a46fa76f28dcb7 Mon Sep 17 00:00:00 2001 From: cnathe Date: Fri, 31 Oct 2025 16:04:30 -0500 Subject: [PATCH 3/5] 6.67.2-domainLookup52063.0 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index 303de0d6a7..870bb61d18 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "6.67.2", + "version": "6.67.2-domainLookup52063.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "6.67.2", + "version": "6.67.2-domainLookup52063.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index 07bf8bf80c..97fe2f585f 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "6.67.2", + "version": "6.67.2-domainLookup52063.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From 9f60d631dde4ccbaa7de2616cbb9be06c2acb104 Mon Sep 17 00:00:00 2001 From: cnathe Date: Sun, 2 Nov 2025 18:05:17 -0600 Subject: [PATCH 4/5] Update release notes with version number and release date --- packages/components/releaseNotes/components.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index 9f0330d8cb..0ece3a35b2 100644 --- a/packages/components/releaseNotes/components.md +++ b/packages/components/releaseNotes/components.md @@ -1,8 +1,8 @@ # @labkey/components Components, models, actions, and utility functions for LabKey applications and pages -### version TBD -*Released* TBD +### version 6.68.1 +*Released* 2 November 2025 - Issue 52063: Domain designer to handle lookup to a query with a pipe character - don't just split on '|', as the queryName could contain '|' characters From 07641ceb23e0fe2d1fa19dc1d20c462e41bd72a7 Mon Sep 17 00:00:00 2001 From: cnathe Date: Sun, 2 Nov 2025 18:07:09 -0600 Subject: [PATCH 5/5] 6.68.1 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index 186355f862..e765c75ba1 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "6.68.0", + "version": "6.68.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "6.68.0", + "version": "6.68.1", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index 7869bedd9a..7093ac4805 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "6.68.0", + "version": "6.68.1", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [