Skip to content

Commit a8cb9ce

Browse files
mdroidiancursoragentcoderabbitai[bot]
authored
ENG-970 Persist search filter UI in query builder (#497)
* feat: Initialize search filter state from settings Co-authored-by: mclicks <mclicks@gmail.com> * add showSearchFilter state and update related functionality in ResultsView component * Update apps/roam/src/components/results-view/ResultsView.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent e29c8fa commit a8cb9ce

2 files changed

Lines changed: 36 additions & 8 deletions

File tree

apps/roam/src/components/results-view/ResultsView.tsx

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,9 @@ const ResultsView: ResultsViewComponent = ({
324324
const [views, setViews] = useState(settings.views);
325325
const [columnFilters, setColumnFilters] = useState(settings.columnFilters);
326326
const [searchFilter, setSearchFilter] = useState(settings.searchFilter);
327+
const [showSearchFilter, setShowSearchFilter] = useState(
328+
settings.showSearchFilter,
329+
);
327330
const [showInterface, setShowInterface] = useState(settings.showInterface);
328331
const [revealMenuIcons, setRevealMenuIcons] = useState(false);
329332
const [showInputs, setShowInputs] = useState(settings.showInputs);
@@ -348,6 +351,7 @@ const ResultsView: ResultsViewComponent = ({
348351
page,
349352
pageSize,
350353
searchFilter,
354+
showSearchFilter,
351355
showInterface,
352356
});
353357
}, [
@@ -358,6 +362,8 @@ const ResultsView: ResultsViewComponent = ({
358362
pageSize,
359363
random.count,
360364
searchFilter,
365+
showSearchFilter,
366+
showInterface,
361367
columnFilters,
362368
]);
363369

@@ -382,7 +388,6 @@ const ResultsView: ResultsViewComponent = ({
382388
const [isEditLayout, setIsEditLayout] = useState(false);
383389
const [isEditColumnSort, setIsEditColumnSort] = useState(false);
384390
const [isEditColumnFilter, setIsEditColumnFilter] = useState(false);
385-
const [isEditSearchFilter, setIsEditSearchFilter] = useState(false);
386391

387392
const [layout, setLayout] = useState(settings.layout);
388393
const layoutMode = useMemo(
@@ -391,11 +396,18 @@ const ResultsView: ResultsViewComponent = ({
391396
);
392397
const isMenuIconDirty = useMemo(
393398
() =>
394-
searchFilter ||
399+
(searchFilter && !showSearchFilter) ||
395400
columnFilters.length ||
396401
random.count ||
397402
(activeSort.length && layout.mode !== "table"), // indicator is on ResultHeader
398-
[searchFilter, columnFilters, random, activeSort, layout.mode],
403+
[
404+
searchFilter,
405+
showSearchFilter,
406+
columnFilters,
407+
random,
408+
activeSort,
409+
layout.mode,
410+
],
399411
);
400412
const onViewChange = (view: (typeof views)[number], i: number) => {
401413
const newViews = views.map((v, j) => (i === j ? view : v));
@@ -490,7 +502,7 @@ const ResultsView: ResultsViewComponent = ({
490502
</div>
491503
)}
492504

493-
{isEditSearchFilter && (
505+
{showSearchFilter && (
494506
<div
495507
className="w-full p-4"
496508
style={{
@@ -1086,12 +1098,23 @@ const ResultsView: ResultsViewComponent = ({
10861098
}}
10871099
/>
10881100
<MenuItem
1089-
icon={isEditSearchFilter ? "zoom-out" : "search"}
1090-
text={isEditSearchFilter ? "Hide Search" : "Search"}
1091-
className={searchFilter ? "roamjs-item-dirty" : ""}
1101+
icon={showSearchFilter ? "zoom-out" : "search"}
1102+
text={showSearchFilter ? "Hide Search" : "Search"}
1103+
className={
1104+
searchFilter && !showSearchFilter
1105+
? "roamjs-item-dirty"
1106+
: ""
1107+
}
10921108
onClick={() => {
10931109
setMoreMenuOpen(false);
1094-
setIsEditSearchFilter((prevState) => !prevState);
1110+
setShowSearchFilter((s) => !s);
1111+
if (!preventSavingSettings) {
1112+
setInputSetting({
1113+
blockUid: settings.resultNodeUid,
1114+
key: "showSearchFilter",
1115+
value: showSearchFilter ? "hide" : "show",
1116+
});
1117+
}
10951118
}}
10961119
/>
10971120
<MenuItem

apps/roam/src/utils/parseResultSettings.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ const parseResultSettings = (
171171
tree: resultNode.children,
172172
key: "showInputs",
173173
});
174+
const showSearchFilterNode = getSubTree({
175+
tree: resultNode.children,
176+
key: "showSearchFilter",
177+
});
174178
const showAliasNode = getSubTree({
175179
tree: resultNode.children,
176180
key: "showAlias",
@@ -215,6 +219,7 @@ const parseResultSettings = (
215219
page: 1, // TODO save in roam data
216220
inputs,
217221
showInputs: showInputsNode.children[0]?.text === "show",
222+
showSearchFilter: showSearchFilterNode.children[0]?.text === "show",
218223
showAlias: showAliasNode.children[0]?.text === "show",
219224
alias,
220225
};

0 commit comments

Comments
 (0)