/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import { FormField, Input, SpaceBetween, Select, Container, Header, Button, Multiselect } from "@awsui/components-react"; import React from "react"; const SchemaAttributeConditionsEdit = ({editingSchemaConditionsTemp, handleUserInputEditSchemaConditions, schemaAttributes, editDisabled}) => { //Selection options. const outcomeValues = [{label: 'Required', value: 'required'}, {label: 'Not required', value: 'not_required'}, {label: 'Hidden', value: 'hidden'}, {label: 'Not hidden', value: 'not_hidden'}]; const comparatorOperators = [{label: '=', value: '='}, {label: '!=', value: '!='}, {label: '!empty', value: '!empty'}, {label: 'empty', value: 'empty'}]; //Data access keys. const trueOutcomeKey = 'true'; const falseOutcomeKey = 'false'; const queriesKey = 'conditions.queries'; const queriesAttributeKey = 'attribute'; const queriesComparatorKey = 'comparator'; const queriesValueKey = 'value'; const outcomesKey = 'conditions.outcomes'; //UI Messages. const messages = { conditionsContainerHeader: 'If this...', outcomesContainerHeader: 'then...', attributeFieldNameLabel: 'Attribute', valueFieldNameLabel: 'Attribute Value', comparatorFieldNameLabel: 'Matching Operator', selectOutcomePlaceholder: 'Select outcome.', addButtonLabel: 'Add', deleteButtonLabel: 'Delete', elseFieldNameLabel: 'Attribute will be', thenFieldNameLabel: 'Attribute will be' } let conditions = []; let outcomes = []; function getSelectedOutcomeOptions(outcome){ if (editingSchemaConditionsTemp?.outcomes && editingSchemaConditionsTemp.outcomes[outcome]){ return editingSchemaConditionsTemp.outcomes[outcome].map((item) => { return {label: item, value: item} }); } else { return []; } } function getPlaceHolder(outcome){ if (editingSchemaConditionsTemp?.outcomes && editingSchemaConditionsTemp.outcomes[outcome] && editingSchemaConditionsTemp.outcomes[outcome].length > 0){ return editingSchemaConditionsTemp.outcomes[outcome].join(', ') + ' selected'; } else { return messages.selectOutcomePlaceholder; } } function displayConditions() { if (editingSchemaConditionsTemp?.queries && editingSchemaConditionsTemp.queries.length > 0){ return {outcomes} } else { return undefined; } } if (editingSchemaConditionsTemp.queries) { conditions = editingSchemaConditionsTemp.queries.map((query, index) => { return } > {'Condition ' + (index + 1)} }> handleUserInputEditSchemaConditions(queriesKey + '.'+ index + '.' + queriesComparatorKey, event.detail.selectedOption.value)} options={comparatorOperators} selectedAriaLabel={'selected'} disabled={editDisabled} /> {query.comparator !== '!empty' && query.comparator !== 'empty' ? handleUserInputEditSchemaConditions(queriesKey + '.' + index + '.' + queriesValueKey, event.detail.value)} value={query.value ? query.value : ''} disabled={editDisabled} /> : undefined } }) outcomes.push( } > Then... }> handleUserInputEditSchemaConditions(outcomesKey + '.' + trueOutcomeKey, event.detail.selectedOptions ? event.detail.selectedOptions.map(item => { return item.value }) : [])} options={outcomeValues} selectedAriaLabel={'selected'} disabled={editDisabled} placeholder={getPlaceHolder(trueOutcomeKey)} /> ); outcomes.push( } > Else... }> handleUserInputEditSchemaConditions(outcomesKey + '.' + falseOutcomeKey, event.detail.selectedOptions ? event.detail.selectedOptions.map(item => { return item.value }) : [])} options={outcomeValues} selectedAriaLabel={'selected'} disabled={editDisabled} placeholder={getPlaceHolder(falseOutcomeKey)} /> ); } if (editingSchemaConditionsTemp) { return ( Conditions and Outcomes }> } > {messages.conditionsContainerHeader} } > {conditions} {displayConditions() } ); } else { return null } }; export default SchemaAttributeConditionsEdit;