From 64454709271af68fffd3b20db84a0456afba4d17 Mon Sep 17 00:00:00 2001 From: Caleb Pomar Date: Tue, 8 Oct 2024 09:08:10 -0600 Subject: [PATCH] feat(hub-common): change content settings schema's extract toggle to be a tile select (#1681) --- .../src/content/_internal/ContentSchema.ts | 1 + .../content/_internal/getDownloadsSection.ts | 27 ++++++++++++------- .../_internal/ContentUiSchemaSettings.test.ts | 14 +++++++--- .../_internal/getDownloadsSection.test.ts | 13 ++++++--- 4 files changed, 38 insertions(+), 17 deletions(-) diff --git a/packages/common/src/content/_internal/ContentSchema.ts b/packages/common/src/content/_internal/ContentSchema.ts index 3b67224835c..b827a49721e 100644 --- a/packages/common/src/content/_internal/ContentSchema.ts +++ b/packages/common/src/content/_internal/ContentSchema.ts @@ -20,6 +20,7 @@ export const ContentSchema: IConfigurationSchema = { }, serverExtractCapability: { type: "boolean", + enum: [true, false], }, schedule: { type: "object", diff --git a/packages/common/src/content/_internal/getDownloadsSection.ts b/packages/common/src/content/_internal/getDownloadsSection.ts index 80743b4e5c8..88e0a568ff7 100644 --- a/packages/common/src/content/_internal/getDownloadsSection.ts +++ b/packages/common/src/content/_internal/getDownloadsSection.ts @@ -24,9 +24,9 @@ export function getDownloadsSection( ): IUiSchemaElement { const downloadSectionElements: IUiSchemaElement[] = []; - if (shouldShowExtractToggleElement(entity)) { - const extractToggleElement = getExtractToggleElement(i18nScope); - downloadSectionElements.push(extractToggleElement); + if (shouldShowDownloadSystemElement(entity)) { + const downloadSystemElement = getDownloadSystemElement(i18nScope); + downloadSectionElements.push(downloadSystemElement); } const downloadFormatsElement = getDownloadFormatsElement(i18nScope, entity); @@ -41,23 +41,30 @@ export function getDownloadsSection( } /** - * NOTE: we only show the extract toggle for main entities of a hosted feature service + * NOTE: we only show the download system toggle for main entities of a hosted feature service * since we can guarantee that the user will have the necessary permissions to enable * extract capabilities on the service. */ -function shouldShowExtractToggleElement(entity: IHubEditableContent): boolean { +function shouldShowDownloadSystemElement(entity: IHubEditableContent): boolean { return isHostedFeatureServiceMainEntity(entity); } -function getExtractToggleElement(i18nScope: string): IUiSchemaElement { +function getDownloadSystemElement(i18nScope: string): IUiSchemaElement { return { labelKey: `${i18nScope}.fields.serverExtractCapability.label`, scope: "/properties/serverExtractCapability", type: "Control", options: { - helperText: { - labelKey: `${i18nScope}.fields.serverExtractCapability.helperText`, - }, + control: "hub-field-input-tile-select", + labels: [ + `{{${i18nScope}.fields.serverExtractCapability.exportDataSetting.label:translate}}`, + `{{${i18nScope}.fields.serverExtractCapability.defaultDownloadsSystem.label:translate}}`, + ], + descriptions: [ + `{{${i18nScope}.fields.serverExtractCapability.exportDataSetting.description:translate}}`, + `{{${i18nScope}.fields.serverExtractCapability.defaultDownloadsSystem.description:translate}}`, + ], + layout: "vertical", messages: [ { type: UiSchemaMessageTypes.custom, @@ -107,7 +114,7 @@ function getDownloadFormatsElement( // Product has asked that if the extract capability toggle is present, we should disable // the download formats control when the toggle is off. We hope this will encourage more // users to opt into the hosted downloads experience. - if (shouldShowExtractToggleElement(entity)) { + if (shouldShowDownloadSystemElement(entity)) { result.rules.push({ effect: UiSchemaRuleEffects.DISABLE, conditions: [ diff --git a/packages/common/test/content/_internal/ContentUiSchemaSettings.test.ts b/packages/common/test/content/_internal/ContentUiSchemaSettings.test.ts index 0e804753b02..143187cea84 100644 --- a/packages/common/test/content/_internal/ContentUiSchemaSettings.test.ts +++ b/packages/common/test/content/_internal/ContentUiSchemaSettings.test.ts @@ -36,10 +36,16 @@ describe("buildUiSchema: content settings", () => { scope: "/properties/serverExtractCapability", type: "Control", options: { - helperText: { - labelKey: - "some.scope.fields.serverExtractCapability.helperText", - }, + control: "hub-field-input-tile-select", + labels: [ + `{{some.scope.fields.serverExtractCapability.exportDataSetting.label:translate}}`, + `{{some.scope.fields.serverExtractCapability.defaultDownloadsSystem.label:translate}}`, + ], + descriptions: [ + `{{some.scope.fields.serverExtractCapability.exportDataSetting.description:translate}}`, + `{{some.scope.fields.serverExtractCapability.defaultDownloadsSystem.description:translate}}`, + ], + layout: "vertical", messages: [ { type: "CUSTOM", diff --git a/packages/common/test/content/_internal/getDownloadsSection.test.ts b/packages/common/test/content/_internal/getDownloadsSection.test.ts index ea10f0cb143..7e1c223824b 100644 --- a/packages/common/test/content/_internal/getDownloadsSection.test.ts +++ b/packages/common/test/content/_internal/getDownloadsSection.test.ts @@ -21,9 +21,16 @@ describe("getDownloadsSection", () => { scope: "/properties/serverExtractCapability", type: "Control", options: { - helperText: { - labelKey: "some.scope.fields.serverExtractCapability.helperText", - }, + control: "hub-field-input-tile-select", + labels: [ + `{{some.scope.fields.serverExtractCapability.exportDataSetting.label:translate}}`, + `{{some.scope.fields.serverExtractCapability.defaultDownloadsSystem.label:translate}}`, + ], + descriptions: [ + `{{some.scope.fields.serverExtractCapability.exportDataSetting.description:translate}}`, + `{{some.scope.fields.serverExtractCapability.defaultDownloadsSystem.description:translate}}`, + ], + layout: "vertical", messages: [ { type: "CUSTOM",