pixel-react 1.22.1 → 1.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/lib/components/AutoTruncateText/AutoTruncateText.js +30 -38
  2. package/lib/components/AutoTruncateText/AutoTruncateText.js.map +1 -1
  3. package/lib/components/AutoTruncateText/resizeObserverService.d.ts +2 -10
  4. package/lib/components/AutoTruncateText/resizeObserverService.js +12 -19
  5. package/lib/components/AutoTruncateText/resizeObserverService.js.map +1 -1
  6. package/lib/components/HighlightText/HighlightText.d.ts +2 -2
  7. package/lib/components/HighlightText/HighlightText.js +13 -144
  8. package/lib/components/HighlightText/HighlightText.js.map +1 -1
  9. package/lib/components/HighlightText/index.d.ts +0 -1
  10. package/lib/components/HighlightText/types.d.ts +0 -46
  11. package/lib/components/MenuOption/MenuOption.js +31 -22
  12. package/lib/components/MenuOption/MenuOption.js.map +1 -1
  13. package/lib/components/Tooltip/Tooltip.js +26 -20
  14. package/lib/components/Tooltip/Tooltip.js.map +1 -1
  15. package/lib/components/TooltipService/TooltipService.js +109 -219
  16. package/lib/components/TooltipService/TooltipService.js.map +1 -1
  17. package/lib/components/variableSuggestionInputDropDown/VariableSuggestionInputDropDown.js +9 -4
  18. package/lib/components/variableSuggestionInputDropDown/VariableSuggestionInputDropDown.js.map +1 -1
  19. package/lib/components/variableSuggestionInputDropDown/types.d.ts +1 -0
  20. package/lib/index.d.ts +4 -48
  21. package/lib/index.js +9 -9
  22. package/lib/index.js.map +1 -1
  23. package/lib/styles.css +1 -1
  24. package/lib/tsconfig.tsbuildinfo +1 -1
  25. package/lib/utils/truncateText/truncateText.js +15 -29
  26. package/lib/utils/truncateText/truncateText.js.map +1 -1
  27. package/package.json +1 -1
  28. package/lib/hooks/useFocusTrap.d.ts +0 -29
  29. package/lib/hooks/useFocusTrap.js +0 -97
  30. package/lib/hooks/useFocusTrap.js.map +0 -1
  31. package/lib/hooks/useInteractiveAncestor.d.ts +0 -7
  32. package/lib/hooks/useInteractiveAncestor.js +0 -18
  33. package/lib/hooks/useInteractiveAncestor.js.map +0 -1
  34. package/lib/utils/a11y/a11y.d.ts +0 -28
  35. package/lib/utils/a11y/a11y.js +0 -62
  36. package/lib/utils/a11y/a11y.js.map +0 -1
@@ -1,56 +1,48 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { memo, useLayoutEffect, useRef } from 'react';
3
3
  import './AutoTruncateText.scss';
