From 68f4bd00f45162d250213e14ecc4a666a9f8087c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 30 Jul 2020 15:46:33 +0200 Subject: [PATCH] fix(v2): fix link items refusing attributes like target, rel etc... (#3168) --- .../templates/facebook/docusaurus.config.js | 4 --- .../src/themeConfigSchema.js | 27 ++++++++++--------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/docusaurus-init/templates/facebook/docusaurus.config.js b/packages/docusaurus-init/templates/facebook/docusaurus.config.js index 4d49109887..ca03c54bb5 100644 --- a/packages/docusaurus-init/templates/facebook/docusaurus.config.js +++ b/packages/docusaurus-init/templates/facebook/docusaurus.config.js @@ -92,14 +92,10 @@ module.exports = { { label: 'Privacy', href: 'https://opensource.facebook.com/legal/privacy/', - target: '_blank', - rel: 'noreferrer noopener', }, { label: 'Terms', href: 'https://opensource.facebook.com/legal/terms/', - target: '_blank', - rel: 'noreferrer noopener', }, ], }, diff --git a/packages/docusaurus-theme-classic/src/themeConfigSchema.js b/packages/docusaurus-theme-classic/src/themeConfigSchema.js index 25f0408378..7f847f4d6c 100644 --- a/packages/docusaurus-theme-classic/src/themeConfigSchema.js +++ b/packages/docusaurus-theme-classic/src/themeConfigSchema.js @@ -111,6 +111,20 @@ const ColorModeSchema = Joi.object({ respectPrefersColorScheme: false, }); +const FooterLinkItemSchema = Joi.object({ + to: Joi.string(), + href: Joi.string().uri(), + html: Joi.string(), + label: Joi.string(), +}) + .xor('to', 'href', 'html') + .with('to', 'label') + .with('href', 'label') + .nand('html', 'label') + // We allow any unknown attributes on the links + // (users may need additional attributes like target, aria-role, data-customAttribute...) + .unknown(); + const ThemeConfigSchema = Joi.object({ // TODO temporary (@alpha-58) disableDarkMode: Joi.any().forbidden(false).messages({ @@ -158,18 +172,7 @@ const ThemeConfigSchema = Joi.object({ links: Joi.array().items( Joi.object({ title: Joi.string().required(), - items: Joi.array().items( - Joi.object({ - to: Joi.string(), - href: Joi.string().uri(), - html: Joi.string(), - label: Joi.string(), - }) - .xor('to', 'href', 'html') - .with('to', 'label') - .with('href', 'label') - .nand('html', 'label'), - ), + items: Joi.array().items(FooterLinkItemSchema).default([]), }), ), }),