Skip to content
Snippets Groups Projects
UrgentRequest.tsx 1.34 KiB
Newer Older
Chris's avatar
Chris committed
import Markdown from 'markdown-to-jsx';
import React, { ChangeEvent, MouseEventHandler, useEffect, useState } from 'react';
Chris's avatar
Chris committed
import { useTranslation } from 'react-i18next';
import styles from './UrgentRequest.module.scss';

export interface UrgentRequestProps {
  submit: MouseEventHandler<HTMLButtonElement>;
}

export const UrgentRequest: React.FC<UrgentRequestProps> = ({
  submit,
}: UrgentRequestProps) => {
Chris's avatar
Chris committed
  const [urgent, setUrgent] = useState<boolean>(false);
Chris's avatar
Chris committed
  const [urgentText, setUrgentText] = useState<string>('');
  const { t } = useTranslation();
  const changeUrgentText = (event: ChangeEvent<HTMLInputElement>): void => {
    setUrgentText(event.target.value);
  };

  useEffect(() => {
    setUrgent(urgentText == t('urgency.urgent'));
  }, [urgentText]);

  return (
Chris's avatar
Chris committed
    <fieldset className={`${styles.UrgentRequest}`}>
      <legend>{t('urgency.legend')}</legend>
      <Markdown>{t('urgency.intro')}</Markdown>
      <div className="field">
Chris's avatar
Chris committed
        <input
Chris's avatar
Chris committed
          type="text"
          value={urgentText}
          onChange={changeUrgentText}
          aria-label={t('urgency.typeUrgentHere')}
        ></input>
Chris's avatar
Chris committed
      </div>
Chris's avatar
Chris committed
      <button
        disabled={!urgent}
        className="bad"
        onClick={submit}
Chris's avatar
Chris committed
      >
        {t('urgency.submit')}
      </button>
    </fieldset>
Chris's avatar
Chris committed
  );
Chris's avatar
Chris committed

export default UrgentRequest;