123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
{
  "surface_id": "multi-selection-wrap-all-required-surface",
  "surface_version": 1,
  "payload": {
    "objects": [
      {
        "beginRendering": {
          "surfaceId": "multi-selection-wrap-all-required-surface",
          "root": "root-card"
        }
      },
      {
        "surfaceUpdate": {
          "surfaceId": "multi-selection-wrap-all-required-surface",
          "components": [
            {
              "id": "root-card",
              "component": {
                "Card": {
                  "child": "main-column"
                }
              }
            },
            {
              "id": "main-column",
              "component": {
                "Column": {
                  "alignment": "stretch",
                  "children": {
                    "explicitList": [
                      "title-text",
                      "subtitle-text",
                      "tone-title",
                      "tone-wrap",
                      "audience-title",
                      "audience-wrap",
                      "channel-title",
                      "channel-wrap",
                      "submit-gate",
                      "confirm-button"
                    ]
                  }
                }
              }
            },
            {
              "id": "title-text",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Build your communication package"
                  },
                  "variant": "title"
                }
              }
            },
            {
              "id": "subtitle-text",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Button unlocks only when all selector groups satisfy their own requiredSelection."
                  },
                  "color": "secondary",
                  "variant": "body"
                }
              }
            },
            {
              "id": "tone-title",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Tone (pick 1)"
                  },
                  "variant": "bodySansSemibold"
                }
              }
            },
            {
              "id": "tone-wrap",
              "component": {
                "SelectionWrap": {
                  "selection": {
                    "path": "/selectedTone",
                    "literalArray": []
                  },
                  "maxSelection": 1,
                  "requiredSelection": 1,
                  "hasSelection": {
                    "path": "/readyTone",
                    "literalBoolean": false
                  },
                  "items": [
                    {
                      "value": "tone_calm",
                      "child": "tone-calm"
                    },
                    {
                      "value": "tone_bold",
                      "child": "tone-bold"
                    },
                    {
                      "value": "tone_playful",
                      "child": "tone-playful"
                    }
                  ]
                }
              }
            },
            {
              "id": "tone-calm",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Calm"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "tone-bold",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Bold"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "tone-playful",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Playful"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "audience-title",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Audience (pick at least 2)"
                  },
                  "variant": "bodySansSemibold"
                }
              }
            },
            {
              "id": "audience-wrap",
              "component": {
                "SelectionWrap": {
                  "selection": {
                    "path": "/selectedAudience",
                    "literalArray": []
                  },
                  "maxSelection": 3,
                  "requiredSelection": 2,
                  "hasSelection": {
                    "path": "/readyAudience",
                    "literalBoolean": false
                  },
                  "items": [
                    {
                      "value": "audience_pm",
                      "child": "audience-pm"
                    },
                    {
                      "value": "audience_dev",
                      "child": "audience-dev"
                    },
                    {
                      "value": "audience_exec",
                      "child": "audience-exec"
                    }
                  ]
                }
              }
            },
            {
              "id": "audience-pm",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Product"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "audience-dev",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Engineering"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "audience-exec",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Executive"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "channel-title",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Channel (pick at least 1)"
                  },
                  "variant": "bodySansSemibold"
                }
              }
            },
            {
              "id": "channel-wrap",
              "component": {
                "SelectionWrap": {
                  "selection": {
                    "path": "/selectedChannel",
                    "literalArray": []
                  },
                  "maxSelection": 2,
                  "requiredSelection": 1,
                  "hasSelection": {
                    "path": "/readyChannel",
                    "literalBoolean": false
                  },
                  "items": [
                    {
                      "value": "channel_email",
                      "child": "channel-email"
                    },
                    {
                      "value": "channel_inapp",
                      "child": "channel-inapp"
                    },
                    {
                      "value": "channel_push",
                      "child": "channel-push"
                    }
                  ]
                }
              }
            },
            {
              "id": "channel-email",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Email"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "channel-inapp",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "In-app"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "channel-push",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Push"
                  },
                  "variant": "subheadline"
                }
              }
            },
            {
              "id": "submit-gate",
              "component": {
                "BooleanAllOf": {
                  "inputs": [
                    {
                      "path": "/readyTone"
                    },
                    {
                      "path": "/readyAudience"
                    },
                    {
                      "path": "/readyChannel"
                    }
                  ],
                  "output": {
                    "path": "/canSubmit",
                    "literalBoolean": false
                  }
                }
              }
            },
            {
              "id": "confirm-button",
              "component": {
                "Button": {
                  "child": "confirm-label",
                  "style": "primary",
                  "enabled": {
                    "path": "/canSubmit"
                  },
                  "action": {
                    "name": "submitCommunicationPackage",
                    "context": [
                      {
                        "key": "tone",
                        "value": {
                          "path": "/selectedTone"
                        }
                      },
                      {
                        "key": "audience",
                        "value": {
                          "path": "/selectedAudience"
                        }
                      },
                      {
                        "key": "channel",
                        "value": {
                          "path": "/selectedChannel"
                        }
                      },
                      {
                        "key": "canSubmit",
                        "value": {
                          "path": "/canSubmit"
                        }
                      }
                    ]
                  }
                }
              }
            },
            {
              "id": "confirm-label",
              "component": {
                "Label": {
                  "text": {
                    "literalString": "Submit Package"
                  },
                  "variant": "bodySansSemibold"
                }
              }
            }
          ]
        }
      },
      {
        "dataModelUpdate": {
          "surfaceId": "multi-selection-wrap-all-required-surface",
          "path": "/",
          "contents": [
            {
              "key": "canSubmit",
              "valueBoolean": false
            },
            {
              "key": "readyTone",
              "valueBoolean": false
            },
            {
              "key": "readyAudience",
              "valueBoolean": false
            },
            {
              "key": "readyChannel",
              "valueBoolean": false
            }
          ]
        }
      }
    ]
  }
}
0 tokens
Build your communication package
Button unlocks only when all selector groups satisfy their own requiredSelection.
Tone (pick 1)
Audience (pick at least 2)
Channel (pick at least 1)