diff --git a/packages/common/src/core/schemas/internal/getEditorSchemas.ts b/packages/common/src/core/schemas/internal/getEditorSchemas.ts index 882255cc54f..e49e10b8c16 100644 --- a/packages/common/src/core/schemas/internal/getEditorSchemas.ts +++ b/packages/common/src/core/schemas/internal/getEditorSchemas.ts @@ -140,6 +140,8 @@ export async function getEditorSchemas( import("../../../projects/_internal/ProjectUiSchemaCreate"), "hub:project:create2": () => import("../../../projects/_internal/ProjectUiSchemaCreate2"), + "hub:project:discussions": () => + import("../../../projects/_internal/ProjectUiSchemaDiscussions"), "hub:project:metrics": () => import("./metrics/ProjectUiSchemaMetrics"), "hub:project:settings": () => import("../../../projects/_internal/ProjectUiSchemaSettings"), diff --git a/packages/common/src/projects/_internal/ProjectBusinessRules.ts b/packages/common/src/projects/_internal/ProjectBusinessRules.ts index bc01638c21f..43ece20e0de 100644 --- a/packages/common/src/projects/_internal/ProjectBusinessRules.ts +++ b/packages/common/src/projects/_internal/ProjectBusinessRules.ts @@ -30,6 +30,7 @@ export const ProjectPermissions = [ "hub:project:workspace:overview", "hub:project:workspace:dashboard", "hub:project:workspace:details", + "hub:project:workspace:discussions", "hub:project:workspace:initiatives", "hub:project:workspace:settings", "hub:project:workspace:collaborators", @@ -134,6 +135,10 @@ export const ProjectPermissionPolicies: IPermissionPolicy[] = [ permission: "hub:project:workspace:details", dependencies: ["hub:project:workspace", "hub:project:edit"], }, + { + permission: "hub:project:workspace:discussions", + dependencies: ["hub:project:workspace", "hub:project:edit"], + }, { permission: "hub:project:workspace:initiatives", dependencies: [ diff --git a/packages/common/src/projects/_internal/ProjectUiSchemaDiscussions.ts b/packages/common/src/projects/_internal/ProjectUiSchemaDiscussions.ts new file mode 100644 index 00000000000..584daa33b4e --- /dev/null +++ b/packages/common/src/projects/_internal/ProjectUiSchemaDiscussions.ts @@ -0,0 +1,44 @@ +import { IArcGISContext } from "../../ArcGISContext"; +import { IUiSchema } from "../../core/schemas/types"; +import { EntityEditorOptions } from "../../core/schemas/internal/EditorOptions"; + +/** + * @private + * settings uiSchema for Hub Discussions - this + * defines how the schema properties should be + * rendered in the Discussions settings experience + */ +export const buildUiSchema = async ( + i18nScope: string, + options: EntityEditorOptions, + context: IArcGISContext +): Promise => { + return { + type: "Layout", + elements: [ + { + type: "Section", + labelKey: `${i18nScope}.sections.discussions.label`, + elements: [ + { + labelKey: `${i18nScope}.fields.discussable.label`, + scope: "/properties/isDiscussable", + type: "Control", + options: { + control: "hub-field-input-radio", + labels: [ + `{{${i18nScope}.fields.discussable.enabled.label:translate}}`, + `{{${i18nScope}.fields.discussable.disabled.label:translate}}`, + ], + descriptions: [ + `{{${i18nScope}.fields.discussable.enabled.description:translate}}`, + `{{${i18nScope}.fields.discussable.disabled.description:translate}}`, + ], + icons: ["speech-bubbles", "circle-disallowed"], + }, + }, + ], + }, + ], + }; +};