Skip to content

Dependent Dropdown

This feature allows dynamic loading options for the singleSelect and the multipleSelect fields when the options for that field depend on other fields’ values. It loads options via an API call to the endpoint mentioned in endpointUrl under options when any dependencies field is updated and all required dependencies fields are non-null.

All non-required dependencies fields can be of any type, but all required dependencies fields should only be of single-select type.

All dependencies fields’ values are added to the endpoint URL as query parameters.

If endpoint is refering to internal endpoint, remember to update restmap.conf and web.conf accordingly.

If endpoint is refering to external endpoint remember to share content in correct format adjusted to splunk APIs. Remember to provide data in format where data are nested inside entry and content object.

Usage

{
    "field": "bucket_name",
    "label": "S3 Bucket",
    "type": "singleSelect",
    "required": true,
    "options": {
        "disableonEdit": true,
        "dependencies": [
            "aws_account",
            "aws_iam_role",
            "aws_s3_region",
            "private_endpoint_enabled",
            "sts_private_endpoint_url",
            "s3_private_endpoint_url"
        ],
        "endpointUrl": "splunk_ta_aws/splunk_ta_aws_s3buckets"
    }
}

Note: When using the text type field, add debounce using the custom hook to reduce the number of API calls.

Data format

Simplest format with just name

If you won’t add any specification regarding label or value name property will be used for both.

Example data:

{
    "entry": [
        {
            "name": "firstEntry"
        },
        {
            "name": "secondEntry"
        }
    ]
}

Values in dropdown:

First entry => label firstEntry, value firstEntry
Second entry => label secondEntry, value secondEntry

Format with custom label and value

If you will pass labelField or valueField to component configuration, data retrieved from entry.content will be used as corresponding values. For label data from entry.content[labelField] will be assigned. For value data from entry.content[valueField] will be assigned.

Example dropdown label configuration:

"options": {
    "labelField": "uniqueName",
    "valueField": "calculatedValue"
}

Example data:

{
    "entry": [
        {
            "name": "firstEntry",
            "content": {
                "uniqueName": "First entry",
                "calculatedValue": "123456"
            }
        },
        {
            "name": "secondEntry",
            "content": {
                "uniqueName": "Second entry",
                "calculatedValue": "654321"
            }
        }
    ]
}

Values in dropdown:

First entry => label First entry, value 123456
Second entry => label Second entry, value 654321