• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

code4recovery / tsml-ui / 18451009991

12 Oct 2025 11:29PM UTC coverage: 43.532% (-19.9%) from 63.458%
18451009991

Pull #475

github

web-flow
Merge 9d0374e51 into 0a0ddf96f
Pull Request #475: pretty permalinks

369 of 1009 branches covered (36.57%)

Branch coverage included in aggregate %.

15 of 37 new or added lines in 5 files covered. (40.54%)

236 existing lines in 17 files now uncovered.

553 of 1109 relevant lines covered (49.86%)

4.31 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/components/Alert.tsx
1
import { useNavigate } from 'react-router-dom';
2
import { formatUrl, getIndexByKey, formatString as i18n } from '../helpers';
3
import { useData, useError, useFilter, useInput, useSettings } from '../hooks';
4
import { alertCss, errorCss } from '../styles';
5

6
import Button from './Button';
7

8
export default function Alert() {
UNCOV
9
  const { indexes } = useData();
×
UNCOV
10
  const { error } = useError();
×
UNCOV
11
  const { alert } = useFilter();
×
UNCOV
12
  const { input } = useInput();
×
UNCOV
13
  const navigate = useNavigate();
×
UNCOV
14
  const { settings, strings } = useSettings();
×
UNCOV
15
  return error ? (
×
16
    <div css={errorCss}>{error}</div>
17
  ) : alert ? (
×
18
    <>
19
      <div css={alertCss}>{alert}</div>
20
      {alert === strings.no_results && input.search && (
×
21
        <Button
22
          onClick={() =>
23
            navigate(formatUrl({ ...input, search: '' }, settings))
×
24
          }
25
          text={i18n(strings.remove, { filter: input.search })}
26
          icon="close"
27
        />
28
      )}
29
      {alert === strings.no_results &&
×
30
        settings.filters.map(filter =>
31
          input[filter].map(value => (
×
32
            <Button
×
33
              key={value}
34
              icon="close"
35
              onClick={() => {
36
                navigate(
×
37
                  formatUrl(
38
                    {
39
                      ...input,
40
                      [filter]: input[filter].filter(item => item !== value),
×
41
                    },
42
                    settings
43
                  )
44
                );
45
              }}
46
              text={i18n(strings.remove, {
47
                filter: getIndexByKey(indexes[filter], value)?.name,
48
              })}
49
            />
50
          ))
51
        )}
52
    </>
53
  ) : null;
54
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc