Skip to content

Commit

Permalink
feat: close language menu when item is clicked on (#289)
Browse files Browse the repository at this point in the history
* feat: close language menu when item is clicked on

* feat: close language menu when item is clicked on

* Linting

Co-authored-by: Eren Riviere <eren.riviere@finances.gouv.fr>
  • Loading branch information
MustThinkOfAName and Eren Riviere authored Nov 1, 2022
1 parent 243a6d6 commit 6876303
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions src/components/interface/Header/ToolTranslate.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
import React, { useState } from 'react';
import React, { useCallback, useRef, useState } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';

import '@gouvfr/dsfr/dist/component/translate/translate.css';

import dataAttributes from '../../../utils/data-attributes';
import typeValidation from '../../../utils/type-validation';
import useOnClickOutside from '../../../hooks/useOnClickOutside';

const ToolTranslate = ({
children, currentLang, className, descCurrentLang, title, ...remainingProps
}) => {
const [isOpen, setIsOpen] = useState(false);
const _className = classNames(className, 'fr-translate fr-nav');
const translateMenuRef = useRef();
const close = useCallback((e) => {
if ((translateMenuRef && translateMenuRef.current !== e.target) && isOpen) {
setIsOpen(false);
}
}, [isOpen]);
useOnClickOutside(translateMenuRef, close);

return (
<nav
role="navigation"
className={_className}
{...dataAttributes.getAll(remainingProps)}
>
<div className="fr-nav__item">
<div className="fr-nav__item" ref={translateMenuRef}>
<button
onClick={() => setIsOpen(!isOpen)}
type="button"
Expand All @@ -30,7 +38,7 @@ const ToolTranslate = ({
>
{currentLang}
</button>
<div className={`fr-translate__menu fr-menu ${isOpen ? 'fr-collapse--expanded' : 'fr-collapse'}`} id="translate-516">
<div className={`fr-translate__menu fr-menu ${isOpen ? 'fr-collapse--expanded' : 'fr-collapse'}`} id="translate-516" onClick={() => setIsOpen(false)} onKeyDown={(e) => (e.key === 'Enter' ? setIsOpen(false) : null)} role="menuitem" tabIndex={-1}>
<ul className="fr-menu__list">
{children}
</ul>
Expand Down

0 comments on commit 6876303

Please sign in to comment.