diff --git a/frontend/src/components/shared/Icon.tsx b/frontend/src/components/shared/Icon.tsx
index 7e3ef3454..665e5c99c 100644
--- a/frontend/src/components/shared/Icon.tsx
+++ b/frontend/src/components/shared/Icon.tsx
@@ -45,7 +45,8 @@ export type IconType =
| "cog"
| "home"
| "timeline-line-chart"
- | "arrow-right";
+ | "arrow-right"
+ | "duplicate";
const ICON_DIR = import.meta.env.VITE_ICON_DIR || "/assets/icons"
diff --git a/frontend/src/components/shared/menu/Selector.tsx b/frontend/src/components/shared/menu/Selector.tsx
index 3fbaf0762..5149c343c 100644
--- a/frontend/src/components/shared/menu/Selector.tsx
+++ b/frontend/src/components/shared/menu/Selector.tsx
@@ -33,10 +33,13 @@ const Selector: Component<{
itemClass?: string;
itemStyle?: JSX.CSSProperties;
label?: JSXElement;
+ itemMap?: (item: string) => string;
}> = (p) => {
const [show, toggle] = useToggle();
const [search, setSearch] = createSignal("");
let ref: HTMLInputElement | undefined;
+ const current = () =>
+ p.itemMap ? p.itemMap(p.selected) : p.selected;
createEffect(() => {
if (show()) setTimeout(() => ref?.focus(), 200);
});
@@ -46,7 +49,7 @@ const Selector: Component<{
fallback={
{p.label}
- {p.selected}
+ {current()}
}
>
@@ -60,7 +63,7 @@ const Selector: Component<{
target={
}
@@ -101,7 +104,7 @@ const Selector: Component<{
}}
class={combineClasses(p.itemClass, s.SelectorItem)}
>
- {item}
+ {p.itemMap ? p.itemMap(item) : item}
)}