diff --git a/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.js b/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.js index a2f8a50db1..a336c12263 100644 --- a/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.js +++ b/packages/docusaurus-theme-classic/src/__tests__/validateThemeConfig.test.js @@ -41,6 +41,7 @@ describe('themeConfig', () => { content: 'pls support', backgroundColor: '#fff', textColor: '#000', + isCloseable: true, }, image: 'img/docusaurus-soc.png', navbar: { diff --git a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx index 7611232148..de339ea493 100644 --- a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx @@ -6,6 +6,7 @@ */ import React from 'react'; +import clsx from 'clsx'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useUserPreferencesContext from '@theme/hooks/useUserPreferencesContext'; @@ -15,13 +16,13 @@ function AnnouncementBar(): JSX.Element | null { const { siteConfig: {themeConfig: {announcementBar = {}} = {}} = {}, } = useDocusaurusContext(); - const {content, backgroundColor, textColor} = announcementBar; + const {content, backgroundColor, textColor, isCloseable} = announcementBar; const { isAnnouncementBarClosed, closeAnnouncementBar, } = useUserPreferencesContext(); - if (!content || isAnnouncementBarClosed) { + if (!content || (isCloseable && isAnnouncementBarClosed)) { return null; } @@ -31,19 +32,22 @@ function AnnouncementBar(): JSX.Element | null { style={{backgroundColor, color: textColor}} role="banner">
- - + {isCloseable ? ( + + ) : null}
); } diff --git a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/styles.module.css b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/styles.module.css index 12350cc8ec..72fab1b31d 100644 --- a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/styles.module.css +++ b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/styles.module.css @@ -42,6 +42,9 @@ width: 100%; text-align: center; padding: 5px 0; +} + +.announcementBarCloseable { margin-right: 55px; } diff --git a/packages/docusaurus-theme-classic/src/validateThemeConfig.js b/packages/docusaurus-theme-classic/src/validateThemeConfig.js index 7a35e103af..968e6e37bd 100644 --- a/packages/docusaurus-theme-classic/src/validateThemeConfig.js +++ b/packages/docusaurus-theme-classic/src/validateThemeConfig.js @@ -169,6 +169,7 @@ const ThemeConfigSchema = Joi.object({ content: Joi.string(), backgroundColor: Joi.string().default('#fff'), textColor: Joi.string().default('#000'), + isCloseable: Joi.bool().default(true), }).optional(), navbar: Joi.object({ hideOnScroll: Joi.bool().default(false), diff --git a/website/docs/theme-classic.md b/website/docs/theme-classic.md index 91dab8be62..769411b915 100644 --- a/website/docs/theme-classic.md +++ b/website/docs/theme-classic.md @@ -87,7 +87,7 @@ module.exports = { ### Announcement bar -Sometimes you want to announce something in your website. Just for such a case, you can add an announcement bar. This is a non-fixed and dismissable panel above the navbar. +Sometimes you want to announce something in your website. Just for such a case, you can add an announcement bar. This is a non-fixed and optionally dismissable panel above the navbar. ```js {4-10} title="docusaurus.config.js" module.exports = { @@ -99,6 +99,7 @@ module.exports = { 'We are looking to revamp our docs, please fill this survey', backgroundColor: '#fafbfc', // Defaults to `#fff`. textColor: '#091E42', // Defaults to `#000`. + isCloseable: false, // Defaults to `true`. }, // ... },