flowboard-react 0.6.0 → 0.6.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/README.md +9 -9
  2. package/lib/module/Flowboard.js +16 -13
  3. package/lib/module/Flowboard.js.map +1 -1
  4. package/lib/module/components/FlowboardFlow.js +25 -3
  5. package/lib/module/components/FlowboardFlow.js.map +1 -1
  6. package/lib/module/components/FlowboardRenderer.js +413 -79
  7. package/lib/module/components/FlowboardRenderer.js.map +1 -1
  8. package/lib/module/core/apiConfig.js +47 -0
  9. package/lib/module/core/apiConfig.js.map +1 -0
  10. package/lib/module/core/resolverService.js +33 -37
  11. package/lib/module/core/resolverService.js.map +1 -1
  12. package/lib/module/utils/flowboardUtils.js +4 -1
  13. package/lib/module/utils/flowboardUtils.js.map +1 -1
  14. package/lib/typescript/src/Flowboard.d.ts +2 -4
  15. package/lib/typescript/src/Flowboard.d.ts.map +1 -1
  16. package/lib/typescript/src/components/FlowboardFlow.d.ts.map +1 -1
  17. package/lib/typescript/src/components/FlowboardRenderer.d.ts +33 -0
  18. package/lib/typescript/src/components/FlowboardRenderer.d.ts.map +1 -1
  19. package/lib/typescript/src/core/apiConfig.d.ts +6 -0
  20. package/lib/typescript/src/core/apiConfig.d.ts.map +1 -0
  21. package/lib/typescript/src/core/resolverService.d.ts +8 -5
  22. package/lib/typescript/src/core/resolverService.d.ts.map +1 -1
  23. package/lib/typescript/src/index.d.ts +1 -1
  24. package/lib/typescript/src/index.d.ts.map +1 -1
  25. package/lib/typescript/src/types/flowboard.d.ts +2 -0
  26. package/lib/typescript/src/types/flowboard.d.ts.map +1 -1
  27. package/lib/typescript/src/utils/flowboardUtils.d.ts.map +1 -1
  28. package/package.json +18 -19
  29. package/src/Flowboard.ts +17 -16
  30. package/src/components/FlowboardFlow.tsx +37 -2
  31. package/src/components/FlowboardRenderer.tsx +681 -100
  32. package/src/core/apiConfig.ts +59 -0
  33. package/src/core/resolverService.ts +40 -41
  34. package/src/index.tsx +1 -0
  35. package/src/types/flowboard.ts +3 -0
  36. package/src/utils/flowboardUtils.ts +9 -1
@@ -27,9 +27,10 @@ import type {
27
27
  OnboardingEndCallback,
28
28
  OnStepChangeCallback,
29
29
  } from '../types/flowboard';
30
+ import { parseColor } from '../utils/flowboardUtils';
30
31
 
31
32
  const styles = StyleSheet.create({
32
- container: { flex: 1, backgroundColor: '#ffffff' },
33
+ container: { flex: 1 },
33
34
  fullFlex: { flex: 1 },
34
35
  });
35
36
 
@@ -77,6 +78,9 @@ export default function FlowboardFlow(props: FlowboardFlowProps) {
77
78
  const didSyncPagerRef = useRef(false);
78
79
  const completedRef = useRef(false);
79
80
  const flowStartTimeRef = useRef(Date.now());
81
+ const currentScreenData =
82
+ (screens[currentIndex] as Record<string, any> | undefined) ?? null;
83
+ const flowBackgroundColor = resolveScreenBackgroundColor(currentScreenData);
80
84
 
81
85
  useEffect(() => {
82
86
  AnalyticsManager.instance.startSession({ flowData: data });
@@ -406,7 +410,14 @@ export default function FlowboardFlow(props: FlowboardFlowProps) {
406
410
 
407
411
  return (
408
412
  <SafeAreaProvider>
409
- <View style={styles.container}>
413
+ <View
414
+ style={[
415
+ styles.container,
416
+ flowBackgroundColor
417
+ ? { backgroundColor: flowBackgroundColor }
418
+ : undefined,
419
+ ]}
420
+ >
410
421
  <PagerView
411
422
  ref={pagerRef}
412
423
  style={styles.fullFlex}
@@ -461,6 +472,30 @@ function resolveInitialPage(desired: number, total: number): number {
461
472
  return desired;
462
473
  }
463
474
 
475
+ function resolveScreenBackgroundColor(
476
+ screenData: Record<string, any> | null
477
+ ): string | undefined {
478
+ if (!screenData) return undefined;
479
+
480
+ const bgData = screenData.background;
481
+ if (bgData && typeof bgData === 'object') {
482
+ const type = String(bgData.type ?? '').toLowerCase();
483
+ if (type === 'color' && bgData.color !== undefined) {
484
+ return parseColor(bgData.color);
485
+ }
486
+ if (type === 'gradient' && Array.isArray(bgData.colors)) {
487
+ const first = bgData.colors[0];
488
+ if (first !== undefined) return parseColor(first);
489
+ }
490
+ }
491
+
492
+ if (screenData.backgroundColor !== undefined) {
493
+ return parseColor(screenData.backgroundColor);
494
+ }
495
+
496
+ return undefined;
497
+ }
498
+
464
499
  function validateScreen(
465
500
  screenData: Record<string, any>,
466
501
  formData: Record<string, any>