@westpac/ui 1.0.0 → 1.1.1

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.
@@ -5,6 +5,7 @@ export declare const PassCode: React.ForwardRefExoticComponent<{
5
5
  onBlur?: (index: number, event: FocusEvent<HTMLInputElement>) => void;
6
6
  onChange?: (passcode: string[]) => void;
7
7
  onComplete?: (passcode: string) => void;
8
+ onPasteComplete?: (passcode: string) => void;
8
9
  type?: "numbers" | "letters" | "alphanumeric";
9
10
  value?: string[];
10
11
  } & import("tailwind-variants").VariantProps<import("tailwind-variants").TVReturnType<{
@@ -2,7 +2,7 @@
2
2
  import React, { forwardRef, useCallback, useImperativeHandle, useRef, useState } from 'react';
3
3
  import { Input } from '../index.js';
4
4
  import { styles as passCodeStyles } from './pass-code.styles.js';
5
- export const PassCode = forwardRef(({ length, value, onChange, onComplete, className, type = 'alphanumeric', onBlur, ...props }, ref)=>{
5
+ export const PassCode = forwardRef(({ length, value, onChange, onComplete, onPasteComplete, className, type = 'alphanumeric', onBlur, ...props }, ref)=>{
6
6
  const [internalPasscode, setInternalPasscode] = useState(Array.from({
7
7
  length
8
8
  }).map(()=>''));
@@ -70,14 +70,19 @@ export const PassCode = forwardRef(({ length, value, onChange, onComplete, class
70
70
  } else {
71
71
  setInternalPasscode(newPasscode);
72
72
  }
73
- if (newPasscode.filter((passcode)=>!passcode).length === 0 && onComplete) {
74
- onComplete(newPasscode.join(''));
73
+ if (newPasscode.filter((passcode)=>!passcode).length === 0) {
74
+ if (onPasteComplete) {
75
+ onPasteComplete(newPasscode.join(''));
76
+ } else if (onComplete) {
77
+ onComplete(newPasscode.join(''));
78
+ }
75
79
  }
76
80
  }, [
77
81
  passcode,
78
82
  length,
79
83
  onChange,
80
84
  onComplete,
85
+ onPasteComplete,
81
86
  type
82
87
  ]);
83
88
  const handleKeyDown = useCallback((index, event)=>{
@@ -18,6 +18,10 @@ export type PassCodeProps = {
18
18
  * Callback when the passcode is completely typed
19
19
  */
20
20
  onComplete?: (passcode: string) => void;
21
+ /**
22
+ * Callback when the passcode is completely pasted
23
+ */
24
+ onPasteComplete?: (passcode: string) => void;
21
25
  /**
22
26
  * Type of passcode input
23
27
  */
@@ -181,6 +181,9 @@
181
181
  .relative {
182
182
  position: relative;
183
183
  }
184
+ .static {
185
+ position: static;
186
+ }
184
187
  .sticky {
185
188
  position: sticky;
186
189
  }
@@ -181,6 +181,9 @@
181
181
  .relative {
182
182
  position: relative;
183
183
  }
184
+ .static {
185
+ position: static;
186
+ }
184
187
  .sticky {
185
188
  position: sticky;
186
189
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@westpac/ui",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -254,9 +254,9 @@
254
254
  "vite": "^7.1.12",
255
255
  "vitest": "^3.2.4",
256
256
  "@westpac/eslint-config": "~1.1.0",
257
- "@westpac/style-config": "~1.0.0",
258
- "@westpac/test-config": "~0.0.0",
259
- "@westpac/ts-config": "~0.0.0"
257
+ "@westpac/style-config": "~1.0.1",
258
+ "@westpac/ts-config": "~0.0.0",
259
+ "@westpac/test-config": "~0.0.0"
260
260
  },
261
261
  "dependencies": {
262
262
  "@internationalized/date": "~3.10.0",
@@ -18,7 +18,10 @@ import { styles as passCodeStyles } from './pass-code.styles.js';
18
18
  import { PassCodeProps, PassCodeRef } from './pass-code.types.js';
19
19
 
20
20
  export const PassCode = forwardRef<PassCodeRef, PassCodeProps>(
21
- ({ length, value, onChange, onComplete, className, type = 'alphanumeric', onBlur, ...props }, ref) => {
21
+ (
22
+ { length, value, onChange, onComplete, onPasteComplete, className, type = 'alphanumeric', onBlur, ...props },
23
+ ref,
24
+ ) => {
22
25
  const [internalPasscode, setInternalPasscode] = useState<string[]>(Array.from({ length }).map(() => ''));
23
26
  const passcode = value ? value : internalPasscode;
24
27
  const inputRefs = useRef<(HTMLInputElement | null)[]>([]);
@@ -84,11 +87,15 @@ export const PassCode = forwardRef<PassCodeRef, PassCodeProps>(
84
87
  } else {
85
88
  setInternalPasscode(newPasscode);
86
89
  }
87
- if (newPasscode.filter(passcode => !passcode).length === 0 && onComplete) {
88
- onComplete(newPasscode.join(''));
90
+ if (newPasscode.filter(passcode => !passcode).length === 0) {
91
+ if (onPasteComplete) {
92
+ onPasteComplete(newPasscode.join(''));
93
+ } else if (onComplete) {
94
+ onComplete(newPasscode.join(''));
95
+ }
89
96
  }
90
97
  },
91
- [passcode, length, onChange, onComplete, type],
98
+ [passcode, length, onChange, onComplete, onPasteComplete, type],
92
99
  );
93
100
 
94
101
  const handleKeyDown = useCallback(
@@ -20,6 +20,10 @@ export type PassCodeProps = {
20
20
  * Callback when the passcode is completely typed
21
21
  */
22
22
  onComplete?: (passcode: string) => void;
23
+ /**
24
+ * Callback when the passcode is completely pasted
25
+ */
26
+ onPasteComplete?: (passcode: string) => void;
23
27
  /**
24
28
  * Type of passcode input
25
29
  */