Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(search): implements Orama searchbox #6908

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

micheleriva
Copy link
Contributor

Description

As discussed with @ovflowd, this PR implements the official Orama Searchbox.

Validation

Related Issues

Check List

  • I have read the Contributing Guidelines and made commit messages that follow the guideline.
  • I have run npm run format to ensure the code follows the style guide.
  • I have run npm run test to check if all tests are passing.
  • I have run npx turbo build to check if the website builds without errors.
  • I've covered new added functionality with unit tests if necessary.

Copy link

vercel bot commented Jul 8, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
nodejs-org ✅ Ready (Inspect) Visit Preview Nov 28, 2024 1:41pm

@bmuenzenmeyer
Copy link
Collaborator

Sorry @micheleriva this has been idle for too long - it's been a messy few weeks. Are you looking for any particular feedback on the approach?

@ovflowd
Copy link
Member

ovflowd commented Jul 31, 2024

Looks like this is a draft yet, and most of the styles feel broken 🤔

Copy link

github-actions bot commented Jul 31, 2024

Unit Test Coverage Report

Lines Statements Branches Functions
Coverage: 91%
90.2% (580/643) 72.08% (173/240) 93.96% (109/116)

Unit Test Report

Tests Skipped Failures Errors Time
137 0 💤 0 ❌ 0 🔥 4.9s ⏱️

@micheleriva
Copy link
Contributor Author

Hey @bmuenzenmeyer, @ovflowd I'm sorry, I completely missed your comments. We found some bugs in the searchbox and dedicated more time to stabilize it.

We've been testing it for weeks on other websites so we believe it is finally ready. I still have to fix a small couple of things, then I'll open it for review 🙏

@micheleriva micheleriva marked this pull request as ready for review August 21, 2024 18:33
@micheleriva micheleriva requested a review from a team as a code owner August 21, 2024 18:33
@ovflowd ovflowd added the github_actions:pull-request Trigger Pull Request Checks label Aug 21, 2024
@github-actions github-actions bot removed the github_actions:pull-request Trigger Pull Request Checks label Aug 21, 2024
@ovflowd
Copy link
Member

ovflowd commented Aug 21, 2024

FYI @micheleriva build is failing:

@nodejs/website:build: Error: 
@nodejs/website:build:   x Expression expected
@nodejs/website:build:      ,-[128:1]

Did you try a prod build locally?

@ovflowd
Copy link
Member

ovflowd commented Aug 29, 2024

image

It feels like the results are less obvious.

@ovflowd
Copy link
Member

ovflowd commented Aug 29, 2024

Also it'd be great if there was some margin between the results

@ovflowd

This comment was marked as resolved.

@rjborba
Copy link

rjborba commented Nov 27, 2024

@ovflowd FYI we also started using next router to navigate. Experience should be smoother now. ✅

@ovflowd
Copy link
Member

ovflowd commented Nov 27, 2024

@rjborba, this is just an FYI: the AI-generated Markdown links are still broken. This can be done in a follow-up PR, but just a FYI, They don't have the language prefixes.

@ovflowd
Copy link
Member

ovflowd commented Nov 27, 2024

Also, I wonder how much extra bundle is added just for the search box. Can you give us some insights? We want to ensure that the users' experience is smooth.

@rjborba
Copy link

rjborba commented Nov 28, 2024

@rjborba, this is just an FYI: the AI-generated Markdown links are still broken. This can be done in a follow-up PR, but just a FYI, They don't have the language prefixes.

Hi @ovflowd it is actually fixed. But it takes in consideration the BASE_URL constant, which is resolving for something different than the ones on the Markdown answer on Next Preview.

We've added a callback to the Markdown URL so we have a opportunity to modify the HREF in runtime, after the LLM generates it. We want to add the locale when URL starts with the base URL (https://nodejs.org) and does not have /docs as initial path.

We could enhance it by using something like window.location.host instead, but current implementations works just fine when the host URL matches the one generated by the chat.

onSearchResultClick={event => {
event.preventDefault();

const currentPageHost = `${window.location.protocol}//${window.location.host}`;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we not use window. APIs here at all, I'm pretty sure @/navigation's useRouter and usePathname have everything you need. Using global environment-based APIs hinders the ability of us to optimise this in the future.

const currentPageHost = `${window.location.protocol}//${window.location.host}`;

router.push(`${currentPageHost}/${event.detail.result.path}`, {
locale: undefined,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain why this is set to undefined within inline docs

const { path } = event.detail.source;

if (!path.startsWith('docs/')) {
window.open(`${currentPageHost}/${locale}/${path}`, '_blank');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of an if else, make a ternary operator for one single window.open call

searchParams={DEFAULT_ORAMA_QUERY_PARAMS}
suggestions={DEFAULT_ORAMA_SUGGESTIONS}
chatMarkdownLinkHref={({ href }) => {
if (!href) return href;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's ensure we always use brackets on if statements.

const docsBaseUrl = `${currentPageHost}/docs`;
const lowerCaseHref = href.toLowerCase();

// Keep original link if URl should not have locale
Copy link
Member

@ovflowd ovflowd Nov 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add the reasoning? This whole URL logic seems unnecessary, you can simply check if the href's pathname startsWith docs. You can accomplish that by

const { pathname } = new URL(href);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm adding a few comments here regarding FE best practices (cc @micheleriva) as I believe this is good learning for your Engineer.

I appreciate tenfold the work done here 🙇 -- I hope my nitpicks here can add value 🙏


const currentPageHost = `${window.location.protocol}//${window.location.host}`;
const docsBaseUrl = `${currentPageHost}/docs`;
const lowerCaseHref = href.toLowerCase();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI you don't want to add the lowerCase result on the returning href, you want to keep as much as possible from the original URL, only with the modifications for the "/docs" piece :)

@ovflowd
Copy link
Member

ovflowd commented Nov 28, 2024

OOC - Is there any way we can style the search button on the Navigation bar? It feels a bit fatty and different from the OG design 👀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Accessibility Issues with Scrolling and Focus in WithSearchBox Modal
9 participants