import React, { useState, JSX } from 'react'; import { Link, LinkField, Text, TextField, useSitecoreContext, } from '@sitecore-content-sdk/nextjs'; interface Fields { Id: string; DisplayName: string; Title: TextField; NavigationTitle: TextField; Href: string; Querystring: string; Children: Array; Styles: string[]; } type NavigationProps = { params?: { [key: string]: string }; fields: Fields; handleClick: (event?: React.MouseEvent) => void; relativeLevel: number; }; const getNavigationText = function(props: NavigationProps): JSX.Element | string { let text; if (props.fields.NavigationTitle) { text = ; } else if (props.fields.Title) { text = ; } else { text = props.fields.DisplayName; } return text; }; const getLinkField = (props: NavigationProps): LinkField => ({ value: { href: props.fields.Href, title: getLinkTitle(props), querystring: props.fields.Querystring, }, }); export const Default = (props: NavigationProps): JSX.Element => { const [isOpenMenu, openMenu] = useState(false); const { sitecoreContext } = useSitecoreContext(); const styles = props.params != null ? `${props.params.GridParameters ?? ''} ${props.params.Styles ?? ''}`.trimEnd() : ''; const id = props.params != null ? props.params.RenderingIdentifier : null; if (!Object.values(props.fields).length) { return (
[Navigation]
); } const handleToggleMenu = (event?: React.MouseEvent, flag?: boolean): void => { if (event && sitecoreContext?.pageEditing) { event.preventDefault(); } if (flag !== undefined) { return openMenu(flag); } openMenu(!isOpenMenu); }; const list = Object.values(props.fields) .filter(element => element) .map((element: Fields, key: number) => ( ) => handleToggleMenu(event, false)} relativeLevel={1} /> )); return (