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

mendersoftware / mender-server / 10423

11 Nov 2025 04:53PM UTC coverage: 74.435% (-0.1%) from 74.562%
10423

push

gitlab-ci

web-flow
Merge pull request #1071 from mendersoftware/dependabot/npm_and_yarn/frontend/main/development-dependencies-92732187be

3868 of 5393 branches covered (71.72%)

Branch coverage included in aggregate %.

5 of 5 new or added lines in 2 files covered. (100.0%)

176 existing lines in 95 files now uncovered.

64605 of 86597 relevant lines covered (74.6%)

7.74 hits per line

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

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

2✔
17
import type { TooltipProps } from '@mui/material';
2✔
18
import { ClickAwayListener, Tooltip } from '@mui/material';
2✔
19
import { withStyles } from 'tss-react/mui';
2✔
20

2✔
21
import { toggle } from '@northern.tech/utils/helpers';
2✔
22
import type { PositioningStrategy } from '@popperjs/core';
2✔
23

2✔
24
export const MenderTooltip = withStyles(Tooltip, ({ palette, shadows, spacing }) => ({
2,445✔
25
  arrow: {
2✔
26
    color: palette.background.paper
2✔
27
  },
2✔
28
  tooltip: {
2✔
29
    backgroundColor: palette.background.paper,
2✔
30
    boxShadow: shadows[1],
2✔
31
    color: palette.text.primary,
2✔
32
    padding: spacing(2),
2✔
33
    fontSize: 'small',
2✔
34
    maxWidth: 600,
2✔
35
    info: {
2✔
36
      maxWidth: 300,
2✔
37
      color: palette.text.hint,
2✔
38
      backgroundColor: palette.grey[500]
2✔
39
    }
2✔
40
  }
2✔
41
}));
2✔
42

2✔
43
export interface MenderTooltipClickableProps extends TooltipProps {
2✔
44
  onboarding?: boolean;
2✔
45
  onOpenChange?: (open: boolean) => void;
2✔
46
  startOpen?: boolean;
2✔
47
  tooltipComponent?: typeof MenderTooltip;
2✔
48
  visibility?: boolean;
2✔
49
}
2✔
50

2✔
51
export const MenderTooltipClickable = ({
98✔
52
  children,
2✔
53
  onboarding,
2✔
54
  startOpen = false,
2✔
55
  visibility = startOpen,
2✔
56
  onOpenChange,
2✔
57
  tooltipComponent = MenderTooltip,
2✔
58
  ...remainingProps
2✔
59
}): MenderTooltipClickableProps => {
2✔
60
  const [open, setOpen] = useState(startOpen || false);
1,946✔
61

2✔
62
  useEffect(() => {
1,946✔
63
    setOpen(visibility);
161✔
64
  }, [visibility]);
2✔
65

2✔
66
  useEffect(() => {
1,946✔
67
    if (!onOpenChange) {
161✔
68
      return;
50✔
69
    }
2✔
70
    onOpenChange(open);
113✔
71
  }, [open, onOpenChange]);
2✔
72

2✔
73
  const toggleVisibility = () => setOpen(toggle);
1,946✔
74

2✔
75
  const hide = () => setOpen(false);
1,946✔
76

2✔
77
  const Component = tooltipComponent as typeof Tooltip;
1,946✔
78
  const extraProps = onboarding
1,946✔
79
    ? {
2✔
80
        PopperProps: {
2✔
81
          disablePortal: true,
2✔
82
          popperOptions: {
2✔
83
            strategy: 'fixed' as PositioningStrategy,
2✔
84
            modifiers: [
2✔
85
              { name: 'flip', enabled: false },
2✔
86
              { name: 'preventOverflow', enabled: true, options: { boundary: window, altBoundary: false } }
2✔
87
            ]
2✔
88
          }
2✔
89
        }
2✔
90
      }
2✔
91
    : {};
2✔
92
  return (
1,946✔
93
    <ClickAwayListener onClickAway={hide}>
2✔
94
      <Component
2✔
95
        arrow={!onboarding}
2✔
96
        open={open}
2✔
97
        disableFocusListener
2✔
98
        disableHoverListener
2✔
99
        disableTouchListener
2✔
UNCOV
100
        onOpen={() => setOpen(true)}
2✔
101
        {...extraProps}
2✔
102
        {...remainingProps}
2✔
103
      >
2✔
104
        <div onClick={toggleVisibility}>{children}</div>
2✔
105
      </Component>
2✔
106
    </ClickAwayListener>
2✔
107
  );
2✔
108
};
2✔
109

2✔
110
export default MenderTooltip;
2✔
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