4
- import { subscribe } from './resizeObserverService';
4
+ import { useResizeSignal } from './useResizeSignal';
5
5
  const AutoTruncateText = memo(({ children, className, lines = 1, interactive = false, placement = 'bottom', allowedHtml = false, tooltipText = "" }) => {
6
6
  const textRef = useRef(null);
7
- const isSingleLine = lines <= 1;
8
- const normalizedPlacement = placement?.toLowerCase();
9
- // Several lines: whether the clamp cuts text off is measured in the resize
10
- // observer's callback, after layout, and written after every read
7
+ const signal = useResizeSignal(textRef);
11
8
  useLayoutEffect(() => {
12
9
  const el = textRef.current;
13
- if (!el || isSingleLine)
14
- return undefined;
15
- return subscribe(el, () => {
16
- const truncated = el.scrollHeight > el.clientHeight + 0.5;
17
- const text = allowedHtml
18
- ? tooltipText
19
- : tooltipText || el.textContent?.trim() || '';
20
- return () => {
21
- if (truncated && text) {
10
+ if (!el)
11
+ return;
12
+ const normalizedPlacement = placement?.toLowerCase();
13
+ const truncated = lines > 1
14
+ ? el.scrollHeight > el.clientHeight + 0.5
15
+ : el.scrollWidth > el.clientWidth + 0.5;
16
+ if (interactive) {
17
+ el.setAttribute('data-tooltip-interactive', 'true');
18
+ }
19
+ if (normalizedPlacement) {
20
+ el.setAttribute('data-tooltip-placement', normalizedPlacement);
21
+ }
22
+ if (truncated) {
23
+ if (allowedHtml) {
24
+ el.setAttribute('data-tooltip', tooltipText);
25
+ el.setAttribute('data-tooltip-allowhtml', 'true');
26
+ }
27
+ else {
28
+ const text = tooltipText || el.textContent?.trim() || '';
29
+ if (text) {
22
30
  el.setAttribute('data-tooltip', text);
23
- if (allowedHtml)
24
- el.setAttribute('data-tooltip-allowhtml', 'true');
25
31
  }
26
- else {
27
- el.removeAttribute('data-tooltip');
28
- el.removeAttribute('data-tooltip-allowhtml');
29
- }
30
- };
31
- });
32
- }, [children, isSingleLine, allowedHtml, tooltipText]);
33
- // One line: TooltipService checks the cut-off itself when the text is
34
- // hovered, so nothing is measured while it mounts (e.g. one per table row)
35
- const showsWhenCutOff = isSingleLine && (!allowedHtml || !!tooltipText);
36
- const tooltipProps = {
37
- ...(showsWhenCutOff ? { 'data-tooltip-overflow': '' } : {}),
38
- ...(showsWhenCutOff && tooltipText ? { 'data-tooltip': tooltipText } : {}),
39
- ...(showsWhenCutOff && allowedHtml
40
- ? { 'data-tooltip-allowhtml': 'true' }
41
- : {}),
42
- ...(interactive ? { 'data-tooltip-interactive': 'true' } : {}),
43
- ...(normalizedPlacement
44
- ? { 'data-tooltip-placement': normalizedPlacement }
45
- : {}),
46
- };
32
+ }
33
+ }
34
+ else {
35
+ el.removeAttribute('data-tooltip');
36
+ el.removeAttribute('data-tooltip-allowhtml');
37
+ }
38
+ }, [signal, children, interactive, lines, placement]);
47
39
  const textContent = typeof children === 'string' ? children : '';
48
40
  return (_jsx("div", { ref: textRef, className: className ? `ff-ellipsis ${className}` : 'ff-ellipsis', style: {
49
41
  display: lines > 1 ? '-webkit-box' : 'block',
50
42
  WebkitLineClamp: lines > 1 ? lines : undefined,
51
43
  WebkitBoxOrient: lines > 1 ? 'vertical' : undefined,
52
44
  whiteSpace: lines === 1 ? 'nowrap' : 'normal',
53
- }, role: "text", "aria-label": textContent || 'Truncated text', ...tooltipProps, children: children }));
45
+ }, role: "text", "aria-label": textContent || 'Truncated text', children: children }));
54
46
  });
55
47
  AutoTruncateText.displayName = 'AutoTruncateText';
56
48
  export default AutoTruncateText;
@@ -1 +1 @@
1
- {"version":3,"file":"AutoTruncateText.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/AutoTruncateText.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutoTruncateText.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/AutoTruncateText.tsx"],"names":[],"mappings":"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"}
@@ -2,14 +2,6 @@
2
2
  * resizeObserverService.ts
3
3
  */
4
4
  /**
5
- * Reads sizes and may return a function that writes to the DOM. Every read
6
- * runs before any write, so a write never makes the next read lay out again.
5
+ * Register an element to the SINGLE global observer.
7
6
  */
8
- type ResizeCallback = () => void | (() => void);
9
- /**
10
- * Register an element to the SINGLE global observer. The observer reports a
11
- * newly observed element once, after its first layout, so subscribing is also
12
- * how a subscriber gets its first measurement.
13
- */
14
- export declare const subscribe: (el: Element, callback: ResizeCallback) => () => void;
15
- export {};
7
+ export declare const subscribe: (el: Element, callback: () => void) => () => void;
@@ -2,30 +2,23 @@
2
2
  * resizeObserverService.ts
3
3
  */
4
4
  const subscribers = new Map();
