Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 42 additions & 19 deletions web/src/pages/CERulePage/CERulePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -698,21 +698,24 @@ const Content = ({ rule: initialRule }: Props) => {
/>
</ButtonsGroup>
<SizedBox height={ThemeSpacing.Xl} />
{isPresent(aliasesOptions) &&
aliasesOptions
.filter((alias) => field.state.value.has(alias.id))
.map((option) => (
<Chip
size="sm"
text={option.label}
key={option.id}
onDismiss={() => {
const newState = new Set(field.state.value);
newState.delete(option.id);
field.handleChange(newState);
}}
/>
))}
{isPresent(aliasesOptions) && (
<div className="aliases-selected">
{aliasesOptions
.filter((alias) => field.state.value.has(alias.id))
.map((option) => (
<Chip
size="sm"
text={option.label}
key={option.id}
onDismiss={() => {
const newState = new Set(field.state.value);
newState.delete(option.id);
field.handleChange(newState);
}}
/>
))}
</div>
)}
</>
)}
</form.AppField>
Expand Down Expand Up @@ -1067,23 +1070,43 @@ type AliasDataBlockProps = {
values: string[];
};

const normalizeAliasValues = (values: string[]) => {
const seenValues = new Set<string>();

return values.reduce<string[]>((normalizedValues, value) => {
const trimmedValue = value.trim();

if (trimmedValue.length === 0 || seenValues.has(trimmedValue)) {
return normalizedValues;
}

seenValues.add(trimmedValue);
normalizedValues.push(trimmedValue);
return normalizedValues;
}, []);
};

const AliasDataBlock = ({ values }: AliasDataBlockProps) => {
if (values.length === 0) return null;
const normalizedValues = normalizeAliasValues(values);

if (normalizedValues.length === 0) return null;

return (
<div className="alias-data-block">
<div className="top">
<p>{`Data from aliases`}</p>
</div>
<div className="content-track">
{values.map((value) => (
{normalizedValues.map((value) => (
<Chip key={value} text={value} />
))}
{values.length > 4 && (
{normalizedValues.length > 4 && (
<button
type="button"
onClick={() => {
openModal(ModalName.DisplayList, {
title: 'Data from aliases',
data: values,
data: normalizedValues,
});
}}
>
Expand Down
6 changes: 6 additions & 0 deletions web/src/pages/CERulePage/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@
}
}
}

.aliases-selected {
display: flex;
flex-flow: row wrap;
gap: var(--spacing-sm);
}
}

.selection-section .item .destination-selection-item {
Expand Down
Loading