- {vaultFiltered.length > 0 && (
-
-
-
- From vault
-
-
- {vaultFiltered.map((status, i) => (
-
setHighlightIndex(i)}
- />
- ))}
-
- )}
-
- {suggestedFiltered.length > 0 && (
-
- {vaultFiltered.length > 0 && (
-
- )}
-
-
- Suggested
-
-
- {suggestedFiltered.map((status, i) => (
-
setHighlightIndex(vaultFiltered.length + i)}
- />
- ))}
-
- )}
-
- {showCreateOption && (
- <>
- {allFiltered.length > 0 &&
}
-
- >
- )}
-
+
+
0}
+ {...optionProps}
+ highlightOffset={vaultFiltered.length}
+ />
+ 0}
+ highlighted={highlightIndex === allFiltered.length}
+ onSave={onSave}
+ onMouseEnter={() => setHighlightIndex(allFiltered.length)}
+ />
{allFiltered.length === 0 && !showCreateOption && (
No matching statuses
@@ -248,3 +311,50 @@ export function StatusDropdown({
)
}
+
+function VaultSection({ statuses, ...props }: StatusOptionProps & { statuses: string[] }) {
+ if (statuses.length === 0) return null
+ return (
+
+ From vault
+
+
+ )
+}
+
+function SuggestedSection({ statuses, showDivider, ...props }: StatusOptionProps & { statuses: string[]; showDivider: boolean }) {
+ if (statuses.length === 0) return null
+ return (
+
+ {showDivider &&
}
+
Suggested
+
+
+ )
+}
+
+function CreateSection({ show, query, showDivider, highlighted, onSave, onMouseEnter }: {
+ show: boolean; query: string; showDivider: boolean; highlighted: boolean
+ onSave: (v: string) => void; onMouseEnter: () => void
+}) {
+ if (!show) return null
+ const trimmed = query.trim()
+ return (
+ <>
+ {showDivider && }
+
+ >
+ )
+}