5
- // Created on first use, so importing this needs no ResizeObserver (e.g. SSR)
6
- let observer = null;
7
- // Callbacks run inside the observer's callback, where layout is already done,
8
- // so they can read sizes for free. A frame later the next commit may have
9
- // changed the DOM, and the same read would force a layout per element.
10
- const getObserver = () => (observer ??= new ResizeObserver(entries => {
11
- const writes = [];
12
- for (const entry of entries) {
13
- const write = subscribers.get(entry.target)?.();
14
- if (typeof write === 'function')
15
- writes.push(write);
16
- }
17
- writes.forEach(write => write());
18
- }));
5
+ const observer = new ResizeObserver(entries => {
6
+ requestAnimationFrame(() => {
7
+ for (const entry of entries) {
8
+ const callback = subscribers.get(entry.target);
9
+ if (callback)
10
+ callback();
11
+ }
12
+ });
13
+ });
19
14
  /**
20
- * Register an element to the SINGLE global observer. The observer reports a
21
- * newly observed element once, after its first layout, so subscribing is also
22
- * how a subscriber gets its first measurement.
15
+ * Register an element to the SINGLE global observer.
23
16
  */
24
17
  export const subscribe = (el, callback) => {
25
18
  subscribers.set(el, callback);
26
- getObserver().observe(el);
19
+ observer.observe(el);
27
20
  return () => {
28
- getObserver().unobserve(el);
21
+ observer.unobserve(el);
29
22
  subscribers.delete(el);
30
23
  };
31
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"resizeObserverService.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/resizeObserverService.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEvD,6EAA6E;AAC7E,IAAI,QAAQ,GAA0B,IAAI,CAAC;AAE3C,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,MAAM,WAAW,GAAG,GAAG,EAAE,CACvB,CAAC,QAAQ,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;IACzC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,KAAK,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC,CAAC;AAEN;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAW,EAAE,QAAwB,EAAE,EAAE;IACjE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9B,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE1B,OAAO,GAAG,EAAE;QACV,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"resizeObserverService.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/resizeObserverService.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEnD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;IAC5C,qBAAqB,CAAC,GAAG,EAAE;QACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAW,EAAE,QAAoB,EAAE,EAAE;IAC7D,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAErB,OAAO,GAAG,EAAE;QACV,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { HighlightTextProps } from './types';
2
2
  import './HighlightText.scss';
3
- declare const MemoizedHighlightText: import("react").MemoExoticComponent<({ text, segments, highlight, onlyExactMatch, color, fontWeight, tooltip, truncate, }: HighlightTextProps) => import("react").JSX.Element>;
4
- export default MemoizedHighlightText;
3
+ declare const HighlightText: React.FC<HighlightTextProps>;
4
+ export default HighlightText;
@@ -1,153 +1,22 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import './HighlightText.scss';
3
- import { Fragment, isValidElement, memo, useId, useLayoutEffect, useRef, useState, } from 'react';
4
- import { subscribe } from '../AutoTruncateText/resizeObserverService';
5
- import useInteractiveAncestor from '../../hooks/useInteractiveAncestor';
3
+ import classNames from 'classnames';
4
+ import { Fragment } from 'react';
6
5
  // Function to escape special characters in the search term
7
6
  const escapeRegExp = (text) => {
8
7
  return text?.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
9
8
  };
10
- const getSegmentText = (segment) => typeof segment === 'string' ? segment : (segment.text ?? '');
11
- const getTextStyle = (color, fontWeight) => color || fontWeight ? { color, fontWeight } : undefined;
12
- // Text goes in `data-tooltip`. JSX cannot, so it is rendered into a hidden
13
- // element that `data-tooltip-id` points to, and TooltipService copies its HTML.
14
- // The pointer can move onto the tooltip (WCAG 1.4.13), and the element takes
15
- // focus so keyboard users get the tooltip too (WCAG 2.1.1).
16
- const getTooltipProps = (tooltip, templateId, focusable) => {
17
- if (!tooltip)
18
- return {};
19
- return {
20
- ...(isValidElement(tooltip)
21
- ? { 'data-tooltip-id': templateId }
22
- : {
23
- 'data-tooltip': tooltip,
24
- // Keeps line breaks, e.g. one `name: value` per line
25
- 'data-tooltip-multiline': typeof tooltip === 'string' && tooltip.includes('\n')
26
- ? ''
27
- : undefined,
28
- }),
29
- 'data-tooltip-hoverable': '',
30
- tabIndex: focusable ? 0 : undefined,
31
- };
32
- };
33
- // One-line ellipsis cut-off, measured again when the text or its size changes.
34
- // Measured only in the resize observer's callback, after layout: reading the
35
- // width here, during the commit, forced a layout for every row that mounted.
36
- // Subscribing again when the text changes gets a fresh report.
37
- const useIsClipped = (ref, enabled, text) => {
38
- const [isClipped, setIsClipped] = useState(false);
39
- useLayoutEffect(() => {
40
- const element = ref.current;
41
- if (!enabled || !element)
42
- return undefined;
43
- return subscribe(element, () => setIsClipped(element.scrollWidth > element.clientWidth + 0.5));
44
- }, [ref, enabled, text]);
45
- return enabled && isClipped;
46
- };
47
- // Where the search term occurs in the whole text, ignoring case
48
- const findMatches = (text, highlight) => {
49
- const ranges = [];
50
- const regex = new RegExp(escapeRegExp(highlight), 'gi');
51
- for (let match = regex.exec(text); match; match = regex.exec(text)) {
52
- ranges.push([match.index, match.index + match[0].length]);
53
- }
54
- return ranges;
55
- };
56
- // One segment's text, with the matches that overlap it marked. `start` is where
57
- // the segment begins in the whole text, so a match can run across segments.
58
- const markMatches = (text, start, ranges) => {
59
- const end = start + text.length;
60
- const nodes = [];
61
- let cursor = start;
62
- for (const [matchStart, matchEnd] of ranges) {
63
- if (matchStart >= end)
64
- break;
65
- if (matchEnd <= start)
66
- continue;
67
- const from = Math.max(matchStart, start);
68
- const to = Math.min(matchEnd, end);
69
- if (from > cursor)
70
- nodes.push(text.slice(cursor - start, from - start));
71
- nodes.push(_jsx("mark", { className: "ff-highlight-bg", children: text.slice(from - start, to - start) }, `highlight-${from}`));
72
- cursor = to;
9
+ const HighlightText = ({ text = '', highlight = '', onlyExactMatch = false, }) => {
10
+ if (!highlight) {
11
+ return (_jsx("span", { "aria-label": `Text: ${text}`, children: text }));
73
12
  }
74
- if (!nodes.length)
75
- return text;
76
- if (cursor < end)
77
- nodes.push(text.slice(cursor - start));
78
- return nodes;
79
- };
80
- const HighlightText = ({ text = '', segments, highlight = '', onlyExactMatch = false, color, fontWeight, tooltip, truncate = false, }) => {
81
- const rowRef = useRef(null);
82
- const tooltipId = `ff-highlight-tooltip-${useId().replace(/:/g, '')}`;
83
- const query = String(highlight ?? '');
84
- const fullText = segments ? segments.map(getSegmentText).join('') : text;
85
- const isExactMatch = !!query && onlyExactMatch && fullText.toLowerCase() === query.toLowerCase();
86
- const ranges = query && !onlyExactMatch ? findMatches(fullText, query) : [];
87
- // Without a tooltip, TooltipService shows the full text while it is cut off
88
- const showsOverflow = truncate && !tooltip;
89
- const hasTooltip = !!tooltip ||
90
- showsOverflow ||
91
- !!segments?.some((segment) => typeof segment !== 'string' && !!segment.tooltip);
92
- const isClipped = useIsClipped(rowRef, showsOverflow, fullText);
93
- // Inside a control (e.g. a button), that control takes focus instead
94
- const focusable = !useInteractiveAncestor(rowRef, hasTooltip);
95
- let offset = 0;
96
- const content = (segments ?? [text]).map((segment, index) => {
97
- const value = getSegmentText(segment);
98
- const marked = markMatches(value, offset, ranges);
99
- offset += value.length;
100
- if (typeof segment === 'string') {
101
- return _jsx(Fragment, { children: marked }, `segment-${index}`);
102
- }
103
- return (_jsx("span", { style: getTextStyle(segment.color, segment.fontWeight), ...getTooltipProps(segment.tooltip, `${tooltipId}-${index}`, focusable), children: marked }, `segment-${index}`));
104
- });
105
- const templates = [
106
- { id: tooltipId, tooltip },
107
- ...(segments ?? []).map((segment, index) => ({
108
- id: `${tooltipId}-${index}`,
109
- tooltip: typeof segment === 'string' ? undefined : segment.tooltip,
110
- })),
111
- ].filter((template) => isValidElement(template.tooltip));
112
- // The row takes focus only while its full text is hidden
113
- const rowTooltipProps = showsOverflow
114
- ? {
115
- 'data-tooltip-overflow': '',
116
- 'data-tooltip-hoverable': '',
117
- tabIndex: focusable && isClipped ? 0 : undefined,
118
- }
119
- : getTooltipProps(tooltip, tooltipId, focusable);
120
- return (_jsxs(_Fragment, { children: [_jsx("span", { ref: rowRef, className: truncate ? 'ff-highlight-text--truncate' : undefined, style: getTextStyle(color, fontWeight), ...rowTooltipProps, children: isExactMatch ? (_jsx("mark", { className: "ff-highlight-bg", children: content })) : (content) }), templates.map((template) => (_jsx("span", { id: template.id, hidden: true, children: template.tooltip }, template.id)))] }));
121
- };
122
- const isSameSegment = (a, b) => typeof a === 'string' || typeof b === 'string'
123
- ? a === b
124
- : a.text === b.text &&
125
- a.color === b.color &&
126
- a.fontWeight === b.fontWeight &&
127
- a.tooltip === b.tooltip;
128
- // Segments are compared by value (a JSX tooltip by reference), so rows that
129
- // rebuild the same segments on every render (e.g. in a virtualized table) do
130
- // not re-render
131
- const arePropsEqual = (prev, next) => {
132
- const keys = Object.keys({
133
- ...prev,
134
- ...next,
135
- });
136
- if (keys.some((key) => key !== 'segments' && !Object.is(prev[key], next[key]))) {
137
- return false;
13
+ const escapedHighlight = escapeRegExp(highlight); // Escape special characters
14
+ const parts = text?.split(new RegExp(`(${escapedHighlight})`, 'gi')); // Use escaped string in the regex
15
+ if (onlyExactMatch) {
16
+ const isTextEqualsHighlight = text.toLowerCase() === highlight.toLowerCase();
17
+ return (_jsx("span", { className: classNames(isTextEqualsHighlight ? 'ff-highlight-bg' : ''), "aria-label": `Highlighted text: ${text}`, children: text }));
138
18
  }
139
- const { segments: before } = prev;
140
- const { segments: after } = next;
141
- return (before === after ||
142
- (!!before &&
143
- !!after &&
144
- before.length === after.length &&
145
- before.every((segment, index) => {
146
- const other = after[index];
147
- return other !== undefined && isSameSegment(segment, other);
148
- })));
19
+ return (_jsx("span", { "aria-label": `Highlighted text: ${text}`, children: parts.map((part, index) => part?.toLowerCase() === highlight?.toLowerCase() ? (_jsx("span", { className: "ff-highlight-bg", children: part }, `highlight-${index}-${part}`)) : (_jsx(Fragment, { children: part }, `normal-${index}-${part}`))) }));
149
20
  };
150
- const MemoizedHighlightText = memo(HighlightText, arePropsEqual);
151
- MemoizedHighlightText.displayName = 'HighlightText';
152
- export default MemoizedHighlightText;
21
+ export default HighlightText;
153
22
  //# sourceMappingURL=HighlightText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HighlightText.js","sourceRoot":"","sources":["../../../src/components/HighlightText/HighlightText.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HighlightText.js","sourceRoot":"","sources":["../../../src/components/HighlightText/HighlightText.tsx"],"names":[],"mappings":";AACA,OAAO,sBAAsB,CAAC;AAC9B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,2DAA2D;AAC3D,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE;IAC5C,OAAO,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC,oCAAoC;AAC3F,CAAC,CAAC;AAEF,MAAM,aAAa,GAAiC,CAAC,EACnD,IAAI,GAAG,EAAE,EACT,SAAS,GAAG,EAAE,EACd,cAAc,GAAG,KAAK,GACvB,EAAE,EAAE;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,6BAAkB,SAAS,IAAI,EAAE,YAAG,IAAI,GAAQ,CACjD,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B;IAC9E,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,gBAAgB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,kCAAkC;IAExG,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,qBAAqB,GACzB,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,CACL,eACE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,gBACzD,qBAAqB,IAAI,EAAE,YAEtC,IAAI,GACA,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,6BAAkB,qBAAqB,IAAI,EAAE,YAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACzB,IAAI,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CACjD,eAAyC,SAAS,EAAC,iBAAiB,YACjE,IAAI,IADI,aAAa,KAAK,IAAI,IAAI,EAAE,CAEhC,CACR,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,cAAkC,IAAI,IAAhC,UAAU,KAAK,IAAI,IAAI,EAAE,CAAmB,CAC5D,CACF,GACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,2 +1 @@
1
1
  export { default } from './HighlightText';
2
- export type { HighlightTextProps, HighlightTextPart, HighlightTextSegment, } from './types';
@@ -1,51 +1,5 @@
1
- import type { CSSProperties, ReactElement } from 'react';
2
- /** A styled part of the text, e.g. a variable inside a step name */
3
- export interface HighlightTextPart {
4
- text: string;
5
- /**
6
- * Needs the same contrast as `color` on the row. Colour alone must not tell
7
- * kinds of parts apart (WCAG 1.4.1): a tooltip can say what the part is.
8
- */
9
- color?: string;
10
- fontWeight?: CSSProperties['fontWeight'];
11
- /**
12
- * Shown on hover over this part only. Text or JSX, as for `tooltip` below.
13
- * A line break (`\n`) in text starts a new line, e.g. for an element's name
14
- * and type; prefer that over JSX in long lists, since JSX tooltips render a
15
- * hidden copy in every row.
16
- */
17
- tooltip?: string | ReactElement;
18
- }
19
- /** Plain text, or a styled part */
20
- export type HighlightTextSegment = string | HighlightTextPart;
21
1
  export interface HighlightTextProps {
22
2
  text?: string;
23
- /**
24
- * Use instead of `text` when parts need their own colour or tooltip.
25
- * Search highlighting runs on the joined text, so a match can span parts.
26
- */
27
- segments?: HighlightTextSegment[];
28
3
  highlight?: String;
29
4
  onlyExactMatch?: boolean;
30
- /**
31
- * Text colour: any CSS colour value or variable, e.g. `var(--brand-color)`.
32
- * WCAG 1.4.6 (AAA) needs 7:1 contrast with the background (4.5:1 for large
33
- * text), also against the search highlight.
34
- */
35
- color?: string;
36
- fontWeight?: CSSProperties['fontWeight'];
37
- /**
38
- * Shown on hover or keyboard focus, through the global TooltipService. The
39
- * text takes focus for it, except inside another control (e.g. a button),
40
- * which should then carry the tooltip itself. Escape hides it. JSX is copied
41
- * into the tooltip as HTML, so it is static: event handlers inside it do not
42
- * run.
43
- */
44
- tooltip?: string | ReactElement;
45
- /**
46
- * Keep to one line and end with an ellipsis when it does not fit. The full
47
- * text shows on hover or focus, only while it is cut off (unless `tooltip`
48
- * is set); the row takes focus only then.
49
- */
50
- truncate?: boolean;
51
5
  }
@@ -138,42 +138,51 @@ const MenuOption = ({ labelName, iconName, tooltipTitle, tooltipPlacement = 'bot
138
138
  : getAnchorElement(targetRef);
139
139
  }, [targetRef]);
140
140
  const closeDropDown = () => setIsClicked(false);
141
- // A boolean, so callers that build `options` on every render (e.g. one menu
142
- // per table row) don't re-run this on every render
143
- const hasOptions = !checkEmpty(options);
144
141
  useEffect(() => {
145
142
  const targetElement = getTargetElement();
146
- if (!targetElement || !hasOptions)
143
+ if (!targetElement || checkEmpty(options))
147
144
  return;
148
145
  targetElement.classList.toggle('menu-hover-active', isHovered || isClicked);
149
146
  return () => {
150
147
  targetElement.classList.remove('menu-hover-active');
151
148
  };
152
- }, [isHovered, isClicked, targetRef, hasOptions, getTargetElement]);
153
- // Listens only while the menu is open. Attached on mount, every instance (one
154
- // per row in a table) searched its ancestors with getComputedStyle and kept
155
- // two scroll listeners.
156
- useEffect(() => {
157
- if (!isClicked)
158
- return undefined;
159
- // Scroll events do not bubble, but a capturing listener on window sees all
160
- // of them. Only the page or an ancestor of the menu moves it; scrolling the
161
- // open option list (rendered in a portal) keeps it open.
162
- const handleScroll = (event) => {
163
- const target = event.target;
164
- if (target instanceof Node && !target.contains(menuRef.current)) {
165
- return;
149
+ }, [isHovered, isClicked, targetRef, options, getTargetElement]);
150
+ const getScrollableParent = (element) => {
151
+ if (!element)
152
+ return null;
153
+ let parent = element.parentElement;
154
+ while (parent) {
155
+ const { overflowY, overflowX } = window.getComputedStyle(parent);
156
+ if ((/(auto|scroll|overlay)/.test(overflowY) &&
157
+ parent.scrollHeight > parent.clientHeight) ||
158
+ (/(auto|scroll|overlay)/.test(overflowX) &&
159
+ parent.scrollWidth > parent.clientWidth)) {
160
+ return parent;
166
161
  }
162
+ parent = parent.parentElement;
163
+ }
164
+ return document.documentElement;
165
+ };
166
+ useEffect(() => {
167
+ if (!menuRef.current)
168
+ return;
169
+ const scrollableParent = getScrollableParent(menuRef.current);
170
+ const handleScroll = () => {
167
171
  setIsClicked(false);
168
172
  };
169
- window.addEventListener('scroll', handleScroll, {
170
- capture: true,
173
+ // Attach scroll event to detected parent or window
174
+ scrollableParent?.addEventListener('scroll', handleScroll, {
171
175
  passive: true,
172
176
  });
177
+ if (scrollableParent !== document.documentElement) {
178
+ // Also attach to window if it's not the detected parent
179
+ window.addEventListener('scroll', handleScroll, { passive: true });
180
+ }
173
181
  return () => {
174
- window.removeEventListener('scroll', handleScroll, { capture: true });
182
+ scrollableParent?.removeEventListener('scroll', handleScroll);
183
+ window.removeEventListener('scroll', handleScroll);
175
184
  };
176
- }, [isClicked]);
185
+ }, []);
177
186
  const onIconClickHandler = () => {
178
187
  if (disabled)
179
188
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuOption.js","sourceRoot":"","sources":["../../../src/components/MenuOption/MenuOption.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MenuOption.js","sourceRoot":"","sources":["../../../src/components/MenuOption/MenuOption.tsx"],"names":[],"mappings":"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"}
@@ -79,32 +79,38 @@ const Tooltip = ({ title, children, placement = 'bottom', disabled = false, styl
79
79
  // For non-string, non-element values, check if it's null or undefined
80
80
  return tooltipValue === undefined || tooltipValue === null;
81
81
  };
82
- // Listens only while shown. Attached on mount, every instance (one per row in
83
- // a table) walked its ancestors with getComputedStyle and kept listeners on
84
- // window and on each scrolling ancestor.
85
82
  useEffect(() => {
86
- if (!isVisible)
87
- return undefined;
88
- // Scroll events do not bubble, but a capturing listener on window sees all
89
- // of them; only the page or an ancestor of the trigger moves the trigger
90
- const handleAnyScroll = (event) => {
91
- const target = event.target;
92
- if (target instanceof Node &&
93
- !target.contains(tooltipContainerRef.current)) {
94
- return;
95
- }
96
- handleScroll();
83
+ const scrollableParents = [window];
84
+ const isScrollable = (el) => {
85
+ const style = window.getComputedStyle(el);
86
+ return ((['auto', 'scroll'].includes(style.overflow) ||
87
+ ['auto', 'scroll'].includes(style.overflowY)) &&
88
+ el.scrollHeight > el.clientHeight);
97
89
  };
98
- window.addEventListener('scroll', handleAnyScroll, {
99
- capture: true,
100
- passive: true,
101
- });
90
+ const getScrollableParents = (el) => {
91
+ if (!el)
92
+ return [];
93
+ return isScrollable(el)
94
+ ? [el, ...getScrollableParents(el.parentElement)]
95
+ : getScrollableParents(el.parentElement);
96
+ };
97
+ window.addEventListener('scroll', handleScroll);
102
98
  window.addEventListener('click', handleClickAnywhere);
99
+ if (tooltipContainerRef.current) {
100
+ const parents = getScrollableParents(tooltipContainerRef.current.parentElement);
101
+ parents.forEach((parent) => parent.addEventListener('scroll', handleScroll));
102
+ scrollableParents.push(...parents);
103
+ }
103
104
  return () => {
104
- window.removeEventListener('scroll', handleAnyScroll, { capture: true });
105
+ window.removeEventListener('scroll', handleScroll);
105
106
  window.removeEventListener('click', handleClickAnywhere);
107
+ scrollableParents.forEach((parent) => {
108
+ if (parent !== window) {
109
+ parent.removeEventListener('scroll', handleScroll);
110
+ }
111
+ });
106
112
  };
107
- }, [isVisible]);
113
+ }, []);
108
114
  const calculateDim = () => {
109
115
  if (!tooltipContainerRef.current || !titleRef.current)
110
116
  return;