diff options
Diffstat (limited to 'src/components/templates')
| -rw-r--r-- | src/components/templates/layout/layout.tsx | 25 | ||||
| -rw-r--r-- | src/components/templates/page/page-layout.stories.tsx | 9 |
2 files changed, 25 insertions, 9 deletions
diff --git a/src/components/templates/layout/layout.tsx b/src/components/templates/layout/layout.tsx index cdbb414..8332ba4 100644 --- a/src/components/templates/layout/layout.tsx +++ b/src/components/templates/layout/layout.tsx @@ -1,5 +1,6 @@ /* eslint-disable max-statements */ import NextImage from 'next/image'; +import { useRouter } from 'next/router'; import Script from 'next/script'; import { type FC, @@ -46,6 +47,7 @@ import { SearchForm, SettingsForm, type NavbarItems, + type SearchFormSubmit, } from '../../organisms'; import styles from './layout.module.scss'; @@ -85,6 +87,7 @@ export const Layout: FC<LayoutProps> = ({ isHome, useGrid = false, }) => { + const router = useRouter(); const intl = useIntl(); const { website } = useSettings(); const { baseline, copyright, locales, name, url } = website; @@ -249,6 +252,26 @@ export const Layout: FC<LayoutProps> = ({ condition: () => isSearchOpen, delay: 360, }); + const searchSubmitHandler: SearchFormSubmit = useCallback( + ({ query }) => { + if (!query) + return { + messages: { + error: intl.formatMessage({ + defaultMessage: 'Query must be longer than one character.', + description: 'Layout: invalid query message', + id: 'C2YcUJ', + }), + }, + validator: (value) => value.query.length > 1, + }; + + router.push({ pathname: ROUTES.SEARCH, query: { s: query } }); + + return undefined; + }, + [intl, router] + ); useRouteChange(deactivateSearch); @@ -268,8 +291,8 @@ export const Layout: FC<LayoutProps> = ({ <SearchForm className={styles.search} isLabelHidden + onSubmit={searchSubmitHandler} ref={searchInputRef} - searchPage={ROUTES.SEARCH} /> ), icon: 'magnifying-glass', diff --git a/src/components/templates/page/page-layout.stories.tsx b/src/components/templates/page/page-layout.stories.tsx index 7977382..05b47da 100644 --- a/src/components/templates/page/page-layout.stories.tsx +++ b/src/components/templates/page/page-layout.stories.tsx @@ -373,14 +373,7 @@ Blog.args = { breadcrumb: postsListBreadcrumb, title: 'Blog', headerMeta: [{ id: 'total', label: 'Total:', value: `${posts.length}` }], - children: ( - <PostsList - posts={posts} - byYear={true} - total={posts.length} - searchPage="#" - /> - ), + children: <PostsList posts={posts} byYear={true} total={posts.length} />, widgets: [ <LinksListWidget heading={ |
