@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.
Files changed (69) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/component-type.json +1 -1
  3. package/dist/components/accordion/components/accordion-item/accordion-item.component.js +15 -4
  4. package/dist/components/accordion/components/accordion-item/accordion-item.styles.d.ts +27 -0
  5. package/dist/components/accordion/components/accordion-item/accordion-item.styles.js +10 -1
  6. package/dist/components/badge/badge.styles.js +1 -1
  7. package/dist/components/bottom-sheet/components/bottom-sheet-dialog/bottom-sheet-dialog.styles.js +1 -1
  8. package/dist/components/header/header.component.d.ts +1 -1
  9. package/dist/components/header/header.component.js +13 -10
  10. package/dist/components/header/header.types.d.ts +7 -1
  11. package/dist/components/modal/components/modal-dialog/index.d.ts +1 -0
  12. package/dist/components/modal/index.d.ts +1 -0
  13. package/dist/components/popover/components/panel/panel.component.js +5 -4
  14. package/dist/components/select/components/index.d.ts +2 -0
  15. package/dist/components/select/components/index.js +2 -0
  16. package/dist/components/select/components/select-with-tooltip/select-with-tooltip.component.d.ts +13 -0
  17. package/dist/components/select/components/select-with-tooltip/select-with-tooltip.component.js +22 -0
  18. package/dist/components/select/components/select-with-tooltip/select-with-tooltip.styles.d.ts +56 -0
  19. package/dist/components/select/components/select-with-tooltip/select-with-tooltip.styles.js +30 -0
  20. package/dist/components/select/components/styled-select/styled-select.component.d.ts +13 -0
  21. package/dist/components/select/components/styled-select/styled-select.component.js +19 -0
  22. package/dist/components/select/components/styled-select/styled-select.styles.d.ts +104 -0
  23. package/dist/components/select/components/styled-select/styled-select.styles.js +46 -0
  24. package/dist/components/select/select.component.d.ts +1 -0
  25. package/dist/components/select/select.component.js +7 -14
  26. package/dist/components/select/select.styles.d.ts +180 -45
  27. package/dist/components/select/select.styles.js +60 -15
  28. package/dist/components/select/select.types.d.ts +6 -0
  29. package/dist/components/tooltip/components/tooltip-content/tooltip-content.component.d.ts +2 -0
  30. package/dist/components/tooltip/components/tooltip-content/tooltip-content.component.js +9 -0
  31. package/dist/components/tooltip/components/tooltip-content/tooltip-content.styles.d.ts +1 -0
  32. package/dist/components/tooltip/components/tooltip-content/tooltip-content.styles.js +4 -0
  33. package/dist/components/tooltip/components/tooltip-content/tooltip-content.types.d.ts +5 -0
  34. package/dist/components/tooltip/components/tooltip-content/tooltip-content.types.js +1 -0
  35. package/dist/components/tooltip/index.d.ts +1 -0
  36. package/dist/components/tooltip/index.js +1 -0
  37. package/dist/components/tooltip/tooltip.component.d.ts +2 -0
  38. package/dist/components/tooltip/tooltip.component.js +55 -0
  39. package/dist/components/tooltip/tooltip.styles.d.ts +1 -0
  40. package/dist/components/tooltip/tooltip.styles.js +4 -0
  41. package/dist/components/tooltip/tooltip.types.d.ts +7 -0
  42. package/dist/components/tooltip/tooltip.types.js +1 -0
  43. package/dist/css/westpac-ui.css +54 -0
  44. package/dist/css/westpac-ui.min.css +54 -0
  45. package/package.json +2 -2
  46. package/src/components/accordion/components/accordion-item/accordion-item.component.tsx +22 -4
  47. package/src/components/accordion/components/accordion-item/accordion-item.styles.ts +9 -0
  48. package/src/components/badge/badge.styles.ts +1 -1
  49. package/src/components/bottom-sheet/components/bottom-sheet-dialog/bottom-sheet-dialog.styles.ts +1 -1
  50. package/src/components/header/header.component.tsx +17 -4
  51. package/src/components/header/header.types.ts +7 -1
  52. package/src/components/modal/components/modal-dialog/index.ts +1 -0
  53. package/src/components/modal/index.ts +1 -0
  54. package/src/components/popover/components/panel/panel.component.tsx +8 -5
  55. package/src/components/select/components/index.ts +2 -0
  56. package/src/components/select/components/select-with-tooltip/select-with-tooltip.component.tsx +31 -0
  57. package/src/components/select/components/select-with-tooltip/select-with-tooltip.styles.ts +26 -0
  58. package/src/components/select/components/styled-select/styled-select.component.tsx +25 -0
  59. package/src/components/select/components/styled-select/styled-select.styles.ts +42 -0
  60. package/src/components/select/select.component.tsx +9 -14
  61. package/src/components/select/select.styles.ts +18 -15
  62. package/src/components/select/select.types.ts +6 -0
  63. package/src/components/tooltip/components/tooltip-content/tooltip-content.component.tsx +12 -0
  64. package/src/components/tooltip/components/tooltip-content/tooltip-content.styles.ts +5 -0
  65. package/src/components/tooltip/components/tooltip-content/tooltip-content.types.ts +6 -0
  66. package/src/components/tooltip/index.ts +1 -0
  67. package/src/components/tooltip/tooltip.component.tsx +61 -0
  68. package/src/components/tooltip/tooltip.styles.ts +3 -0
  69. 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
+ }
@@ -0,0 +1,3 @@
1
+ import { tv } from 'tailwind-variants';
2
+
3
+ export const styles = tv({ base: 'relative' });
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export type TooltipProps = {
4
+ children: ReactNode;
5
+ tooltip: string;
6
+ id?: string;
7
+ className?: string;
8
+ };