Skip to content

Commit

Permalink
feat: more schema updates
Browse files Browse the repository at this point in the history
affects: @esri/hub-common
  • Loading branch information
mjuniper committed Oct 1, 2024
1 parent 9f2467e commit 3558812
Show file tree
Hide file tree
Showing 14 changed files with 189 additions and 126 deletions.
82 changes: 0 additions & 82 deletions packages/common/src/groups/_internal/GroupSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,86 +66,4 @@ export const GroupSchema: IConfigurationSchema = {
},
isDiscussable: ENTITY_IS_DISCUSSABLE_SCHEMA,
},
allOf: [
// if the group is not public, isOpenData must be false
{
if: {
properties: {
access: { pattern: "(private|org)" },
},
},
then: {
properties: {
isOpenData: { const: false },
},
},
},
// if the group is is an admin group (leavingDisallowed === true), it must have a membershipAccess of organization
{
if: {
properties: {
leavingDisallowed: { const: true },
},
},
then: {
properties: {
membershipAccess: {
type: "string",
const: "organization",
},
},
},
},
// if the group is a shared update group (isSharedUpdate === true), it must have a membershipAccess of org or collaborators
{
if: {
properties: {
isSharedUpdate: { const: true },
},
},
then: {
properties: {
membershipAccess: {
type: "string",
pattern: "(organization|collaborators)",
},
},
},
},
// if the group has access === 'private', then the _join must be 'invite'
{
if: {
properties: {
access: { const: "private" },
},
},
then: {
properties: {
_join: { const: "invite" },
},
},
},
// if the group is admin (leavingDisallowed === true) or isSharedUpdate === true, _join must be 'invite' or 'request'
{
if: {
anyOf: [
{
properties: {
leavingDisallowed: { const: true },
},
},
{
properties: {
isSharedUpdate: { const: true },
},
},
],
},
then: {
properties: {
_join: { pattern: "(invite|request)" },
},
},
},
],
} as IConfigurationSchema;
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.membershipAccess.org:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab:translate}}`,
`{{${i18nScope}.fields.membershipAccess.org.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.createAssociation.any:translate}}`,
],
disabled: [
Expand All @@ -131,7 +131,7 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.contributeContent.all:translate}}`,
`{{${i18nScope}.fields.contributeContent.members.description:translate}}`,
`{{${i18nScope}.fields.contributeContent.createAssociation.admins:translate}}`,
],
},
Expand Down
10 changes: 5 additions & 5 deletions packages/common/src/groups/_internal/GroupUiSchemaCreateEdit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,9 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.membershipAccess.org:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab:translate}}`,
`{{${i18nScope}.fields.membershipAccess.any:translate}}`,
`{{${i18nScope}.fields.membershipAccess.org.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.any.description:translate}}`,
],
disabled: [
false,
Expand All @@ -116,8 +116,8 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.contributeContent.all:translate}}`,
`{{${i18nScope}.fields.contributeContent.admins:translate}}`,
`{{${i18nScope}.fields.contributeContent.members.description:translate}}`,
`{{${i18nScope}.fields.contributeContent.admins.description:translate}}`,
],
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.membershipAccess.org:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab:translate}}`,
`{{${i18nScope}.fields.membershipAccess.org.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.createFollowers.any:translate}}`,
],
disabled: [false, false, entity.isSharedUpdate],
Expand All @@ -122,7 +122,7 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.contributeContent.all:translate}}`,
`{{${i18nScope}.fields.contributeContent.members.description:translate}}`,
`{{${i18nScope}.fields.contributeContent.createFollowers.admins:translate}}`,
],
},
Expand Down
10 changes: 5 additions & 5 deletions packages/common/src/groups/_internal/GroupUiSchemaCreateView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.membershipAccess.org:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab:translate}}`,
`{{${i18nScope}.fields.membershipAccess.any:translate}}`,
`{{${i18nScope}.fields.membershipAccess.org.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.any.description:translate}}`,
],
disabled: [
false,
Expand All @@ -131,8 +131,8 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.contributeContent.all:translate}}`,
`{{${i18nScope}.fields.contributeContent.admins:translate}}`,
`{{${i18nScope}.fields.contributeContent.members.description:translate}}`,
`{{${i18nScope}.fields.contributeContent.admins.description:translate}}`,
],
},
},
Expand Down
75 changes: 69 additions & 6 deletions packages/common/src/groups/_internal/GroupUiSchemaSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,75 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.membershipAccess.org:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab:translate}}`,
`{{${i18nScope}.fields.membershipAccess.any:translate}}`,
`{{${i18nScope}.fields.membershipAccess.org.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.collab.description:translate}}`,
`{{${i18nScope}.fields.membershipAccess.any.description:translate}}`,
],
// rules that pertain to the individual options
rules: [
[
{
effect: UiSchemaRuleEffects.NONE,
},
],
[
{
effect: UiSchemaRuleEffects.DISABLE,
conditions: [
{
scope: "/properties/leavingDisallowed",
schema: { const: true },
},
],
},
],
[
{
effect: UiSchemaRuleEffects.DISABLE,
conditions: [
{
scope: "/properties/leavingDisallowed",
schema: { const: true },
},
],
},
{
effect: UiSchemaRuleEffects.DISABLE,
conditions: [
{
scope: "/properties/isSharedUpdate",
schema: { const: true },
},
],
},
],
],
disabled: [false, false, entity.isSharedUpdate],
},
// rules that pertain to the control as a whole
rules: [
{
effect: UiSchemaRuleEffects.RESET,
conditions: [
{
scope: "/properties/leavingDisallowed",
schema: { const: true },
},
],
},
{
effect: UiSchemaRuleEffects.RESET,
conditions: [
{
scope: "/properties/isSharedUpdate",
schema: { const: true },
},
{
scope: "/properties/membershipAccess",
schema: { const: "anyone" },
},
],
},
],
},
{
labelKey: `${i18nScope}.fields.contributeContent.label`,
Expand All @@ -55,8 +118,8 @@ export const buildUiSchema = async (
options: {
control: "hub-field-input-radio",
labels: [
`{{${i18nScope}.fields.contributeContent.all:translate}}`,
`{{${i18nScope}.fields.contributeContent.admins:translate}}`,
`{{${i18nScope}.fields.contributeContent.members.description:translate}}`,
`{{${i18nScope}.fields.contributeContent.admins.description:translate}}`,
],
},
},
Expand Down
5 changes: 5 additions & 0 deletions packages/common/src/groups/getWellKnownGroup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export function getWellKnownGroup(
isInvitationOnly: false,
hiddenMembers: false,
isViewOnly: false,
leavingDisallowed: false,
tags: ["Hub Group"],
membershipAccess: "organization",
},
Expand All @@ -36,6 +37,7 @@ export function getWellKnownGroup(
isInvitationOnly: false,
hiddenMembers: false,
isViewOnly: false,
leavingDisallowed: false,
tags: ["Hub Group"],
membershipAccess: checkPermission(
"platform:portal:user:addExternalMembersToGroup",
Expand All @@ -51,6 +53,7 @@ export function getWellKnownGroup(
isInvitationOnly: false,
hiddenMembers: false,
isViewOnly: false,
leavingDisallowed: false,
tags: ["Hub Group"],
membershipAccess: checkPermission(
"platform:portal:user:addExternalMembersToGroup",
Expand All @@ -64,12 +67,14 @@ export function getWellKnownGroup(
autoJoin: true,
isInvitationOnly: false,
isViewOnly: true,
leavingDisallowed: false,
},
hubAssociationsGroup: {
access: "public",
autoJoin: false,
isInvitationOnly: false,
isViewOnly: true,
leavingDisallowed: false,
membershipAccess: checkPermission(
"platform:portal:user:addExternalMembersToGroup",
context
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,7 @@ describe("GroupUiSchemaCreate", () => {
isInvitationOnly: false,
hiddenMembers: false,
isViewOnly: false,
leavingDisallowed: false,
tags: ["Hub Group"],
membershipAccess: "organization",
});
Expand All @@ -450,6 +451,7 @@ describe("GroupUiSchemaCreate", () => {
isInvitationOnly: false,
hiddenMembers: false,
isViewOnly: false,
leavingDisallowed: false,
tags: ["Hub Group"],
membershipAccess: "organization",
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ describe("GroupUiSchemaCreateAssociation", () => {
options: {
control: "hub-field-input-radio",
labels: [
"{{some.scope.fields.membershipAccess.org:translate}}",
"{{some.scope.fields.membershipAccess.collab:translate}}",
"{{some.scope.fields.membershipAccess.org.description:translate}}",
"{{some.scope.fields.membershipAccess.collab.description:translate}}",
"{{some.scope.fields.membershipAccess.createAssociation.any:translate}}",
],
disabled: [false, true, true],
Expand All @@ -117,7 +117,7 @@ describe("GroupUiSchemaCreateAssociation", () => {
options: {
control: "hub-field-input-radio",
labels: [
"{{some.scope.fields.contributeContent.all:translate}}",
"{{some.scope.fields.contributeContent.members.description:translate}}",
"{{some.scope.fields.contributeContent.createAssociation.admins:translate}}",
],
},
Expand All @@ -143,6 +143,7 @@ describe("GroupUiSchemaCreateAssociation", () => {
autoJoin: false,
isInvitationOnly: false,
isViewOnly: true,
leavingDisallowed: false,
membershipAccess: "organization",
protected: true,
});
Expand All @@ -161,6 +162,7 @@ describe("GroupUiSchemaCreateAssociation", () => {
autoJoin: false,
isInvitationOnly: false,
isViewOnly: true,
leavingDisallowed: false,
membershipAccess: "anyone",
protected: true,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ describe("GroupUiSchemaCreateEdit", () => {
options: {
control: "hub-field-input-radio",
labels: [
"{{some.scope.fields.membershipAccess.org:translate}}",
"{{some.scope.fields.membershipAccess.collab:translate}}",
"{{some.scope.fields.membershipAccess.any:translate}}",
"{{some.scope.fields.membershipAccess.org.description:translate}}",
"{{some.scope.fields.membershipAccess.collab.description:translate}}",
"{{some.scope.fields.membershipAccess.any.description:translate}}",
],
disabled: [false, true, true],
},
Expand All @@ -106,8 +106,8 @@ describe("GroupUiSchemaCreateEdit", () => {
options: {
control: "hub-field-input-radio",
labels: [
"{{some.scope.fields.contributeContent.all:translate}}",
"{{some.scope.fields.contributeContent.admins:translate}}",
"{{some.scope.fields.contributeContent.members.description:translate}}",
"{{some.scope.fields.contributeContent.admins.description:translate}}",
],
},
},
Expand All @@ -134,6 +134,7 @@ describe("GroupUiSchemaCreateEdit", () => {
isInvitationOnly: false,
hiddenMembers: false,
isViewOnly: false,
leavingDisallowed: false,
tags: ["Hub Group"],
membershipAccess: "organization",
});
Expand All @@ -151,6 +152,7 @@ describe("GroupUiSchemaCreateEdit", () => {
isInvitationOnly: false,
hiddenMembers: false,
isViewOnly: false,
leavingDisallowed: false,
tags: ["Hub Group"],
membershipAccess: "collaborators",
});
Expand Down
Loading

0 comments on commit 3558812

Please sign in to comment.