diff --git a/.changeset/neat-jobs-greet.md b/.changeset/neat-jobs-greet.md new file mode 100644 index 0000000..d013efa --- /dev/null +++ b/.changeset/neat-jobs-greet.md @@ -0,0 +1,5 @@ +--- +"@itwin/scenes-client": patch +--- + +Add optional `description` field to SceneObject interfaces. Enables detailed object descriptions alongside display names. diff --git a/packages/scenes-client/src/models/object/sceneObjectCreate.ts b/packages/scenes-client/src/models/object/sceneObjectCreate.ts index ac2dfc7..b4b65d3 100644 --- a/packages/scenes-client/src/models/object/sceneObjectCreate.ts +++ b/packages/scenes-client/src/models/object/sceneObjectCreate.ts @@ -24,6 +24,8 @@ export interface BaseSceneObjectCreate< id?: string; /** Optional display name for the scene object */ displayName?: string; + /** Optional detailed description of the scene object */ + description?: string; /** Optional number for the scene object's order in lists. */ order?: number; /** Optional stacking order for clients to control rendering sequence. Objects with lower values are typically drawn beneath objects with higher values.*/ @@ -102,6 +104,7 @@ export function isSceneObjectCreate(v: unknown): v is SceneObjectCreate { isObject(v) && (v.id === undefined || typeof v.id === "string") && (v.displayName === undefined || typeof v.displayName === "string") && + (v.description === undefined || typeof v.description === "string") && (v.order === undefined || typeof v.order === "number") && (v.displayOrder === undefined || typeof v.displayOrder === "number") && (v.visible === undefined || typeof v.visible === "boolean") && diff --git a/packages/scenes-client/src/models/object/sceneObjectUpdate.ts b/packages/scenes-client/src/models/object/sceneObjectUpdate.ts index b4733c2..7df8708 100644 --- a/packages/scenes-client/src/models/object/sceneObjectUpdate.ts +++ b/packages/scenes-client/src/models/object/sceneObjectUpdate.ts @@ -25,6 +25,8 @@ export interface SceneObjectUpdate< order?: number | null; /** Optional stacking order for clients to control rendering sequence. Objects with lower values are typically drawn beneath objects with higher values. Pass `null` to remove. */ displayOrder?: number | null; + /** Optional detailed description of the scene object. Pass `null` to remove. */ + description?: string | null; /** Optional parent Id for the scene object (UUID). Pass `null` to remove. */ parentId?: string | null; /** Optional visibility state for the scene object. Pass `null` to remove. */ diff --git a/packages/scenes-client/tests/integration.test.ts b/packages/scenes-client/tests/integration.test.ts index 26e6c2f..fae1f8c 100644 --- a/packages/scenes-client/tests/integration.test.ts +++ b/packages/scenes-client/tests/integration.test.ts @@ -262,9 +262,10 @@ describe("Scenes Objects operations", () => { iTwinId: ITWIN_ID, sceneId, objectId: obj1, - object: { displayName: undefined, order: 2, displayOrder: 5 }, + object: { displayName: undefined, description: "TestDescription", order: 2, displayOrder: 5 }, }); expect(p1.object.displayName).toBe("TestLayer"); // ignored displayName + expect(p1.object.description).toBe("TestDescription"); // updated description expect(p1.object.order).toBe(2); // updated order expect(p1.object.displayOrder).toBe(5); // updated displayOrder @@ -272,9 +273,10 @@ describe("Scenes Objects operations", () => { iTwinId: ITWIN_ID, sceneId, objectId: obj1, - object: { displayName: null, order: null, displayOrder: null }, + object: { displayName: null, description: null, order: null, displayOrder: null }, }); expect(p2.object.displayName).toBe(undefined); // removed displayName + expect(p2.object.description).toBe(undefined); // removed description expect(p2.object.order).toBe(undefined); // removed order expect(p2.object.displayOrder).toBe(undefined); // removed displayOrder }); diff --git a/packages/scenes-client/tests/unit.test.ts b/packages/scenes-client/tests/unit.test.ts index 0602c25..54b0cb1 100644 --- a/packages/scenes-client/tests/unit.test.ts +++ b/packages/scenes-client/tests/unit.test.ts @@ -297,13 +297,15 @@ describe("Scene Object Operations", () => { it("patchObject()", async () => { fetchMock.mockImplementation(() => createSuccessfulResponse(exampleSceneObjectResponse)); const client = new SceneClient(getAccessToken); + const updateData = { + displayName: "Updated Object", + description: "Updated Description", + }; await client.patchObject({ iTwinId: "itw-1", sceneId: "scene-1", objectId: "object-1", - object: { - displayName: "UpdatedObject1", - }, + object: updateData, }); verifyFetch(fetchMock, { url: `${BASE_DOMAIN}/scene-1/objects/object-1?iTwinId=itw-1`, @@ -312,9 +314,7 @@ describe("Scene Object Operations", () => { Accept: "application/vnd.bentley.itwin-platform.v1+json", }, method: "PATCH", - body: JSON.stringify({ - displayName: "UpdatedObject1", - }), + body: JSON.stringify(updateData), }); });