From 139464f76dfb29b7ff0002ec5e6132873466e912 Mon Sep 17 00:00:00 2001 From: hoophalab <200652805+hoophalab@users.noreply.github.com> Date: Wed, 20 May 2026 15:54:44 -0400 Subject: [PATCH 1/2] feat(webui): Add configurable max results limit to CLP search UI. --- .../src/components/QueryBox/index.module.css | 3 +- .../SearchControls/Dataset/index.module.css | 1 + .../MaxResultsSelect/index.module.css | 13 ++++++ .../SearchControls/MaxResultsSelect/index.tsx | 46 +++++++++++++++++++ .../SearchControls/Native/NativeControls.tsx | 2 + .../SearchButton/SubmitButton/index.tsx | 3 ++ .../TimeRangeInput/index.module.css | 1 + .../SearchControls/index.module.css | 2 + .../useSearchResults.ts | 11 +++-- .../Native/NativeResultsTimeline.tsx | 3 ++ .../pages/SearchPage/SearchState/index.tsx | 15 +++++- .../pages/SearchPage/SearchState/typings.ts | 26 ++++++++++- components/webui/common/src/schemas/search.ts | 1 + .../server/src/routes/api/search/index.ts | 6 ++- .../server/src/routes/api/search/typings.ts | 6 +-- .../server/src/routes/api/search/utils.ts | 7 +-- 16 files changed, 130 insertions(+), 16 deletions(-) create mode 100644 components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.module.css create mode 100644 components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.tsx diff --git a/components/webui/client/src/components/QueryBox/index.module.css b/components/webui/client/src/components/QueryBox/index.module.css index db8f244373..011a233fff 100644 --- a/components/webui/client/src/components/QueryBox/index.module.css +++ b/components/webui/client/src/components/QueryBox/index.module.css @@ -1,6 +1,7 @@ .queryBox { + flex: 1; + min-width: 100px; position: relative; - width: 100%; } .progressBarMask { diff --git a/components/webui/client/src/pages/SearchPage/SearchControls/Dataset/index.module.css b/components/webui/client/src/pages/SearchPage/SearchControls/Dataset/index.module.css index 110f752160..20273aa92a 100644 --- a/components/webui/client/src/pages/SearchPage/SearchControls/Dataset/index.module.css +++ b/components/webui/client/src/pages/SearchPage/SearchControls/Dataset/index.module.css @@ -1,5 +1,6 @@ .datasetContainer { display: flex; + max-width: 250px; } .selectContainer { diff --git a/components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.module.css b/components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.module.css new file mode 100644 index 0000000000..f253ef2ae3 --- /dev/null +++ b/components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.module.css @@ -0,0 +1,13 @@ +.maxResultsContainer { + display: flex; +} + +.maxResultsContainer :global(.ant-select) { + min-width: 80px; + max-width: 80px; +} + +.maxResultsContainer :global(.ant-select-selector) { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} \ No newline at end of file diff --git a/components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.tsx new file mode 100644 index 0000000000..e59d5406ab --- /dev/null +++ b/components/webui/client/src/pages/SearchPage/SearchControls/MaxResultsSelect/index.tsx @@ -0,0 +1,46 @@ +import {Select} from "antd"; + +import InputLabel from "../../../../components/InputLabel"; +import useSearchStore from "../../SearchState"; +import { + MAX_RESULTS_OPTIONS, + SEARCH_UI_STATE, +} from "../../SearchState/typings"; +import styles from "./index.module.css"; + + +/** + * Renders a dropdown to select the maximum number of search results. + * + * @return + */ +const MaxResultsSelect = () => { + const maxNumResults = useSearchStore((state) => state.maxNumResults); + const updateMaxNumResults = useSearchStore((state) => state.updateMaxNumResults); + const searchUiState = useSearchStore((state) => state.searchUiState); + + const isDisabled = searchUiState === SEARCH_UI_STATE.QUERY_ID_PENDING || + searchUiState === SEARCH_UI_STATE.QUERYING; + + const handleChange = (value: number) => { + updateMaxNumResults(value); + }; + + return ( +
+ Limit +