Skip to content

Commit 8f5ca8e

Browse files
committed
bugfix, pages and filters
1 parent 06f24ff commit 8f5ca8e

File tree

2 files changed

+36
-30
lines changed

2 files changed

+36
-30
lines changed

src/components/OptimadeClient/DropdownSelectors/childProviderDropdown.jsx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default function ChildProviderDropdown({
3131
try {
3232
setLoadingChildren(true);
3333
const { children } = await getProviderLinks(
34-
selectedProvider.attributes.base_url
34+
selectedProvider.attributes.base_url,
3535
);
3636
const entries = children.map((c) => ({
3737
id: c.id,
@@ -61,7 +61,17 @@ export default function ChildProviderDropdown({
6161
// Render custom input with submit button
6262
if (selectedProvider.id === "__custom__") {
6363
return (
64-
<div className="flex gap-2 items-center">
64+
<form
65+
className="flex gap-2 items-center"
66+
onSubmit={(e) => {
67+
e.preventDefault(); // prevent page reload
68+
onSelectChild({
69+
id: "__custom__",
70+
name: "Custom Endpoint",
71+
base_url: customInput,
72+
});
73+
}}
74+
>
6575
<input
6676
type="text"
6777
placeholder="Enter custom endpoint URL"
@@ -71,17 +81,11 @@ export default function ChildProviderDropdown({
7181
/>
7282
<button
7383
className={`${baseButtonStyle} rounded-sm md:py-1!`}
74-
onClick={() =>
75-
onSelectChild({
76-
id: "__custom__",
77-
name: "Custom Endpoint",
78-
base_url: customInput,
79-
})
80-
}
84+
type="submit"
8185
>
8286
Submit
8387
</button>
84-
</div>
88+
</form>
8589
);
8690
}
8791

src/components/OptimadeClient/index.jsx

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ export function OptimadeClient({ hideProviderList = ["exmpl", "matcloud"] }) {
7070
});
7171
const [totalPages, setTotalPages] = useState(1);
7272

73+
// reset to page one when child changes.
74+
useEffect(() => {
75+
setCurrentPage(1);
76+
}, [selectedChild]);
77+
7378
useEffect(() => {
7479
const loadProviders = async () => {
7580
try {
@@ -162,26 +167,23 @@ export function OptimadeClient({ hideProviderList = ["exmpl", "matcloud"] }) {
162167

163168
{/* Filters */}
164169
<div className="p-2 w-full">
165-
{selectedChild?.base_url && (
166-
<AnimatePresence>
167-
<motion.div
168-
key="filters"
169-
initial={{ opacity: 0, y: 20 }}
170-
animate={{ opacity: 1, y: 0 }}
171-
exit={{ opacity: 0, y: 20 }}
172-
transition={{ duration: 0.3, ease: "easeInOut" }}
173-
className={containerStyle}
174-
>
175-
<OptimadeFilters
176-
queryUrl={selectedChild?.base_url}
177-
onSubmit={(filter) => {
178-
setCurrentFilter(filter);
179-
setCurrentPage(1);
180-
}}
181-
/>
182-
</motion.div>
183-
</AnimatePresence>
184-
)}
170+
<motion.div
171+
initial={{ opacity: 0, y: 20 }}
172+
animate={{
173+
opacity: selectedChild?.base_url ? 1 : 0,
174+
y: selectedChild?.base_url ? 0 : 20,
175+
}}
176+
transition={{ duration: 0.3, ease: "easeInOut" }}
177+
className={`${containerStyle} ${!selectedChild?.base_url ? "pointer-events-none" : ""}`}
178+
>
179+
<OptimadeFilters
180+
queryUrl={selectedChild?.base_url || ""}
181+
onSubmit={(filter) => {
182+
setCurrentFilter(filter);
183+
setCurrentPage(1);
184+
}}
185+
/>
186+
</motion.div>
185187
</div>
186188

187189
<div className="p-2 w-full">

0 commit comments

Comments
 (0)