in packages/sanddance-explorer/src/dialogs/search.tsx [235:326]
render() {
return (
<Group
className="sanddance-search"
label={strings.labelSearch}
>
<div>
{this.state.groups.map((group, groupIndex) => (
<div
className="sanddance-search-group"
key={group.key}
>
<Dropdown
collapseLabel={this.props.collapseLabels}
className="search-group-clause"
label={strings.labelSearchClause}
disabled={groupIndex === 0 || this.props.disableGroupOR}
dropdownWidth={120}
options={getGroupClauses(group.clause, groupIndex, this.props.disableGroupOR)}
onChange={(e, o) => this.updateGroup({ clause: (o.data as SearchExpressionClause) }, groupIndex)}
/>
<div>
{group.expressions.map((ex, i) => (
<div
className="sanddance-search-expression"
key={ex.key}
>
<SearchTerm
collapseLabels={this.props.collapseLabels}
onUpdateExpression={(ex, i) => this.updateExpression(ex, groupIndex, i)}
autoCompleteDistinctValues={this.props.autoCompleteDistinctValues}
index={i}
columns={this.state.sortedColumns}
data={this.props.data}
searchExpression={ex}
disableOR={this.props.disableExpressionOR}
column={getColumnWithName(ex.name, this.state.sortedColumns)}
/>
{group.expressions.length > 1 && (
<Button
themePalette={this.props.themePalette}
className="search-action"
iconName="Cancel"
onClick={() => this.deleteExpression(groupIndex, i)}
text={strings.buttonDeleteExpression}
/>
)}
</div>
))}
</div>
{group.expressions.length < maxClauses && (
<div>
<Button
themePalette={this.props.themePalette}
className="search-action"
iconName="Add"
onClick={() => this.addExpression(groupIndex)}
text={strings.buttonAddExpression}
/>
</div>
)}
{this.state.groups.length > 1 && (
<Button
themePalette={this.props.themePalette}
className="search-action"
iconName="Cancel"
onClick={() => this.deleteGroup(groupIndex)}
text={strings.buttonDeleteExpressionGroup}
/>
)}
</div>
))}
{this.state.groups.length < maxClauses && (
<div>
<Button
themePalette={this.props.themePalette}
className="search-action search-bottom-action"
iconName="Add"
onClick={() => this.addGroup()}
text={strings.buttonAddExpressionGroup}
/>
</div>
)}
</div>
<base.fluentUI.PrimaryButton
className="search-action search-bottom-action"
text={strings.buttonSelect}
onClick={() => this.validateAndSearch()}
/>
</Group>
);
}