@rpg-engine/long-bow 0.6.6 → 0.6.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpg-engine/long-bow",
3
- "version": "0.6.6",
3
+ "version": "0.6.8",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -7,6 +7,8 @@ import { Button, ButtonTypes } from './Button';
7
7
  interface IStep {
8
8
  component: React.ReactNode;
9
9
  id: number;
10
+ validate?: () => boolean | Promise<boolean>;
11
+ errorMessage?: string;
10
12
  }
11
13
 
12
14
  interface IStepperProps {
@@ -15,16 +17,44 @@ interface IStepperProps {
15
17
  label: string;
16
18
  onClick: (() => void) | (() => Promise<void>) | ((e: any) => Promise<void>);
17
19
  };
20
+ onError?: (message: string) => void;
18
21
  }
19
22
 
20
- export const Stepper: React.FC<IStepperProps> = ({ steps, finalCTAButton }) => {
23
+ export const Stepper: React.FC<IStepperProps> = ({
24
+ steps,
25
+ finalCTAButton,
26
+ onError,
27
+ }) => {
21
28
  const [currentStep, setCurrentStep] = useState(0);
22
29
 
23
30
  const currentComponent = steps[currentStep]?.component;
24
31
 
25
32
  const totalSteps = steps.length;
26
33
 
27
- const onStepChange = (step: number) => {
34
+ const onStepChange = async (step: number) => {
35
+ if (steps[currentStep]?.validate) {
36
+ try {
37
+ const isValid = await steps[currentStep].validate!();
38
+ if (!isValid) {
39
+ // If the current step is not valid, prevent navigation and trigger onError
40
+ if (onError) {
41
+ onError(
42
+ steps[currentStep].errorMessage ||
43
+ `Validation failed on step ${currentStep + 1}`
44
+ );
45
+ }
46
+ return;
47
+ }
48
+ } catch (error) {
49
+ // Handle unexpected validation errors
50
+ if (onError) {
51
+ onError(
52
+ `An error occurred during validation on step ${currentStep + 1}`
53
+ );
54
+ }
55
+ return;
56
+ }
57
+ }
28
58
  setCurrentStep(step);
29
59
  };
30
60
 
@@ -62,7 +92,7 @@ export const Stepper: React.FC<IStepperProps> = ({ steps, finalCTAButton }) => {
62
92
  {currentStep === totalSteps - 1 && finalCTAButton && (
63
93
  <Button
64
94
  buttonType={ButtonTypes.RPGUIButton}
65
- onPointerDown={finalCTAButton.onClick}
95
+ onClick={finalCTAButton.onClick}
66
96
  >
67
97
  {finalCTAButton.label}
68
98
  </Button>
package/src/index.tsx CHANGED
@@ -24,6 +24,8 @@ export * from './components/Leaderboard/Leaderboard';
24
24
  export * from './components/ListMenu';
25
25
  export * from './components/Marketplace/Marketplace';
26
26
  export * from './components/Marketplace/MarketplaceRows';
27
+ export * from './components/Multitab/TabBody';
28
+ export * from './components/Multitab/TabsContainer';
27
29
  export * from './components/NPCDialog/NPCDialog';
28
30
  export * from './components/NPCDialog/NPCMultiDialog';
29
31
  export * from './components/NPCDialog/QuestionDialog/QuestionDialog';