diff --git a/src/components/FloatingElements/Dropdown.tsx b/src/components/FloatingElements/Dropdown.tsx index d20f1b33e..6f36ca9d5 100644 --- a/src/components/FloatingElements/Dropdown.tsx +++ b/src/components/FloatingElements/Dropdown.tsx @@ -148,7 +148,9 @@ export const MenuComponent = forwardRef { const lastOpened = useRecentsStore((store) => store.lastOpened) const nodeUID = useEditorStore((store) => store.node.nodeid) const baseNodeId = useDataStore((store) => store.baseNodeId) + const isHighlightBlock = (item: GenericSearchResult) => item.matchField?.includes('text') const onOpenItem = (item: GenericSearchResult) => { if (item.index === 'node') { - loadNode(item.id, { highlightBlockId: item.blockId }) + loadNode(item.id, { highlightBlockId: isHighlightBlock(item) ? item.blockId : undefined }) goTo(ROUTE_PATHS.node, NavigationType.push, item.id) } else if (item.index === 'snippet' || item.index === 'template') { loadSnippet(item.id) @@ -357,7 +358,7 @@ const Search = () => { onDoubleClick(e, item)} editorId={`SearchPreview_editor_${item.id}`} /> diff --git a/src/components/mex/Search/SearchFilters.tsx b/src/components/mex/Search/SearchFilters.tsx index 8fe9e7b1e..9150586b9 100644 --- a/src/components/mex/Search/SearchFilters.tsx +++ b/src/components/mex/Search/SearchFilters.tsx @@ -38,6 +38,12 @@ const SearchFilters = ({ const randomId = useMemo(() => nanoid(), [filters, currentFilters]) // mog('SearchFilters', { filters, currentFilters, filtersByKey }) + const removeLastFilter = () => { + if (currentFilters.length > 0) { + const lastFilter = currentFilters[currentFilters.length - 1] + removeCurrentFilter(lastFilter) + } + } return ( @@ -54,7 +60,7 @@ const SearchFilters = ({ - addCurrentFilter(f)} /> + addCurrentFilter(f)} removeLastFilter={removeLastFilter} /> {currentFilters.map((filter) => ( ({ enableShortcutHandler(() => { event.preventDefault() event.stopPropagation() - resetCurrentFilters() if (inpRef.current) { if (inpRef.current.value !== '') { inpRef.current.value = '' @@ -353,29 +352,36 @@ const SearchView = ({ // }, ArrowDown: (event) => { // event.preventDefault() - enableShortcutHandler(selectNext) + enableShortcutHandler(selectNext, { ignoreClasses: 'dropdown', skipLocal: false }) }, ArrowUp: (event) => { - enableShortcutHandler(selectPrev) + enableShortcutHandler(selectPrev, { ignoreClasses: 'dropdown', skipLocal: false }) }, Enter: (event) => { // Only when the selected index is -1 - enableShortcutHandler(() => { - if (selected > -1) { - onSelect(result[selected] as Item) - } - }) + enableShortcutHandler( + () => { + if (selected > -1) { + onSelect(result[selected] as Item) + } + }, + { ignoreClasses: 'dropdown', skipLocal: false } + ) }, + Delete: (event) => { // Only when the selected index is -1 - enableShortcutHandler(() => { - if (selected > -1) { - onDelete(result[selected] as Item) - setSelected(-1) - } - }) + enableShortcutHandler( + () => { + if (selected > -1) { + onDelete(result[selected] as Item) + setSelected(-1) + } + }, + { ignoreClasses: 'dropdown', skipLocal: false } + ) } }) return () => { diff --git a/src/components/mex/TaskViewModal.tsx b/src/components/mex/TaskViewModal.tsx index 7ff4aaecd..1b0e4c1cc 100644 --- a/src/components/mex/TaskViewModal.tsx +++ b/src/components/mex/TaskViewModal.tsx @@ -129,13 +129,14 @@ const TaskViewModal = () => { }, [cloneViewId, updateViewId]) const onSubmit = async (data: TaskViewModalFormData) => { - mog('onSubmit', { data, filters, cloneViewId }) + // mog('onSubmit', { data, filters, cloneViewId }) if (updateViewId) { const oldview = { ...getView(updateViewId) } const newView = { ...oldview, title: data.title ?? oldview.title, description: data.description ?? oldview.description, + globalJoin, filters } await updateView(newView) diff --git a/src/components/mex/Tasks/TaskHeader.tsx b/src/components/mex/Tasks/TaskHeader.tsx index ed5ffcaef..eeb6c76a0 100644 --- a/src/components/mex/Tasks/TaskHeader.tsx +++ b/src/components/mex/Tasks/TaskHeader.tsx @@ -52,9 +52,11 @@ const TaskHeader = ({ currentView, currentFilters, cardSelected, globalJoin }: T const [source, target] = useSingleton() const [deleting, setDeleting] = useState(false) - const isCurrentFiltersUnchanged = useMemo(() => { - return JSON.stringify(currentFilters) === JSON.stringify(currentView?.filters) - }, [currentFilters, currentView]) + const isCurrentViewChanged = useMemo(() => { + return !( + JSON.stringify(currentFilters) === JSON.stringify(currentView?.filters) && globalJoin === currentView?.globalJoin + ) + }, [currentFilters, currentView, globalJoin]) const onDeleteView = async () => { if (currentView) { @@ -79,7 +81,7 @@ const TaskHeader = ({ currentView, currentFilters, cardSelected, globalJoin }: T {currentView?.title} - {!isCurrentFiltersUnchanged && '*'} + {isCurrentViewChanged && '*'}