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

mendersoftware / gui / 951400782

pending completion
951400782

Pull #3900

gitlab-ci

web-flow
chore: bump @testing-library/jest-dom from 5.16.5 to 5.17.0

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.16.5 to 5.17.0.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.16.5...v5.17.0)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Pull Request #3900: chore: bump @testing-library/jest-dom from 5.16.5 to 5.17.0

4446 of 6414 branches covered (69.32%)

8342 of 10084 relevant lines covered (82.73%)

186.0 hits per line

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

90.63
/src/js/components/common/search.js
1
// Copyright 2022 Northern.tech AS
2
//
3
//    Licensed under the Apache License, Version 2.0 (the "License");
4
//    you may not use this file except in compliance with the License.
5
//    You may obtain a copy of the License at
6
//
7
//        http://www.apache.org/licenses/LICENSE-2.0
8
//
9
//    Unless required by applicable law or agreed to in writing, software
10
//    distributed under the License is distributed on an "AS IS" BASIS,
11
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
//    See the License for the specific language governing permissions and
13
//    limitations under the License.
14
import React, { useEffect, useState } from 'react';
15

16
import { Search as SearchIcon } from '@mui/icons-material';
17
import { InputAdornment, TextField } from '@mui/material';
18
import { makeStyles } from 'tss-react/mui';
19

20
import { TIMEOUTS } from '../../constants/appConstants';
21
import { useDebounce } from '../../utils/debouncehook';
22
import Loader from './loader';
23

24
const useStyles = makeStyles()(() => ({
59✔
25
  root: {
26
    input: {
27
      fontSize: '13px'
28
    }
29
  }
30
}));
31

32
const endAdornment = (
33
  <InputAdornment position="end">
6✔
34
    <Loader show small style={{ marginTop: -10 }} />
35
  </InputAdornment>
36
);
37

38
// due to search not working reliably for single letter searches, only start at 2
39
const MINIMUM_SEARCH_LENGTH = 2;
6✔
40

41
const Search = ({ isSearching, onSearch, placeholder = 'Search devices', searchTerm, style = {} }) => {
6✔
42
  const [searchValue, setSearchValue] = useState('');
495✔
43
  const { classes } = useStyles();
495✔
44

45
  const debouncedSearchTerm = useDebounce(searchValue, TIMEOUTS.debounceDefault);
495✔
46

47
  useEffect(() => {
495✔
48
    if (debouncedSearchTerm.length < MINIMUM_SEARCH_LENGTH) {
12✔
49
      return;
11✔
50
    }
51
    onSearch(debouncedSearchTerm);
1✔
52
  }, [debouncedSearchTerm]);
53

54
  useEffect(() => {
495✔
55
    if (!searchTerm) {
12✔
56
      setSearchValue(searchTerm);
10✔
57
    }
58
  }, [searchTerm]);
59

60
  const onSearchUpdated = ({ target: { value } }) => setSearchValue(value);
495✔
61

62
  const onTriggerSearch = ({ key }) => {
495✔
63
    if (key === 'Enter' && searchValue >= MINIMUM_SEARCH_LENGTH) {
2!
64
      onSearch(searchValue);
×
65
    }
66
  };
67

68
  const adornment = isSearching ? { endAdornment } : {};
495✔
69
  return (
495✔
70
    <TextField
71
      className={classes.root}
72
      InputProps={{
73
        startAdornment: (
74
          <InputAdornment position="start">
75
            <SearchIcon color="disabled" fontSize="size" />
76
          </InputAdornment>
77
        ),
78
        ...adornment
79
      }}
80
      onChange={onSearchUpdated}
81
      onKeyPress={onTriggerSearch}
82
      placeholder={placeholder}
83
      size="small"
84
      style={style}
85
      value={searchValue}
86
    />
87
  );
88
};
89

90
export default Search;
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

© 2025 Coveralls, Inc