Select multiple users listed from multiple groups and remove them

Use case is that we have to remove the selected multiple users from multiple groups.

The issue is when I select one user then the entire row is selected of groups listed users.

I want to select the users in multiple from the selected group.

a!localVariables(
  local!selectionValue: {},
  local!selectedGroup: ri!initialGroup,
  local!actionTaken: if(
    isnull(ri!btnAction),
    false,
    or(ri!btnAction = "ADD", ri!btnAction = "MOVE")
  ),
  local!distinctUsers: if(
    a!isNullOrEmpty(local!selectedGroup),
    "Please select a group",
    a!flatten(
      a!forEach(
        items: local!selectedGroup,
        expression: a!localVariables(
          local!group: fv!item,
          a!forEach(
            items: getdistinctusers({ fv!item }),
            expression: a!map(
              id: fv!index,
              Group: local!group,
              Members: fv!item
            )
          )
        )
      )
    )
  ),
  local!pagingInfo: a!pagingInfo(startIndex: 1, batchSize: 10),
  {
    a!cardLayout(
      contents: {
        a!richTextDisplayField(
          labelPosition: "COLLAPSED",
          value: {
            a!richTextItem(
              text: { "USER AND GROUP MANAGEMENT" },
              size: "MEDIUM_PLUS",
              style: { "STRONG" }
            )
          },
          align: "CENTER",
          marginAbove: "STANDARD",
          marginBelow: "STANDARD"
        )
      },
      height: "AUTO",
      style: "STANDARD",
      marginBelow: "STANDARD",
      decorativeBarPosition: "BOTTOM"
    ),
    a!columnsLayout(
      columns: {
        a!columnLayout(
          contents: {}
        ),
        a!columnLayout(
          contents: {
            a!richTextDisplayField(
              labelPosition: "COLLAPSED",
              value: {
                a!richTextItem(
                  text: {
                    "Please select the groups the from here."
                  },
                  color: "ACCENT",
                  size: "MEDIUM_PLUS"
                )
              }
            ),
            a!pickerFieldGroups(
              labelPosition: "ABOVE",
              maxSelections: 5,
              value: ri!initialGroup,
              saveInto: {
                ri!initialGroup,
                a!save(
                  {
                    ri!btnAction,
                    ri!userToRemove,
                    ri!addedtoGroup,
                    ri!removefromGroup,
                    ri!userToAdd,
                    local!selectionValue
                  },
                  null
                )
              }
            ),
            a!richTextDisplayField(
              labelPosition: "COLLAPSED",
              value: {
                a!richTextItem(
                  text: {
                    "Group Members List "
                  },
                  size: "MEDIUM"
                )
              }
            ),
            a!columnsLayout(
              columns: a!forEach(
                items: local!selectedGroup,
                expression: a!columnLayout(
                  a!gridField(
                    label: "",
                    labelPosition: "ABOVE",
                    data: index(
                      local!distinctUsers,
                      wherecontains(
                        touniformstring(fv!item),
                        touniformstring(local!distinctUsers.Group)
                      )
                    ),
                    columns: {
                      a!gridColumn(
                        label: group(
                          groupId: togroup(fv!item),
                          property: "groupName"
                        ),
                        value: fv!row.Members
                      )
                    },
                    pagingSaveInto: local!pagingInfo,
                    selectable: true,
                    selectionStyle: "ROW_HIGHLIGHT",
                    selectionValue: local!selectionValue,
                    selectionSaveInto: local!selectionValue,
                    selectionRequired: false,
                    maxSelections: null,
                    showSelectionCount: "ON",
                    shadeAlternateRows: true
                  )
                )
              ),
              showDividers: false
            ),
            a!buttonArrayLayout(
              buttons: {
                a!buttonWidget(
                  label: "Remove Member",
                  value: "REMOVE",
                  saveInto: {
                    ri!btnAction,
                    a!save(
                      ri!userToRemove,
                      local!selectionValue
                    ),
                    a!save(
                      ri!removefromGroup,
                      ri!initialGroup
                    )
                  },
                  submit: true,
                  style: "SOLID",
                  color: "#ff0000",
                  disabled: or(
                    local!actionTaken,
                    not(a!isNotNullOrEmpty(local!selectionValue))
                  ),
                  showWhen: a!isNotNullOrEmpty(local!selectionValue),
                  confirmHeader: "Remove Members",
                  confirmMessage: "Are you sure you want to remove the selected members from the group?",
                  confirmButtonLabel: "Yes, Remove Members"
                )
              }
            ),
            a!horizontalLine(
              weight: "THICK",
              color: "#0000ff",
              style: "SOLID",
              marginAbove: "STANDARD",
              marginBelow: "STANDARD"
            ),
            a!linkField(
              labelPosition: "COLLAPSED",
              links: {
                a!dynamicLink(
                  label: "+ Add Users to Selected Group",
                  value: "ADD",
                  saveInto: {
                    ri!btnAction,
                    a!save(ri!addedtoGroup, ri!initialGroup)
                  }
                )
              },
              showWhen: not(local!actionTaken)
            ),
            a!sectionLayout(
              label: "Add Users",
              contents: {
                a!pickerFieldUsers(
                  label: "Users to Add",
                  value: ri!usertoAdd,
                  saveInto: a!save(
                    ri!usertoAdd,
                    if(isnull(save!value), {}, save!value)
                  ),
                  required: true
                )
              },
              showWhen: ri!btnAction = "ADD"
            )
          },
          width: "WIDE_PLUS"
        ),
        a!columnLayout(
          contents: {}
        )
      }
    ),

    a!buttonLayout(
      primaryButtons: {
        a!buttonWidget(
          label: "ADD USER",
          value: "ADD",
          submit: true,
          style: "SOLID"
        )
      },
      secondaryButtons: {
        a!buttonWidget(
          label: "Cancel",
          value: null,
          saveInto: { ri!btnAction, ri!initialGroup },
          style: "OUTLINE",
          showWhen: local!actionTaken
        )
      },
      showWhen: local!actionTaken
    )
  }
)

  Discussion posts and replies are publicly visible

Parents Reply Children
No Data