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.
- package/README.md +9 -9
- package/lib/module/Flowboard.js +16 -13
- package/lib/module/Flowboard.js.map +1 -1
- package/lib/module/components/FlowboardFlow.js +25 -3
- package/lib/module/components/FlowboardFlow.js.map +1 -1
- package/lib/module/components/FlowboardRenderer.js +413 -79
- package/lib/module/components/FlowboardRenderer.js.map +1 -1
- package/lib/module/core/apiConfig.js +47 -0
- package/lib/module/core/apiConfig.js.map +1 -0
- package/lib/module/core/resolverService.js +33 -37
- package/lib/module/core/resolverService.js.map +1 -1
- package/lib/module/utils/flowboardUtils.js +4 -1
- package/lib/module/utils/flowboardUtils.js.map +1 -1
- package/lib/typescript/src/Flowboard.d.ts +2 -4
- package/lib/typescript/src/Flowboard.d.ts.map +1 -1
- package/lib/typescript/src/components/FlowboardFlow.d.ts.map +1 -1
- package/lib/typescript/src/components/FlowboardRenderer.d.ts +33 -0
- package/lib/typescript/src/components/FlowboardRenderer.d.ts.map +1 -1
- package/lib/typescript/src/core/apiConfig.d.ts +6 -0
- package/lib/typescript/src/core/apiConfig.d.ts.map +1 -0
- package/lib/typescript/src/core/resolverService.d.ts +8 -5
- package/lib/typescript/src/core/resolverService.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types/flowboard.d.ts +2 -0
- package/lib/typescript/src/types/flowboard.d.ts.map +1 -1
- package/lib/typescript/src/utils/flowboardUtils.d.ts.map +1 -1
- package/package.json +18 -19
- package/src/Flowboard.ts +17 -16
- package/src/components/FlowboardFlow.tsx +37 -2
- package/src/components/FlowboardRenderer.tsx +681 -100
- package/src/core/apiConfig.ts +59 -0
- package/src/core/resolverService.ts +40 -41
- package/src/index.tsx +1 -0
- package/src/types/flowboard.ts +3 -0
- 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
|
|
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
|
|
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>
|