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(theme-classic): new configuration syntax for a simple footer #6132

Merged
merged 14 commits into from
Dec 20, 2021

Conversation

christopherklint97
Copy link
Contributor

Motivation

Fixes #6101

Have you read the Contributing Guidelines on pull requests?

Yes.

Test Plan

I actually had some trouble verifying that the simple footer works, but the multi-column footer still seems to work when viewing localhost:3000 without changing anything in docusaurus.config.js.

My trouble with simple footer was that I got the following error from yarn start when I changed the footer in docusaurus.config.js to only link items without titles:

A validation error occurred.
The validation system was added recently to Docusaurus as an attempt to avoid user configuration errors.
We may have made some mistakes.
If you think your configuration is valid and should keep working, please open a bug report.

ValidationError: "footer.links[0].label" is not allowed

It seems like this validation error is being thrown here: https://github.com/facebook/docusaurus/blob/main/packages/docusaurus-utils-validation/src/validationUtils.ts#L92

This is what I changed the footer to in docusaurus.config.js https://github.com/facebook/docusaurus/blob/main/website/docusaurus.config.js#L418:

footer: {
  style: 'dark',
  links: [
    {
      label: 'Privacy',
      href: 'https://opensource.facebook.com/legal/privacy/',
    },
    {
      label: 'Terms',
      href: 'https://opensource.facebook.com/legal/terms/',
    },
    {
      label: 'Data Policy',
      href: 'https://opensource.facebook.com/legal/data-policy/',
    },
    {
      label: 'Cookie Policy',
      href: 'https://opensource.facebook.com/legal/cookie-policy/',
    },
  ],
  logo: {
    alt: 'Facebook Open Source Logo',
    src: 'img/oss_logo.png',
    width: 160,
    height: 51,
    href: 'https://opensource.facebook.com',
  },
  copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc. Built with Docusaurus.`

Maybe some cache I am missing to clear or some Joi validation I need to change?

@netlify
Copy link

netlify bot commented Dec 19, 2021

✔️ [V2]

🔨 Explore the source changes: e28c22e

🔍 Inspect the deploy log: https://app.netlify.com/sites/docusaurus-2/deploys/61c0ca32724e110007523982

😎 Browse the preview: https://deploy-preview-6132--docusaurus-2.netlify.app

@github-actions
Copy link

github-actions bot commented Dec 19, 2021

⚡️ Lighthouse report for the changes in this PR:

Category Score
🟢 Performance 96
🟢 Accessibility 98
🟢 Best practices 100
🟢 SEO 100
🟢 PWA 95

Lighthouse ran on https://deploy-preview-6132--docusaurus-2.netlify.app/

@Josh-Cena Josh-Cena changed the title feat(theme-classic): add simple footer feat(theme-classic): allow configuring for a simple footer Dec 20, 2021
@Josh-Cena Josh-Cena added the pr: new feature This PR adds a new API or behavior. label Dec 20, 2021
@Josh-Cena
Copy link
Collaborator

Josh-Cena commented Dec 20, 2021

Indeed, you would need to add validation here: https://github.com/facebook/docusaurus/blob/main/packages/docusaurus-theme-classic/src/validateThemeConfig.ts

Joi is quite painful and the current PR is already a good start. Do you want to wrap it up or would you prefer me to take it over?

@Josh-Cena Josh-Cena changed the title feat(theme-classic): allow configuring for a simple footer feat(theme-classic): new configuration syntax for a simple footer Dec 20, 2021
@Josh-Cena Josh-Cena marked this pull request as draft December 20, 2021 00:57
@christopherklint97
Copy link
Contributor Author

Awesome, thanks for the help! Now it works great 💪🏾
Screenshot 2021-12-20 093248
Screenshot 2021-12-20 093315

@Josh-Cena
Copy link
Collaborator

Cool. Didn't know if Joi schema like that actually works—would you add test cases about validation?

@Josh-Cena
Copy link
Collaborator

Very nice! Appreciate the amazing work ❤️

@Josh-Cena Josh-Cena marked this pull request as ready for review December 20, 2021 09:16
@christopherklint97
Copy link
Contributor Author

Thank you for all the great help! 😄 💯

@Josh-Cena
Copy link
Collaborator

Thanks again for the work!

@Josh-Cena
Copy link
Collaborator

Josh-Cena commented Dec 20, 2021

@slorber you may want to test this locally and check the design before merging, e.g. do we want to center the copyright when the footer is simple?

@Josh-Cena Josh-Cena added the status: awaiting review This PR is ready for review, will be merged after maintainers' approval label Dec 20, 2021
Copy link
Collaborator

@slorber slorber left a comment

Choose a reason for hiding this comment

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

Thanks

Did some little modifications but overall that looks good.

For now I kept the simple footer centered above the copyright

};

export type MultiColumnFooter = FooterBase & {
links: Array<{
title: string;
Copy link
Collaborator

@slorber slorber Dec 20, 2021

Choose a reason for hiding this comment

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

The config validation allows undefined/null.

Undefined can lead to type guards thinking it's a simple footer despite being a multi column one:

image

null can lead to a weird rendering alignment:

image

Not sure who's using null, it may make sense to disable column titles and the alignment may be good enough if none of the columns have titles...


Edit: see use-case for null: #4267

Just adding default(null) to title validation + this type might be good enough.

@slorber slorber merged commit d987c22 into facebook:main Dec 20, 2021
@christopherklint97 christopherklint97 deleted the feat/simple-footer branch December 20, 2021 22:12
@Josh-Cena Josh-Cena removed the status: awaiting review This PR is ready for review, will be merged after maintainers' approval label Dec 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed Signed Facebook CLA pr: new feature This PR adds a new API or behavior.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Simple version of footer
4 participants