@westpac/ui 0.50.3 → 0.52.0
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.
- package/CHANGELOG.md +35 -0
- package/dist/component-type.json +1 -1
- package/dist/components/accordion/components/accordion-item/accordion-item.component.js +15 -4
- package/dist/components/accordion/components/accordion-item/accordion-item.styles.d.ts +27 -0
- package/dist/components/accordion/components/accordion-item/accordion-item.styles.js +10 -1
- package/dist/components/badge/badge.styles.js +1 -1
- package/dist/components/bottom-sheet/components/bottom-sheet-dialog/bottom-sheet-dialog.styles.js +1 -1
- package/dist/components/header/header.component.d.ts +1 -1
- package/dist/components/header/header.component.js +13 -10
- package/dist/components/header/header.types.d.ts +7 -1
- package/dist/components/modal/components/modal-dialog/index.d.ts +1 -0
- package/dist/components/modal/index.d.ts +1 -0
- package/dist/components/popover/components/panel/panel.component.js +5 -4
- package/dist/components/select/components/index.d.ts +2 -0
- package/dist/components/select/components/index.js +2 -0
- package/dist/components/select/components/select-with-tooltip/select-with-tooltip.component.d.ts +13 -0
- package/dist/components/select/components/select-with-tooltip/select-with-tooltip.component.js +22 -0
- package/dist/components/select/components/select-with-tooltip/select-with-tooltip.styles.d.ts +56 -0
- package/dist/components/select/components/select-with-tooltip/select-with-tooltip.styles.js +30 -0
- package/dist/components/select/components/styled-select/styled-select.component.d.ts +13 -0
- package/dist/components/select/components/styled-select/styled-select.component.js +19 -0
- package/dist/components/select/components/styled-select/styled-select.styles.d.ts +104 -0
- package/dist/components/select/components/styled-select/styled-select.styles.js +46 -0
- package/dist/components/select/select.component.d.ts +1 -0
- package/dist/components/select/select.component.js +7 -14
- package/dist/components/select/select.styles.d.ts +180 -45
- package/dist/components/select/select.styles.js +60 -15
- package/dist/components/select/select.types.d.ts +6 -0
- package/dist/components/tooltip/components/tooltip-content/tooltip-content.component.d.ts +2 -0
- package/dist/components/tooltip/components/tooltip-content/tooltip-content.component.js +9 -0
- package/dist/components/tooltip/components/tooltip-content/tooltip-content.styles.d.ts +1 -0
- package/dist/components/tooltip/components/tooltip-content/tooltip-content.styles.js +4 -0
- package/dist/components/tooltip/components/tooltip-content/tooltip-content.types.d.ts +5 -0
- package/dist/components/tooltip/components/tooltip-content/tooltip-content.types.js +1 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/components/tooltip/tooltip.component.d.ts +2 -0
- package/dist/components/tooltip/tooltip.component.js +55 -0
- package/dist/components/tooltip/tooltip.styles.d.ts +1 -0
- package/dist/components/tooltip/tooltip.styles.js +4 -0
- package/dist/components/tooltip/tooltip.types.d.ts +7 -0
- package/dist/components/tooltip/tooltip.types.js +1 -0
- package/dist/css/westpac-ui.css +54 -0
- package/dist/css/westpac-ui.min.css +54 -0
- package/package.json +2 -2
- package/src/components/accordion/components/accordion-item/accordion-item.component.tsx +22 -4
- package/src/components/accordion/components/accordion-item/accordion-item.styles.ts +9 -0
- package/src/components/badge/badge.styles.ts +1 -1
- package/src/components/bottom-sheet/components/bottom-sheet-dialog/bottom-sheet-dialog.styles.ts +1 -1
- package/src/components/header/header.component.tsx +17 -4
- package/src/components/header/header.types.ts +7 -1
- package/src/components/modal/components/modal-dialog/index.ts +1 -0
- package/src/components/modal/index.ts +1 -0
- package/src/components/popover/components/panel/panel.component.tsx +8 -5
- package/src/components/select/components/index.ts +2 -0
- package/src/components/select/components/select-with-tooltip/select-with-tooltip.component.tsx +31 -0
- package/src/components/select/components/select-with-tooltip/select-with-tooltip.styles.ts +26 -0
- package/src/components/select/components/styled-select/styled-select.component.tsx +25 -0
- package/src/components/select/components/styled-select/styled-select.styles.ts +42 -0
- package/src/components/select/select.component.tsx +9 -14
- package/src/components/select/select.styles.ts +18 -15
- package/src/components/select/select.types.ts +6 -0
- package/src/components/tooltip/components/tooltip-content/tooltip-content.component.tsx +12 -0
- package/src/components/tooltip/components/tooltip-content/tooltip-content.styles.ts +5 -0
- package/src/components/tooltip/components/tooltip-content/tooltip-content.types.ts +6 -0
- package/src/components/tooltip/index.ts +1 -0
- package/src/components/tooltip/tooltip.component.tsx +61 -0
- package/src/components/tooltip/tooltip.styles.ts +3 -0
- package/src/components/tooltip/tooltip.types.ts +8 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React, { useCallback, useEffect, useId, useRef, useState } from 'react';
|
|
4
|
+
import { mergeProps, useHover, useFocusRing } from 'react-aria';
|
|
5
|
+
|
|
6
|
+
import { TooltipContent } from './components/tooltip-content/tooltip-content.component.js';
|
|
7
|
+
import { styles } from './tooltip.styles.js';
|
|
8
|
+
import { TooltipProps } from './tooltip.types.js';
|
|
9
|
+
|
|
10
|
+
// TODO: Complete component/replace with a library that works (react-tooltip if can find a way to remove aria-described by for select)
|
|
11
|
+
export function Tooltip({ children, tooltip, id, className }: TooltipProps) {
|
|
12
|
+
const localId = useId();
|
|
13
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
14
|
+
const tooltipWaitTime = useRef<NodeJS.Timeout | null>(null);
|
|
15
|
+
|
|
16
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
17
|
+
if (e.key === 'Escape' && isOpen) {
|
|
18
|
+
setIsOpen(false);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const { hoverProps, isHovered } = useHover({});
|
|
22
|
+
const { isFocusVisible, focusProps } = useFocusRing({ within: true });
|
|
23
|
+
|
|
24
|
+
const startTimer = useCallback(() => {
|
|
25
|
+
tooltipWaitTime.current = setTimeout(() => {
|
|
26
|
+
setIsOpen(true);
|
|
27
|
+
}, 1000);
|
|
28
|
+
}, []);
|
|
29
|
+
|
|
30
|
+
const stopTimer = useCallback(() => {
|
|
31
|
+
if (tooltipWaitTime.current) {
|
|
32
|
+
clearTimeout(tooltipWaitTime.current);
|
|
33
|
+
}
|
|
34
|
+
}, []);
|
|
35
|
+
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
setIsOpen(isFocusVisible);
|
|
38
|
+
}, [isFocusVisible]);
|
|
39
|
+
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (isHovered && !isOpen) startTimer();
|
|
42
|
+
if (!isHovered) setIsOpen(false);
|
|
43
|
+
|
|
44
|
+
return () => stopTimer();
|
|
45
|
+
|
|
46
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
47
|
+
}, [isHovered]);
|
|
48
|
+
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
51
|
+
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
52
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
53
|
+
}, [isOpen]);
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<span {...mergeProps(hoverProps, focusProps)} className={styles({ className })}>
|
|
57
|
+
{children}
|
|
58
|
+
{isOpen && <TooltipContent id={id ?? localId}>{tooltip}</TooltipContent>}
|
|
59
|
+
</span>
|
|
60
|
+
);
|
|
61
|
+
}
|