@wavemaker/app-rn-runtime 11.14.1-31.647762 → 11.14.1-33.647787

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 (31) hide show
  1. package/components/basic/bottomsheet/bottomsheet.component.js +1 -1
  2. package/components/basic/bottomsheet/bottomsheet.component.js.map +1 -1
  3. package/components/data/form/form-field/form-field.component.js +5 -0
  4. package/components/data/form/form-field/form-field.component.js.map +1 -1
  5. package/components/data/list/list.component.js +5 -2
  6. package/components/data/list/list.component.js.map +1 -1
  7. package/components/dialogs/dialog/dialog.component.js +1 -1
  8. package/components/dialogs/dialog/dialog.component.js.map +1 -1
  9. package/components/page/page-content/page-content.component.js +141 -13
  10. package/components/page/page-content/page-content.component.js.map +1 -1
  11. package/components/page/page-content/page-content.props.js +2 -0
  12. package/components/page/page-content/page-content.props.js.map +1 -1
  13. package/components/page/page-content/pull-to-refresh.component.js +288 -0
  14. package/components/page/page-content/pull-to-refresh.component.js.map +1 -0
  15. package/core/AppConfig.js.map +1 -1
  16. package/core/base.component.js +14 -0
  17. package/core/base.component.js.map +1 -1
  18. package/core/sticky-wrapper.js +37 -34
  19. package/core/sticky-wrapper.js.map +1 -1
  20. package/npm-shrinkwrap.json +224 -180
  21. package/package-lock.json +224 -180
  22. package/package.json +3 -2
  23. package/runtime/base-fragment.component.js +1 -0
  24. package/runtime/base-fragment.component.js.map +1 -1
  25. package/styles/background.component.js +61 -2
  26. package/styles/background.component.js.map +1 -1
  27. package/styles/style-prop.validator.js +4 -0
  28. package/styles/style-prop.validator.js.map +1 -1
  29. package/styles/style-props.js +2 -0
  30. package/styles/style-props.js.map +1 -1
  31. package/styles/theme.js.map +1 -1
@@ -902,7 +902,7 @@ export default class WmBottomsheet extends BaseComponent {
902
902
  style: {
903
903
  flex: 1
904
904
  },
905
- behavior: 'padding',
905
+ behavior: Platform.OS === 'android' ? this.state.keyboardHeight > 0 ? 'padding' : undefined : 'padding',
906
906
  keyboardVerticalOffset: Platform.OS === 'ios' ? 0 : undefined
907
907
  }, this.renderContent(props)))));
908
908
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["React","createRef","BaseComponent","BaseComponentState","View","PanResponder","Dimensions","TouchableWithoutFeedback","Platform","StatusBar","BackHandler","KeyboardAvoidingView","Keyboard","Modal","Pressable","Gesture","GestureDetector","GestureHandlerRootView","ScrollView","Animated","useAnimatedStyle","withTiming","runOnJS","Easing","makeMutable","cancelAnimation","Animatable","WmBottomsheetProps","DEFAULT_CLASS","createSkeleton","AccessibilityWidgetType","getAccessibilityProps","ModalProvider","SafeAreaInsetsContext","SafeAreaView","OS","RN","require","RNAnimated","__wmPatchedNoNativeDriver","wrap","name","original","value","config","patched","useNativeDriver","_","height","SCREEN_HEIGHT","get","WmBottomsheetState","constructor","args","_defineProperty","undefined","AnimatedBottomsheetContent","translateY","backdropOpacity","sheetHeight","lastGestureDy","styles","props","children","panHandlers","dragHandlePanHandlers","onBackdropPress","onDragHandlePress","getTestProps","enabledragsettle","scrollRef","containerScrollRef","configurePanGesture","panGesture","useMemo","pan","Pan","simultaneousWithExternalGesture","backdropAnimatedStyle","opacity","containerAnimatedStyle","transform","contentStyle","paddingBottom","createElement","Fragment","onPress","_extends","style","backdrop","BOTTOMSHEET","container","dragHandleContainer","dragIconHandle","gesture","WmBottomsheet","getAnimationDuration","distance","velocity","velocityFactor","Math","max","min","abs","calculatedDuration","calculateSheetHeight","bottomsheetheightratio","effectiveRatio","defaultHeight","maxHeightRatio","minimumHeight","maxHeight","screenHeight","calculatedHeight","defaultTopInset","statusBarHeight","open","state","isBottomsheetVisible","updateState","openSheet","close","closeSheet","animate","contentAnimationId","Date","now","contentAnimatableProps","currentHeight","isExpanded","targetHeight","expandedHeight","callback","invokeEventCallback","lastGestureDyShared","duration","animationDuration","easing","out","ease","finished","localModalsOpened","length","top","sheetModalService","hideModal","disableswipedownclose","autoclose","event","_event$endCoordinates","keyboardHeight","endCoordinates","isIosKeyboardHeightSet","_event$endCoordinates2","iosKeyboardHeight","availableHeight","bufferSpace","topInset","adjustedHeight","modal","keyboardAnimationDuration","gestureState","dy","_this$translateY","currentTranslateY","vy","_this$sheetHeight","setTimeout","_this$state$scrollVie","scrollViewRef","current","scrollTo","x","y","animated","scrollOffset","sheetMinimumHeight","bottomsheetminimumheight","enabled","onUpdate","translationY","velocityY","moveX","moveY","vx","velocityX","containerscrollYoffset","newTranslateY","isDragHandleExpanding","expand","disablescrollonrest","expandBottomSheet","onEnd","handleSwipeGesture","onFinalize","success","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onPanResponderTerminate","offsetY","nativeEvent","contentOffset","isScrolling","handleClose","requestAnimationFrame","key","Consumer","insets","bottom","left","right","bottomInset","absoluteStyle","rootStyle","root","_background","panResponder","dragHandlePanResponder","handleBackdropPress","handleDragHandlePress","bind","containerscrollViewRef","issticky","enablemodalsupport","sheetContentContainer","overflow","ref","contentContainerStyle","sheetScrollContent","alwaysBounceVertical","alwaysBounceHorizontal","bounces","showsVerticalScrollIndicator","scrollEventThrottle","onScroll","handleScroll","nestedScrollEnabled","scrollEnabled","edges","map","o","i","onStartShouldSetResponder","onResponderEnd","isModal","modalOverlay","centered","centeredOverlay","zIndex","elevationIndex","elevation","modalStyle","e","stopPropagation","content","subscribe","forceUpdate","expandedRatio","bottomsheetexpandedheightratio","expandedDefaultHeight","effectiveExpandedRatio","minimumExpandedHeight","showonrender","refresh","showModal","options","exists","find","list","onOpen","idx","findIndex","onClose","splice","componentDidMount","backHandlerSubscription","addEventListener","handleBackPress","keyboardDidShowListener","addListener","onKeyboardShow","keyboardDidHideListener","onKeyboardHide","componentWillUnmount","remove","componentDidUpdate","prevProps","onPropertyChange","$new","$old","closeSheetImmediate","renderSkeleton","theme","skeleton","width","renderWidget","hasButtonNavigation","wrapWithSafeArea","flex","visible","transparent","animationType","onRequestClose","statusBarTranslucent","behavior","keyboardVerticalOffset","renderContent"],"sources":["bottomsheet.component.tsx"],"sourcesContent":["import React, { createRef } from 'react';\nimport { BaseComponent, BaseComponentState } from '@wavemaker/app-rn-runtime/core/base.component';\nimport { View, PanResponder, Dimensions, TouchableWithoutFeedback, Platform, PanResponderGestureState, StatusBar, BackHandler, DimensionValue, KeyboardAvoidingView, Keyboard, EmitterSubscription, Modal, NativeEventSubscription, Pressable, ViewStyle } from 'react-native';\nimport { Gesture, GestureDetector, GestureHandlerRootView, ScrollView } from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedStyle,\n withTiming,\n runOnJS,\n Easing,\n SharedValue,\n makeMutable,\n cancelAnimation\n} from 'react-native-reanimated';\nimport { AnimatableProps } from 'react-native-animatable';\nimport * as Animatable from 'react-native-animatable';\nimport WmBottomsheetProps from './bottomsheet.props';\nimport { DEFAULT_CLASS, WmBottomsheetStyles } from './bottomsheet.styles';\nimport { createSkeleton } from '../skeleton/skeleton.component';\nimport { AccessibilityWidgetType, getAccessibilityProps } from '@wavemaker/app-rn-runtime/core/accessibility';\nimport { ModalProvider, ModalService, ModalOptions } from '@wavemaker/app-rn-runtime/core/modal.service';\nimport { SafeAreaInsetsContext, SafeAreaView } from 'react-native-safe-area-context';\n\n\n// Web-only: Runs all bottom sheet animations on the JS thread (sets useNativeDriver to false)\n// Prevents errors on web where native driver animations are not supported\n// Web - Animated api is used from animation\nif (Platform.OS === 'web') {\n try {\n const RN: any = require('react-native');\n const RNAnimated: any = RN && RN.Animated;\n if (RNAnimated && !RNAnimated.__wmPatchedNoNativeDriver) {\n const wrap = (name: string) => {\n const original = RNAnimated[name];\n if (typeof original === 'function') {\n RNAnimated[name] = (value: any, config: any) => {\n const patched = { ...(config || {}), useNativeDriver: false };\n return original(value, patched);\n };\n }\n };\n wrap('timing');\n wrap('spring');\n wrap('decay');\n RNAnimated.__wmPatchedNoNativeDriver = true;\n }\n } catch (_) {\n // noop\n }\n}\n\nconst { height: SCREEN_HEIGHT } = Dimensions.get('screen');\nexport class WmBottomsheetState extends BaseComponentState<WmBottomsheetProps> {\n scrollViewRef = createRef<ScrollView>();\n isScrolling = false;\n scrollOffset = 0;\n isExpanded = false;\n isBottomsheetVisible = false;\n keyboardHeight = 0;\n localModalsOpened: ModalOptions[] = [];\n lastGestureDy = 0;\n contentAnimationId?: number = 0;\n contentAnimatableProps?: AnimatableProps<ViewStyle> = undefined;\n}\n\n// Animated wrapper component that uses hooks\nconst AnimatedBottomsheetContent = ({\n translateY,\n backdropOpacity,\n sheetHeight,\n lastGestureDy,\n styles,\n props,\n children,\n panHandlers,\n dragHandlePanHandlers,\n onBackdropPress,\n onDragHandlePress,\n getTestProps,\n enabledragsettle,\n scrollRef,\n containerScrollRef,\n configurePanGesture\n\n}: any) => {\n\n\n // Simple RNGH GestureDetector attached to the same view as the PanResponder (panHandlers).\n // No thresholds/validation: logs translationY directly during pan.\n const panGesture = React.useMemo(() => {\n // Create base Pan gesture\n const pan = Gesture.Pan().runOnJS(true);\n\n // Add external gestures for ScrollViews (container widget scrollview)\n if (scrollRef && containerScrollRef) {\n pan.simultaneousWithExternalGesture(\n scrollRef as any,\n containerScrollRef as any\n );\n } else if (scrollRef) {\n pan.simultaneousWithExternalGesture(scrollRef as any);\n } else if (containerScrollRef) {\n pan.simultaneousWithExternalGesture(containerScrollRef as any);\n }\n\n // Apply custom logic from parent BottomSheet class\n if (configurePanGesture) {\n configurePanGesture(pan);\n }\n\n return pan;\n }, [scrollRef, containerScrollRef, configurePanGesture]);\n\n const backdropAnimatedStyle = useAnimatedStyle(() => ({\n opacity: backdropOpacity.value\n }));\n\n const containerAnimatedStyle = useAnimatedStyle(() => ({\n height: sheetHeight.value,\n transform: [{ translateY: translateY.value }]\n }));\n\n const contentStyle = useAnimatedStyle(() => {\n if (enabledragsettle && lastGestureDy.value > 0) {\n return {\n paddingBottom: lastGestureDy.value\n };\n }\n return {};\n });\n\n return (\n <>\n <TouchableWithoutFeedback onPress={onBackdropPress}>\n <Animated.View\n style={[styles.backdrop, backdropAnimatedStyle]}\n {...getTestProps('backdrop')}\n {...getAccessibilityProps(AccessibilityWidgetType.BOTTOMSHEET, props)}\n />\n </TouchableWithoutFeedback>\n\n <Animated.View\n style={[styles.container, containerAnimatedStyle]}\n // {...panHandlers}\n >\n <View style={styles.dragHandleContainer} {...dragHandlePanHandlers}>\n <Pressable onPress={onDragHandlePress}>\n <View style={styles.dragIconHandle} {...getTestProps('draghandle')} />\n </Pressable>\n </View>\n <GestureDetector gesture={panGesture}>\n {children(contentStyle)}\n </GestureDetector>\n </Animated.View>\n </>\n );\n};\n\nexport default class WmBottomsheet extends BaseComponent<WmBottomsheetProps, WmBottomsheetState, WmBottomsheetStyles> {\n private calculatedHeight: number;\n private expandedHeight: number;\n private defaultHeight: number = 0.5;\n private expandedDefaultHeight: number = 0.8;\n private minimumHeight: number = 0.01;\n private minimumExpandedHeight: number = 0.5;\n private maxHeight: number = 1.0;\n private animationDuration: number = 400;\n private keyboardAnimationDuration: number = Platform.OS === 'ios' ? 250 : 275;\n private statusBarHeight: number = StatusBar.currentHeight || 0;\n private defaultTopInset: number = 44;\n private maxHeightRatio: number = 0;\n private keyboardDidShowListener!: EmitterSubscription;\n private keyboardDidHideListener!: EmitterSubscription;\n private backHandlerSubscription: NativeEventSubscription | null = null;\n private topInset: number = 0;\n private iosKeyboardHeight: number = 0;\n private isIosKeyboardHeightSet: boolean = false;\n private sheetModalService: ModalService;\n private isDragHandleExpanding: boolean = false;\n //container widget scrollview ref and y offset value\n private containerscrollViewRef: any = null\n private containerscrollYoffset: number = 0\n\n\n // Reanimated shared values - created once and reused\n private translateY!: SharedValue<number>;\n private backdropOpacity!: SharedValue<number>;\n private sheetHeight!: SharedValue<number>;\n private lastGestureDyShared!: SharedValue<number>;\n\n // Helper method to calculate animation duration based on distance and velocity\n private getAnimationDuration(distance: number, velocity: number): number {\n // Base duration on distance, but cap it between 200-500ms\n // Higher velocity = shorter duration for snappier feel\n const velocityFactor = Math.max(0.3, Math.min(1, 1 - Math.abs(velocity) / 2));\n const calculatedDuration = Math.abs(distance) * velocityFactor;\n return Math.min(500, Math.max(200, calculatedDuration));\n }\n\n private calculateSheetHeight(bottomsheetheightratio: number): number {\n // Use default height if ratio not provided, but ensure it's not below minimum\n const effectiveRatio = bottomsheetheightratio || this.defaultHeight;\n this.maxHeightRatio = Math.max(\n this.minimumHeight,\n Math.min(effectiveRatio, this.maxHeight)\n );\n\n const screenHeight = Dimensions.get('screen').height;\n let calculatedHeight = screenHeight * this.maxHeightRatio;\n\n if (Platform.OS === 'ios') {\n // Subtract top inset bar height for ios only if bottomsheetheightratio is 0.9\n if (this.maxHeightRatio >= 0.9) {\n calculatedHeight -= this.defaultTopInset;\n }\n }\n else if (Platform.OS === 'android') {\n // Subtract status bar height for Android only if bottomsheetheightratio is 0.9\n if (this.maxHeightRatio >= 0.9) {\n calculatedHeight -= this.statusBarHeight;\n }\n }\n return calculatedHeight;\n }\n\n open() {\n if (!this.state.isBottomsheetVisible)\n this.updateState({\n isBottomsheetVisible: true\n } as WmBottomsheetState);\n this.openSheet();\n }\n\n close() {\n if (this.state.isBottomsheetVisible) {\n this.closeSheet();\n }\n }\n\n isSheetExpanded = () => {\n return this.state.isExpanded\n }\n\n expandBottomSheet = () => {\n const targetHeight = Math.min(this.expandedHeight, SCREEN_HEIGHT);\n const callback = () => {\n this.updateState({\n isExpanded: true,\n lastGestureDy: 0\n } as WmBottomsheetState);\n this.invokeEventCallback('onExpand', [null, this]);\n };\n\n // Reset drag settle value immediately on UI thread\n this.lastGestureDyShared.value = 0;\n\n if (this.props.enabledragsettle) {\n // Synchronize both animations to complete together\n this.sheetHeight.value = withTiming(targetHeight, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n this.translateY.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n } else {\n // Only animate height for non-drag-settle mode\n this.sheetHeight.value = withTiming(targetHeight, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n }\n }\n\n collapseBottomSheet = () => {\n const callback = () => {\n this.updateState({\n isExpanded: false,\n lastGestureDy: 0\n } as WmBottomsheetState);\n this.invokeEventCallback('onCollapse', [null, this]);\n };\n\n // Reset drag settle value immediately on UI thread\n this.lastGestureDyShared.value = 0;\n\n this.translateY.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n this.sheetHeight.value = withTiming(this.calculatedHeight, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n }\n\n public animate(props: AnimatableProps<ViewStyle>) {\n this.updateState({\n contentAnimationId: Date.now(),\n contentAnimatableProps: props\n } as WmBottomsheetState);\n }\n\n constructor(props: WmBottomsheetProps) {\n super(props, DEFAULT_CLASS, new WmBottomsheetProps(), new WmBottomsheetState());\n this.calculatedHeight = this.calculateSheetHeight(props.bottomsheetheightratio);\n //container srollview ref\n this.subscribe('containerScrollViewReady', (ref: React.RefObject<any>) => {\n if (ref && ref.current && this.containerscrollViewRef !== ref) {\n this.containerscrollViewRef = ref;\n this.forceUpdate();\n }\n });\n //container scrollview y offset value\n this.subscribe('scroll', (e: any) => {\n const offsetY = e.nativeEvent.contentOffset.y;\n this.containerscrollYoffset = offsetY\n });\n // Use bottomsheetexpandedheightratio if provided, otherwise use expandedDefaultHeight\n const expandedRatio = props.bottomsheetexpandedheightratio || this.expandedDefaultHeight;\n const effectiveExpandedRatio = Math.max(\n this.minimumExpandedHeight,\n Math.min(expandedRatio, this.maxHeight)\n );\n\n this.expandedHeight = SCREEN_HEIGHT * effectiveExpandedRatio;\n\n if (Platform.OS === 'android') {\n if (effectiveExpandedRatio >= 0.9) {\n this.expandedHeight -= this.statusBarHeight;\n }\n }\n if (Platform.OS === 'ios') {\n if (effectiveExpandedRatio >= 0.9) {\n this.expandedHeight -= this.defaultTopInset;\n }\n }\n\n // Initialize shared values in constructor using makeMutable (not hooks)\n // makeMutable can be called outside of React components\n this.translateY = makeMutable(SCREEN_HEIGHT);\n this.backdropOpacity = makeMutable(0);\n this.sheetHeight = makeMutable(this.calculatedHeight);\n this.lastGestureDyShared = makeMutable(0);\n\n this.updateState({\n isBottomsheetVisible: this.props.showonrender || false\n } as WmBottomsheetState);\n\n // Initialize values immediately to prevent flicker\n if (this.props.showonrender) {\n this.translateY.value = 0;\n this.backdropOpacity.value = 1;\n }\n\n // Local ModalService for content rendered inside Bottomsheet\n this.sheetModalService = {\n refresh: () => this.forceUpdate(),\n showModal: (options: ModalOptions) => {\n const exists = this.state.localModalsOpened.find(o => o === options);\n if (!exists) {\n // ensure high z-index within sheet\n (options as any).elevationIndex = 9999 + this.state.localModalsOpened.length + 1;\n const list = [...this.state.localModalsOpened, options];\n this.updateState({ localModalsOpened: list } as WmBottomsheetState, () => {\n setTimeout(() => options.onOpen && options.onOpen(), 0);\n });\n }\n },\n hideModal: (options?: ModalOptions) => {\n const list = [...this.state.localModalsOpened];\n const idx = options ? list.findIndex(o => o === options) : (list.length - 1);\n if (idx >= 0) {\n const o = list[idx];\n o && o.onClose && o.onClose();\n list.splice(idx, 1);\n this.updateState({ localModalsOpened: list } as WmBottomsheetState);\n }\n }\n };\n }\n\n componentDidMount() {\n super.componentDidMount();\n\n // Trigger animation after mount if showonrender is true\n if (this.state.isBottomsheetVisible) {\n // Use requestAnimationFrame to ensure animation happens after initial render\n requestAnimationFrame(() => {\n this.openSheet();\n });\n }\n\n if (Platform.OS === 'android') {\n this.backHandlerSubscription = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);\n }\n this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this.onKeyboardShow);\n this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this.onKeyboardHide);\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n if (this.backHandlerSubscription) {\n this.backHandlerSubscription.remove();\n this.backHandlerSubscription = null;\n }\n if (this.keyboardDidShowListener) {\n this.keyboardDidShowListener.remove();\n }\n if (this.keyboardDidHideListener) {\n this.keyboardDidHideListener.remove();\n }\n }\n\n private handleBackPress = () => {\n // Close top-most local modal first, if any\n if (this.state.localModalsOpened && this.state.localModalsOpened.length > 0) {\n const top = this.state.localModalsOpened[this.state.localModalsOpened.length - 1];\n this.sheetModalService.hideModal(top);\n return true;\n }\n if (this.state.isBottomsheetVisible) {\n if (!this.props.disableswipedownclose && this.props.autoclose !== 'disabled') {\n this.closeSheet();\n }\n return true; // Prevent default back action\n }\n return false;\n };\n\n private onKeyboardShow = (event: any) => {\n let keyboardHeight = event.endCoordinates?.height || 0;\n //only storing ios keyboard height once as first time keyboard open (to avoid scroll flickring issue in ios in text widget)\n if (!this.isIosKeyboardHeightSet) {\n this.iosKeyboardHeight = event.endCoordinates?.height + 40;\n this.isIosKeyboardHeightSet = true;\n }\n // Calculate available space after keyboard\n const availableHeight = SCREEN_HEIGHT - (Platform.OS == 'ios' ? this.iosKeyboardHeight : keyboardHeight);\n // Calculate adjusted sheet height to fit within available space\n // Leave some buffer space for the drag handle and safe area\n const bufferSpace = (Platform.OS === 'ios' ? this.topInset : this.statusBarHeight) + 20;\n const adjustedHeight = availableHeight - bufferSpace;\n\n if (this.sheetHeight && Platform.OS == 'android' && this.props.modal) {\n // Use platform-specific keyboard animation duration for smooth synchronization\n this.sheetHeight.value = withTiming(adjustedHeight, {\n duration: this.keyboardAnimationDuration,\n easing: Easing.out(Easing.ease)\n });\n }\n\n this.updateState({\n keyboardHeight: keyboardHeight,\n } as WmBottomsheetState);\n };\n\n private onKeyboardHide = () => {\n if (this.sheetHeight && Platform.OS == 'android' && this.props.modal) {\n // Use platform-specific keyboard animation duration for smooth synchronization\n this.sheetHeight.value = withTiming(\n this.state.isExpanded ? this.expandedHeight : this.calculatedHeight,\n {\n duration: this.keyboardAnimationDuration,\n easing: Easing.out(Easing.ease)\n }\n );\n }\n\n this.updateState({\n keyboardHeight: 0,\n } as WmBottomsheetState);\n };\n\n componentDidUpdate(prevProps: WmBottomsheetProps) {\n if (prevProps.bottomsheetheightratio !== this.props.bottomsheetheightratio) {\n this.calculatedHeight = this.calculateSheetHeight(this.props.bottomsheetheightratio);\n if (this.sheetHeight) {\n this.sheetHeight.value = this.calculatedHeight;\n }\n }\n }\n\n handleSwipeGesture = (gestureState: PanResponderGestureState) => {\n\n // Only reset lastGestureDy for traditional behavior, not for drag and settle\n if (!this.props.enabledragsettle) {\n this.updateState({\n lastGestureDy: 0\n } as WmBottomsheetState);\n if (this.lastGestureDyShared) {\n this.lastGestureDyShared.value = 0;\n }\n }\n\n if (this.props.enabledragsettle && gestureState.dy > 0) {\n const currentTranslateY = this.translateY?.value || 0;\n\n if (gestureState.vy > 0.5 && !this.props.disableswipedownclose) {\n this.closeSheet();\n return;\n }\n\n if (this.translateY && this.lastGestureDyShared) {\n this.translateY.value = currentTranslateY;\n this.lastGestureDyShared.value = currentTranslateY;\n }\n\n this.updateState({\n isExpanded: false,\n lastGestureDy: currentTranslateY\n } as WmBottomsheetState);\n return;\n }\n\n if (gestureState.dy > 0) {\n if (this.state.isExpanded || this.props.disableswipedownclose) {\n if (gestureState.dy < this.expandedHeight / 4 || this.props.disableswipedownclose) {\n //reseting bottom sheet scrollview offset value to fix scrollview automatic scroll issue while collpsing the bottom sheet\n setTimeout(() => {\n if (this.state.scrollViewRef?.current) {\n this.state.scrollViewRef.current.scrollTo({ x: 0, y: 0, animated: false });\n this.updateState({ scrollOffset: 0 } as WmBottomsheetState);\n }\n }, this.animationDuration);\n let sheetMinimumHeight = this.props.bottomsheetminimumheight || 0.1;\n const targetHeight = this.props.disableswipedownclose ? sheetMinimumHeight * SCREEN_HEIGHT : this.calculatedHeight;\n const currentHeight = this.sheetHeight?.value || this.expandedHeight;\n const distance = Math.abs(currentHeight - targetHeight);\n const duration = this.getAnimationDuration(distance, gestureState.vy);\n\n const callback = () => {\n this.updateState({\n isExpanded: false\n } as WmBottomsheetState);\n this.invokeEventCallback('onCollapse', [null, this]);\n };\n\n if (this.translateY && this.sheetHeight) {\n this.translateY.value = withTiming(0, {\n duration: duration,\n easing: Easing.out(Easing.ease)\n });\n this.sheetHeight.value = withTiming(\n targetHeight,\n {\n duration: duration,\n easing: Easing.out(Easing.ease)\n },\n (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n }\n );\n }\n } else if ((gestureState.dy > this.expandedHeight / 4 || gestureState.vy > 0.5) && !this.props.disableswipedownclose) {\n this.closeSheet();\n }\n } else {\n if (this.props.disableswipedownclose) {\n this.openSheet();\n return;\n }\n if ((gestureState.dy > 100 || gestureState.vy > 0.5) && !this.props.disableswipedownclose) {\n this.closeSheet();\n } else {\n this.openSheet();\n }\n }\n }\n }\n\n private configurePanGesture = (pan: any) => {\n pan\n .enabled(true)\n .onUpdate((event: any) => { // ← Add : any\n const gestureState = {\n dy: event.translationY,\n vy: event.velocityY,\n moveX: event.x,\n moveY: event.y,\n vx: event.velocityX\n };\n if (gestureState.dy > 0 && this.translateY && this.lastGestureDyShared && this.state.scrollOffset <= 0 && this.containerscrollYoffset <= 0) {\n const newTranslateY = Math.max(0, this.lastGestureDyShared.value + gestureState.dy);\n this.translateY.value = newTranslateY;\n // Reset expand flag if dragging down\n this.isDragHandleExpanding = false;\n }\n else if (gestureState.dy < 0 && this.props.expand && this.props.bottomsheetheightratio !== 1 && !this.isDragHandleExpanding && !this.state.isExpanded && this.props.disablescrollonrest) {\n // Only trigger expand once with threshold of -50px upward drag\n this.isDragHandleExpanding = true;\n this.expandBottomSheet();\n }\n // ... rest of logic\n })\n .onEnd((event: any) => { // ← Add : any\n const gestureState = {\n dy: event.translationY,\n vy: event.velocityY,\n moveX: event.x,\n moveY: event.y,\n vx: event.velocityX\n };\n if (gestureState.dy > 0 && this.state.scrollOffset <= 0 && this.containerscrollYoffset <= 0) {\n this.handleSwipeGesture(gestureState as any);\n }\n })\n .onFinalize((event: any, success: boolean) => { // ← Add types\n if (!success) {\n this.openSheet()\n }\n });\n\n return pan;\n };\n // panResponder for bottom sheet scroll view\n panResponder = PanResponder.create({\n onStartShouldSetPanResponder: (_, gestureState) => {\n if (this.props.disablescrollonrest && !this.state.isExpanded) {\n return true\n }\n // Only handle the gesture if we're at the top and swiping down\n return gestureState.dy > 0 && this.state.scrollOffset <= 0;\n\n },\n\n onMoveShouldSetPanResponder: (_, gestureState) => {\n if (this.props.disablescrollonrest && !this.state.isExpanded) {\n return Math.abs(gestureState.dy) > 2;\n }\n // Only handle the gesture if we're at the top and swiping down\n return gestureState.dy > 0 && this.state.scrollOffset <= 0;\n\n },\n\n onPanResponderGrant: () => {\n // Cancel any ongoing animations when user starts dragging\n if (this.translateY) {\n cancelAnimation(this.translateY);\n }\n },\n\n onPanResponderMove: (_, gestureState) => {\n\n if (gestureState.dy > 0 && this.translateY && this.lastGestureDyShared) {\n const newTranslateY = Math.max(0, this.lastGestureDyShared.value + gestureState.dy);\n this.translateY.value = newTranslateY;\n // Reset expand flag if dragging down\n this.isDragHandleExpanding = false;\n }\n else if (gestureState.dy < 0 && this.props.expand && this.props.bottomsheetheightratio !== 1 && !this.isDragHandleExpanding && !this.state.isExpanded) {\n // Only trigger expand once with threshold of -50px upward drag\n this.isDragHandleExpanding = true;\n this.expandBottomSheet();\n }\n },\n\n onPanResponderRelease: (_, gestureState) => {\n this.handleSwipeGesture(gestureState);\n },\n\n onPanResponderTerminate: () => {\n this.openSheet();\n },\n });\n\n //pan repsoneder for bottom sheet dragable container\n dragHandlePanResponder = PanResponder.create({\n onStartShouldSetPanResponder: () => true,\n onMoveShouldSetPanResponder: () => true,\n\n onPanResponderGrant: () => {\n // Cancel any ongoing animations when user starts dragging\n if (this.translateY) {\n cancelAnimation(this.translateY);\n }\n // Reset the expand flag\n this.isDragHandleExpanding = false;\n },\n\n onPanResponderMove: (_, gestureState) => {\n if (gestureState.dy > 0 && this.translateY && this.lastGestureDyShared) {\n const newTranslateY = Math.max(0, this.lastGestureDyShared.value + gestureState.dy);\n this.translateY.value = newTranslateY;\n // Reset expand flag if dragging down\n this.isDragHandleExpanding = false;\n } else if (gestureState.dy < -50 && this.props.expand && this.props.bottomsheetheightratio !== 1 && !this.isDragHandleExpanding && !this.state.isExpanded) {\n // Only trigger expand once with threshold of -50px upward drag\n this.isDragHandleExpanding = true;\n this.expandBottomSheet();\n }\n },\n onPanResponderRelease: (_, gestureState) => {\n this.isDragHandleExpanding = false;\n this.handleSwipeGesture(gestureState);\n },\n });\n\n handleScroll = (event: any): any => {\n if (this.state.keyboardHeight > 0) return null;\n const offsetY = event.nativeEvent.contentOffset.y;\n this.updateState({\n isScrolling: offsetY > 0,\n scrollOffset: offsetY\n } as WmBottomsheetState);\n };\n\n openSheet = () => {\n const callback = () => {\n this.updateState({\n lastGestureDy: 0,\n } as WmBottomsheetState);\n this.invokeEventCallback('onOpened', [null, this]);\n };\n\n // Reset drag settle value immediately on UI thread\n if (this.lastGestureDyShared) {\n this.lastGestureDyShared.value = 0;\n }\n\n if (this.translateY && this.backdropOpacity) {\n this.translateY.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n // Backdrop animation synchronized with sheet animation\n this.backdropOpacity.value = withTiming(1, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n }\n };\n\n private handleClose = () => {\n this.updateState({\n isBottomsheetVisible: false\n } as WmBottomsheetState);\n this.invokeEventCallback('onClose', [null, this]);\n };\n\n closeSheet = () => {\n \n\n const callback = () => {\n // Reset sheet height after close\n if (this.sheetHeight) {\n this.sheetHeight.value = this.calculatedHeight;\n }\n this.updateState({\n isExpanded: false,\n localModalsOpened: [] as ModalOptions[],\n scrollOffset: 0,\n contentAnimationId: 0, \n contentAnimatableProps: undefined \n } as WmBottomsheetState);\n this.containerscrollYoffset = 0\n this.handleClose();\n };\n\n if (this.translateY && this.backdropOpacity) {\n this.translateY.value = withTiming(SCREEN_HEIGHT, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n // Backdrop animation synchronized with sheet animation\n this.backdropOpacity.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n }\n };\n\n closeSheetImmediate = () => {\n if (this.translateY && this.backdropOpacity && this.lastGestureDyShared) {\n this.translateY.value = SCREEN_HEIGHT;\n this.backdropOpacity.value = 0;\n this.lastGestureDyShared.value = 0;\n }\n\n this.updateState({\n lastGestureDy: 0,\n isExpanded: false,\n isBottomsheetVisible: false,\n localModalsOpened: [] as ModalOptions[],\n contentAnimationId: 0,\n contentAnimatableProps: undefined\n } as WmBottomsheetState);\n\n requestAnimationFrame(() => {\n if (this.sheetHeight) {\n this.sheetHeight.value = this.calculatedHeight;\n }\n });\n };\n\n public onPropertyChange(name: string, $new: any, $old: any): void {\n super.onPropertyChange(name, $new, $old);\n switch (name) {\n case \"showonrender\":\n if ($new) {\n this.updateState({\n isBottomsheetVisible: $new || false\n } as WmBottomsheetState);\n if (this.state.isBottomsheetVisible) {\n this.openSheet && this.openSheet();\n }\n } else {\n this.closeSheetImmediate && this.closeSheetImmediate();\n }\n break;\n }\n }\n\n public renderSkeleton(props: WmBottomsheetProps) {\n return createSkeleton(this.theme, this.styles.skeleton, {\n ...this.styles.root,\n width: this.styles.root.width as DimensionValue,\n height: this.styles.root.height as DimensionValue\n });\n }\n\n // Class methods to prevent recreation on every render\n private handleBackdropPress = () => {\n if (this.props.autoclose !== 'disabled') {\n this.closeSheet();\n }\n };\n\n private handleDragHandlePress = () => {\n this.invokeEventCallback('onDraghandleiconclick', [null, this]);\n };\n\n private renderAnimatedSheetChildren = (children: React.ReactNode) => {\n if (!this.state.contentAnimatableProps) {\n return children;\n }\n return (\n <Animatable.View\n key={this.state.contentAnimationId}\n {...this.state.contentAnimatableProps}\n >\n {children}\n </Animatable.View>\n );\n };\n\n private renderContent = (props: WmBottomsheetProps) => {\n // Don't render if shared values aren't initialized yet\n if (!this.translateY || !this.backdropOpacity || !this.sheetHeight || !this.lastGestureDyShared) {\n return null;\n }\n\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets = { top: 0, bottom: 0, left: 0, right: 0 }) => {\n // Store topInset for later use (avoid mutation during render)\n const topInset = insets?.top || 0;\n const bottomInset = insets?.bottom || 0;\n // Update the instance variable outside of render cycle\n if (this.topInset !== topInset) {\n requestAnimationFrame(() => {\n this.topInset = topInset;\n });\n }\n const absoluteStyle = {\n top: 0,\n left: 0,\n right: 0,\n }\n const rootStyle = props.modal\n ? [this.styles.root, absoluteStyle]\n : this.styles.root;\n return (\n <View style={rootStyle} {...this.getTestProps('keyboardview')}>\n {this._background}\n\n <AnimatedBottomsheetContent\n translateY={this.translateY}\n backdropOpacity={this.backdropOpacity}\n sheetHeight={this.sheetHeight}\n lastGestureDy={this.lastGestureDyShared}\n styles={this.styles}\n props={props}\n panHandlers={this.panResponder.panHandlers}\n dragHandlePanHandlers={this.dragHandlePanResponder.panHandlers}\n onBackdropPress={this.handleBackdropPress}\n onDragHandlePress={this.handleDragHandlePress}\n getTestProps={this.getTestProps.bind(this)}\n enabledragsettle={props.enabledragsettle}\n scrollRef={this.state.scrollViewRef}\n containerScrollRef={this.containerscrollViewRef}\n configurePanGesture={this.configurePanGesture}\n >\n {(contentStyle: any) => (\n props.issticky ? (\n props.enablemodalsupport ? (\n <ModalProvider value={this.sheetModalService}>\n <Animated.View style={[contentStyle, this.styles.sheetContentContainer, { overflow: 'hidden' }]}>\n {props.children}\n </Animated.View>\n </ModalProvider>\n ) : (\n <Animated.View style={[contentStyle, this.styles.sheetContentContainer, { overflow: 'hidden' }]}>\n {props.children}\n </Animated.View>\n )\n ) : (<ScrollView\n ref={this.state.scrollViewRef}\n style={this.styles.sheetContentContainer}\n contentContainerStyle={[this.styles.sheetScrollContent]}\n alwaysBounceVertical={false}\n alwaysBounceHorizontal={false}\n bounces={false}\n showsVerticalScrollIndicator={false}\n scrollEventThrottle={16}\n onScroll={this.handleScroll}\n nestedScrollEnabled={true}\n scrollEnabled={!props.issticky && (!props.disablescrollonrest || this.state.isExpanded)}\n {...this.getTestProps('scorllview')}\n >\n {props.enablemodalsupport ? (\n <ModalProvider value={this.sheetModalService}>\n <Animated.View style={contentStyle}>\n {props.children}\n </Animated.View>\n </ModalProvider>\n ) : (\n <Animated.View style={contentStyle}>\n {props.children}\n </Animated.View>\n )}\n </ScrollView>)\n )}\n </AnimatedBottomsheetContent>\n {/*Adding SafeAreaView to ensure the bottom sheet is rendered above the Android button navigation bar when modal prop is false */}\n {(Platform.OS === 'android' && !this.props.modal && bottomInset > 40) && <SafeAreaView edges={['bottom']} />}\n\n {props.enablemodalsupport && this.state.localModalsOpened && this.state.localModalsOpened.map((o, i) => (\n <View\n key={(o.name || '') + i}\n onStartShouldSetResponder={() => true}\n onResponderEnd={() => o.isModal && this.sheetModalService.hideModal(o)}\n style={[\n this.styles.modalOverlay,\n (o as any).centered ? this.styles.centeredOverlay : null,\n { zIndex: (o as any).elevationIndex || 9999, elevation: (o as any).elevationIndex || 9999 },\n (o.modalStyle || {})\n ]}\n >\n <View\n style={[(o.contentStyle || {})]}\n onStartShouldSetResponder={() => true}\n onResponderEnd={(e) => e.stopPropagation()}\n >\n {o.content}\n </View>\n </View>\n ))}\n </View>\n );\n }}\n </SafeAreaInsetsContext.Consumer>\n );\n };\n\n renderWidget(props: WmBottomsheetProps) {\n if (!this.state.isBottomsheetVisible) return null;\n\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets = { top: 0, bottom: 0, left: 0, right: 0 }) => {\n // Use SafeAreaView on Android with button navigation to render the bottom sheet above the nav bar (when modal props is true)\n // Button navigation is identified when bottom inset >= 40 \n const hasButtonNavigation = Platform.OS === 'android' && (insets?.bottom || 0) >= 40;\n\n const wrapWithSafeArea = (children: React.ReactNode) => {\n if (hasButtonNavigation) {\n return <SafeAreaView style={{ flex: 1 }}>{children}</SafeAreaView>;\n }\n return children;\n };\n\n if (props.modal) {\n return (\n <Modal\n visible={this.state.isBottomsheetVisible}\n transparent={true}\n animationType=\"none\"\n onRequestClose={() => {\n if (!this.props.disableswipedownclose && this.props.autoclose !== 'disabled') {\n this.closeSheet();\n }\n }}\n statusBarTranslucent={false}\n >\n <GestureHandlerRootView style={{ flex: 1 }}>\n {wrapWithSafeArea(\n <KeyboardAvoidingView\n style={{ flex: 1 }}\n behavior={'padding'}\n keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : undefined}\n >\n {this.renderContent(props)}\n </KeyboardAvoidingView>\n )}\n </GestureHandlerRootView>\n </Modal>\n );\n } else {\n return this.renderContent(props);\n }\n }}\n </SafeAreaInsetsContext.Consumer>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","createRef","BaseComponent","BaseComponentState","View","PanResponder","Dimensions","TouchableWithoutFeedback","Platform","StatusBar","BackHandler","KeyboardAvoidingView","Keyboard","Modal","Pressable","Gesture","GestureDetector","GestureHandlerRootView","ScrollView","Animated","useAnimatedStyle","withTiming","runOnJS","Easing","makeMutable","cancelAnimation","Animatable","WmBottomsheetProps","DEFAULT_CLASS","createSkeleton","AccessibilityWidgetType","getAccessibilityProps","ModalProvider","SafeAreaInsetsContext","SafeAreaView","OS","RN","require","RNAnimated","__wmPatchedNoNativeDriver","wrap","name","original","value","config","patched","useNativeDriver","_","height","SCREEN_HEIGHT","get","WmBottomsheetState","constructor","args","_defineProperty","undefined","AnimatedBottomsheetContent","translateY","backdropOpacity","sheetHeight","lastGestureDy","styles","props","children","panHandlers","dragHandlePanHandlers","onBackdropPress","onDragHandlePress","getTestProps","enabledragsettle","scrollRef","containerScrollRef","configurePanGesture","panGesture","useMemo","pan","Pan","simultaneousWithExternalGesture","backdropAnimatedStyle","opacity","containerAnimatedStyle","transform","contentStyle","paddingBottom","createElement","Fragment","onPress","_extends","style","backdrop","BOTTOMSHEET","container","dragHandleContainer","dragIconHandle","gesture","WmBottomsheet","getAnimationDuration","distance","velocity","velocityFactor","Math","max","min","abs","calculatedDuration","calculateSheetHeight","bottomsheetheightratio","effectiveRatio","defaultHeight","maxHeightRatio","minimumHeight","maxHeight","screenHeight","calculatedHeight","defaultTopInset","statusBarHeight","open","state","isBottomsheetVisible","updateState","openSheet","close","closeSheet","animate","contentAnimationId","Date","now","contentAnimatableProps","currentHeight","isExpanded","targetHeight","expandedHeight","callback","invokeEventCallback","lastGestureDyShared","duration","animationDuration","easing","out","ease","finished","localModalsOpened","length","top","sheetModalService","hideModal","disableswipedownclose","autoclose","event","_event$endCoordinates","keyboardHeight","endCoordinates","isIosKeyboardHeightSet","_event$endCoordinates2","iosKeyboardHeight","availableHeight","bufferSpace","topInset","adjustedHeight","modal","keyboardAnimationDuration","gestureState","dy","_this$translateY","currentTranslateY","vy","_this$sheetHeight","setTimeout","_this$state$scrollVie","scrollViewRef","current","scrollTo","x","y","animated","scrollOffset","sheetMinimumHeight","bottomsheetminimumheight","enabled","onUpdate","translationY","velocityY","moveX","moveY","vx","velocityX","containerscrollYoffset","newTranslateY","isDragHandleExpanding","expand","disablescrollonrest","expandBottomSheet","onEnd","handleSwipeGesture","onFinalize","success","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","onPanResponderRelease","onPanResponderTerminate","offsetY","nativeEvent","contentOffset","isScrolling","handleClose","requestAnimationFrame","key","Consumer","insets","bottom","left","right","bottomInset","absoluteStyle","rootStyle","root","_background","panResponder","dragHandlePanResponder","handleBackdropPress","handleDragHandlePress","bind","containerscrollViewRef","issticky","enablemodalsupport","sheetContentContainer","overflow","ref","contentContainerStyle","sheetScrollContent","alwaysBounceVertical","alwaysBounceHorizontal","bounces","showsVerticalScrollIndicator","scrollEventThrottle","onScroll","handleScroll","nestedScrollEnabled","scrollEnabled","edges","map","o","i","onStartShouldSetResponder","onResponderEnd","isModal","modalOverlay","centered","centeredOverlay","zIndex","elevationIndex","elevation","modalStyle","e","stopPropagation","content","subscribe","forceUpdate","expandedRatio","bottomsheetexpandedheightratio","expandedDefaultHeight","effectiveExpandedRatio","minimumExpandedHeight","showonrender","refresh","showModal","options","exists","find","list","onOpen","idx","findIndex","onClose","splice","componentDidMount","backHandlerSubscription","addEventListener","handleBackPress","keyboardDidShowListener","addListener","onKeyboardShow","keyboardDidHideListener","onKeyboardHide","componentWillUnmount","remove","componentDidUpdate","prevProps","onPropertyChange","$new","$old","closeSheetImmediate","renderSkeleton","theme","skeleton","width","renderWidget","hasButtonNavigation","wrapWithSafeArea","flex","visible","transparent","animationType","onRequestClose","statusBarTranslucent","behavior","keyboardVerticalOffset","renderContent"],"sources":["bottomsheet.component.tsx"],"sourcesContent":["import React, { createRef } from 'react';\nimport { BaseComponent, BaseComponentState } from '@wavemaker/app-rn-runtime/core/base.component';\nimport { View, PanResponder, Dimensions, TouchableWithoutFeedback, Platform, PanResponderGestureState, StatusBar, BackHandler, DimensionValue, KeyboardAvoidingView, Keyboard, EmitterSubscription, Modal, NativeEventSubscription, Pressable, ViewStyle } from 'react-native';\nimport { Gesture, GestureDetector, GestureHandlerRootView, ScrollView } from 'react-native-gesture-handler';\nimport Animated, {\n useAnimatedStyle,\n withTiming,\n runOnJS,\n Easing,\n SharedValue,\n makeMutable,\n cancelAnimation\n} from 'react-native-reanimated';\nimport { AnimatableProps } from 'react-native-animatable';\nimport * as Animatable from 'react-native-animatable';\nimport WmBottomsheetProps from './bottomsheet.props';\nimport { DEFAULT_CLASS, WmBottomsheetStyles } from './bottomsheet.styles';\nimport { createSkeleton } from '../skeleton/skeleton.component';\nimport { AccessibilityWidgetType, getAccessibilityProps } from '@wavemaker/app-rn-runtime/core/accessibility';\nimport { ModalProvider, ModalService, ModalOptions } from '@wavemaker/app-rn-runtime/core/modal.service';\nimport { SafeAreaInsetsContext, SafeAreaView } from 'react-native-safe-area-context';\n\n\n// Web-only: Runs all bottom sheet animations on the JS thread (sets useNativeDriver to false)\n// Prevents errors on web where native driver animations are not supported\n// Web - Animated api is used from animation\nif (Platform.OS === 'web') {\n try {\n const RN: any = require('react-native');\n const RNAnimated: any = RN && RN.Animated;\n if (RNAnimated && !RNAnimated.__wmPatchedNoNativeDriver) {\n const wrap = (name: string) => {\n const original = RNAnimated[name];\n if (typeof original === 'function') {\n RNAnimated[name] = (value: any, config: any) => {\n const patched = { ...(config || {}), useNativeDriver: false };\n return original(value, patched);\n };\n }\n };\n wrap('timing');\n wrap('spring');\n wrap('decay');\n RNAnimated.__wmPatchedNoNativeDriver = true;\n }\n } catch (_) {\n // noop\n }\n}\n\nconst { height: SCREEN_HEIGHT } = Dimensions.get('screen');\nexport class WmBottomsheetState extends BaseComponentState<WmBottomsheetProps> {\n scrollViewRef = createRef<ScrollView>();\n isScrolling = false;\n scrollOffset = 0;\n isExpanded = false;\n isBottomsheetVisible = false;\n keyboardHeight = 0;\n localModalsOpened: ModalOptions[] = [];\n lastGestureDy = 0;\n contentAnimationId?: number = 0;\n contentAnimatableProps?: AnimatableProps<ViewStyle> = undefined;\n}\n\n// Animated wrapper component that uses hooks\nconst AnimatedBottomsheetContent = ({\n translateY,\n backdropOpacity,\n sheetHeight,\n lastGestureDy,\n styles,\n props,\n children,\n panHandlers,\n dragHandlePanHandlers,\n onBackdropPress,\n onDragHandlePress,\n getTestProps,\n enabledragsettle,\n scrollRef,\n containerScrollRef,\n configurePanGesture\n\n}: any) => {\n\n\n // Simple RNGH GestureDetector attached to the same view as the PanResponder (panHandlers).\n // No thresholds/validation: logs translationY directly during pan.\n const panGesture = React.useMemo(() => {\n // Create base Pan gesture\n const pan = Gesture.Pan().runOnJS(true);\n\n // Add external gestures for ScrollViews (container widget scrollview)\n if (scrollRef && containerScrollRef) {\n pan.simultaneousWithExternalGesture(\n scrollRef as any,\n containerScrollRef as any\n );\n } else if (scrollRef) {\n pan.simultaneousWithExternalGesture(scrollRef as any);\n } else if (containerScrollRef) {\n pan.simultaneousWithExternalGesture(containerScrollRef as any);\n }\n\n // Apply custom logic from parent BottomSheet class\n if (configurePanGesture) {\n configurePanGesture(pan);\n }\n\n return pan;\n }, [scrollRef, containerScrollRef, configurePanGesture]);\n\n const backdropAnimatedStyle = useAnimatedStyle(() => ({\n opacity: backdropOpacity.value\n }));\n\n const containerAnimatedStyle = useAnimatedStyle(() => ({\n height: sheetHeight.value,\n transform: [{ translateY: translateY.value }]\n }));\n\n const contentStyle = useAnimatedStyle(() => {\n if (enabledragsettle && lastGestureDy.value > 0) {\n return {\n paddingBottom: lastGestureDy.value\n };\n }\n return {};\n });\n\n return (\n <>\n <TouchableWithoutFeedback onPress={onBackdropPress}>\n <Animated.View\n style={[styles.backdrop, backdropAnimatedStyle]}\n {...getTestProps('backdrop')}\n {...getAccessibilityProps(AccessibilityWidgetType.BOTTOMSHEET, props)}\n />\n </TouchableWithoutFeedback>\n\n <Animated.View\n style={[styles.container, containerAnimatedStyle]}\n // {...panHandlers}\n >\n <View style={styles.dragHandleContainer} {...dragHandlePanHandlers}>\n <Pressable onPress={onDragHandlePress}>\n <View style={styles.dragIconHandle} {...getTestProps('draghandle')} />\n </Pressable>\n </View>\n <GestureDetector gesture={panGesture}>\n {children(contentStyle)}\n </GestureDetector>\n </Animated.View>\n </>\n );\n};\n\nexport default class WmBottomsheet extends BaseComponent<WmBottomsheetProps, WmBottomsheetState, WmBottomsheetStyles> {\n private calculatedHeight: number;\n private expandedHeight: number;\n private defaultHeight: number = 0.5;\n private expandedDefaultHeight: number = 0.8;\n private minimumHeight: number = 0.01;\n private minimumExpandedHeight: number = 0.5;\n private maxHeight: number = 1.0;\n private animationDuration: number = 400;\n private keyboardAnimationDuration: number = Platform.OS === 'ios' ? 250 : 275;\n private statusBarHeight: number = StatusBar.currentHeight || 0;\n private defaultTopInset: number = 44;\n private maxHeightRatio: number = 0;\n private keyboardDidShowListener!: EmitterSubscription;\n private keyboardDidHideListener!: EmitterSubscription;\n private backHandlerSubscription: NativeEventSubscription | null = null;\n private topInset: number = 0;\n private iosKeyboardHeight: number = 0;\n private isIosKeyboardHeightSet: boolean = false;\n private sheetModalService: ModalService;\n private isDragHandleExpanding: boolean = false;\n //container widget scrollview ref and y offset value\n private containerscrollViewRef: any = null\n private containerscrollYoffset: number = 0\n\n\n // Reanimated shared values - created once and reused\n private translateY!: SharedValue<number>;\n private backdropOpacity!: SharedValue<number>;\n private sheetHeight!: SharedValue<number>;\n private lastGestureDyShared!: SharedValue<number>;\n\n // Helper method to calculate animation duration based on distance and velocity\n private getAnimationDuration(distance: number, velocity: number): number {\n // Base duration on distance, but cap it between 200-500ms\n // Higher velocity = shorter duration for snappier feel\n const velocityFactor = Math.max(0.3, Math.min(1, 1 - Math.abs(velocity) / 2));\n const calculatedDuration = Math.abs(distance) * velocityFactor;\n return Math.min(500, Math.max(200, calculatedDuration));\n }\n\n private calculateSheetHeight(bottomsheetheightratio: number): number {\n // Use default height if ratio not provided, but ensure it's not below minimum\n const effectiveRatio = bottomsheetheightratio || this.defaultHeight;\n this.maxHeightRatio = Math.max(\n this.minimumHeight,\n Math.min(effectiveRatio, this.maxHeight)\n );\n\n const screenHeight = Dimensions.get('screen').height;\n let calculatedHeight = screenHeight * this.maxHeightRatio;\n\n if (Platform.OS === 'ios') {\n // Subtract top inset bar height for ios only if bottomsheetheightratio is 0.9\n if (this.maxHeightRatio >= 0.9) {\n calculatedHeight -= this.defaultTopInset;\n }\n }\n else if (Platform.OS === 'android') {\n // Subtract status bar height for Android only if bottomsheetheightratio is 0.9\n if (this.maxHeightRatio >= 0.9) {\n calculatedHeight -= this.statusBarHeight;\n }\n }\n return calculatedHeight;\n }\n\n open() {\n if (!this.state.isBottomsheetVisible)\n this.updateState({\n isBottomsheetVisible: true\n } as WmBottomsheetState);\n this.openSheet();\n }\n\n close() {\n if (this.state.isBottomsheetVisible) {\n this.closeSheet();\n }\n }\n\n isSheetExpanded = () => {\n return this.state.isExpanded\n }\n\n expandBottomSheet = () => {\n const targetHeight = Math.min(this.expandedHeight, SCREEN_HEIGHT);\n const callback = () => {\n this.updateState({\n isExpanded: true,\n lastGestureDy: 0\n } as WmBottomsheetState);\n this.invokeEventCallback('onExpand', [null, this]);\n };\n\n // Reset drag settle value immediately on UI thread\n this.lastGestureDyShared.value = 0;\n\n if (this.props.enabledragsettle) {\n // Synchronize both animations to complete together\n this.sheetHeight.value = withTiming(targetHeight, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n this.translateY.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n } else {\n // Only animate height for non-drag-settle mode\n this.sheetHeight.value = withTiming(targetHeight, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n }\n }\n\n collapseBottomSheet = () => {\n const callback = () => {\n this.updateState({\n isExpanded: false,\n lastGestureDy: 0\n } as WmBottomsheetState);\n this.invokeEventCallback('onCollapse', [null, this]);\n };\n\n // Reset drag settle value immediately on UI thread\n this.lastGestureDyShared.value = 0;\n\n this.translateY.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n this.sheetHeight.value = withTiming(this.calculatedHeight, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n }\n\n public animate(props: AnimatableProps<ViewStyle>) {\n this.updateState({\n contentAnimationId: Date.now(),\n contentAnimatableProps: props\n } as WmBottomsheetState);\n }\n\n constructor(props: WmBottomsheetProps) {\n super(props, DEFAULT_CLASS, new WmBottomsheetProps(), new WmBottomsheetState());\n this.calculatedHeight = this.calculateSheetHeight(props.bottomsheetheightratio);\n //container srollview ref\n this.subscribe('containerScrollViewReady', (ref: React.RefObject<any>) => {\n if (ref && ref.current && this.containerscrollViewRef !== ref) {\n this.containerscrollViewRef = ref;\n this.forceUpdate();\n }\n });\n //container scrollview y offset value\n this.subscribe('scroll', (e: any) => {\n const offsetY = e.nativeEvent.contentOffset.y;\n this.containerscrollYoffset = offsetY\n });\n // Use bottomsheetexpandedheightratio if provided, otherwise use expandedDefaultHeight\n const expandedRatio = props.bottomsheetexpandedheightratio || this.expandedDefaultHeight;\n const effectiveExpandedRatio = Math.max(\n this.minimumExpandedHeight,\n Math.min(expandedRatio, this.maxHeight)\n );\n\n this.expandedHeight = SCREEN_HEIGHT * effectiveExpandedRatio;\n\n if (Platform.OS === 'android') {\n if (effectiveExpandedRatio >= 0.9) {\n this.expandedHeight -= this.statusBarHeight;\n }\n }\n if (Platform.OS === 'ios') {\n if (effectiveExpandedRatio >= 0.9) {\n this.expandedHeight -= this.defaultTopInset;\n }\n }\n\n // Initialize shared values in constructor using makeMutable (not hooks)\n // makeMutable can be called outside of React components\n this.translateY = makeMutable(SCREEN_HEIGHT);\n this.backdropOpacity = makeMutable(0);\n this.sheetHeight = makeMutable(this.calculatedHeight);\n this.lastGestureDyShared = makeMutable(0);\n\n this.updateState({\n isBottomsheetVisible: this.props.showonrender || false\n } as WmBottomsheetState);\n\n // Initialize values immediately to prevent flicker\n if (this.props.showonrender) {\n this.translateY.value = 0;\n this.backdropOpacity.value = 1;\n }\n\n // Local ModalService for content rendered inside Bottomsheet\n this.sheetModalService = {\n refresh: () => this.forceUpdate(),\n showModal: (options: ModalOptions) => {\n const exists = this.state.localModalsOpened.find(o => o === options);\n if (!exists) {\n // ensure high z-index within sheet\n (options as any).elevationIndex = 9999 + this.state.localModalsOpened.length + 1;\n const list = [...this.state.localModalsOpened, options];\n this.updateState({ localModalsOpened: list } as WmBottomsheetState, () => {\n setTimeout(() => options.onOpen && options.onOpen(), 0);\n });\n }\n },\n hideModal: (options?: ModalOptions) => {\n const list = [...this.state.localModalsOpened];\n const idx = options ? list.findIndex(o => o === options) : (list.length - 1);\n if (idx >= 0) {\n const o = list[idx];\n o && o.onClose && o.onClose();\n list.splice(idx, 1);\n this.updateState({ localModalsOpened: list } as WmBottomsheetState);\n }\n }\n };\n }\n\n componentDidMount() {\n super.componentDidMount();\n\n // Trigger animation after mount if showonrender is true\n if (this.state.isBottomsheetVisible) {\n // Use requestAnimationFrame to ensure animation happens after initial render\n requestAnimationFrame(() => {\n this.openSheet();\n });\n }\n\n if (Platform.OS === 'android') {\n this.backHandlerSubscription = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);\n }\n this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this.onKeyboardShow);\n this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this.onKeyboardHide);\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n if (this.backHandlerSubscription) {\n this.backHandlerSubscription.remove();\n this.backHandlerSubscription = null;\n }\n if (this.keyboardDidShowListener) {\n this.keyboardDidShowListener.remove();\n }\n if (this.keyboardDidHideListener) {\n this.keyboardDidHideListener.remove();\n }\n }\n\n private handleBackPress = () => {\n // Close top-most local modal first, if any\n if (this.state.localModalsOpened && this.state.localModalsOpened.length > 0) {\n const top = this.state.localModalsOpened[this.state.localModalsOpened.length - 1];\n this.sheetModalService.hideModal(top);\n return true;\n }\n if (this.state.isBottomsheetVisible) {\n if (!this.props.disableswipedownclose && this.props.autoclose !== 'disabled') {\n this.closeSheet();\n }\n return true; // Prevent default back action\n }\n return false;\n };\n\n private onKeyboardShow = (event: any) => {\n let keyboardHeight = event.endCoordinates?.height || 0;\n //only storing ios keyboard height once as first time keyboard open (to avoid scroll flickring issue in ios in text widget)\n if (!this.isIosKeyboardHeightSet) {\n this.iosKeyboardHeight = event.endCoordinates?.height + 40;\n this.isIosKeyboardHeightSet = true;\n }\n // Calculate available space after keyboard\n const availableHeight = SCREEN_HEIGHT - (Platform.OS == 'ios' ? this.iosKeyboardHeight : keyboardHeight);\n // Calculate adjusted sheet height to fit within available space\n // Leave some buffer space for the drag handle and safe area\n const bufferSpace = (Platform.OS === 'ios' ? this.topInset : this.statusBarHeight) + 20;\n const adjustedHeight = availableHeight - bufferSpace;\n\n if (this.sheetHeight && Platform.OS == 'android' && this.props.modal) {\n // Use platform-specific keyboard animation duration for smooth synchronization\n this.sheetHeight.value = withTiming(adjustedHeight, {\n duration: this.keyboardAnimationDuration,\n easing: Easing.out(Easing.ease)\n });\n }\n\n this.updateState({\n keyboardHeight: keyboardHeight,\n } as WmBottomsheetState);\n };\n\n private onKeyboardHide = () => {\n if (this.sheetHeight && Platform.OS == 'android' && this.props.modal) {\n // Use platform-specific keyboard animation duration for smooth synchronization\n this.sheetHeight.value = withTiming(\n this.state.isExpanded ? this.expandedHeight : this.calculatedHeight,\n {\n duration: this.keyboardAnimationDuration,\n easing: Easing.out(Easing.ease)\n }\n );\n }\n\n this.updateState({\n keyboardHeight: 0,\n } as WmBottomsheetState);\n };\n\n componentDidUpdate(prevProps: WmBottomsheetProps) {\n if (prevProps.bottomsheetheightratio !== this.props.bottomsheetheightratio) {\n this.calculatedHeight = this.calculateSheetHeight(this.props.bottomsheetheightratio);\n if (this.sheetHeight) {\n this.sheetHeight.value = this.calculatedHeight;\n }\n }\n }\n\n handleSwipeGesture = (gestureState: PanResponderGestureState) => {\n\n // Only reset lastGestureDy for traditional behavior, not for drag and settle\n if (!this.props.enabledragsettle) {\n this.updateState({\n lastGestureDy: 0\n } as WmBottomsheetState);\n if (this.lastGestureDyShared) {\n this.lastGestureDyShared.value = 0;\n }\n }\n\n if (this.props.enabledragsettle && gestureState.dy > 0) {\n const currentTranslateY = this.translateY?.value || 0;\n\n if (gestureState.vy > 0.5 && !this.props.disableswipedownclose) {\n this.closeSheet();\n return;\n }\n\n if (this.translateY && this.lastGestureDyShared) {\n this.translateY.value = currentTranslateY;\n this.lastGestureDyShared.value = currentTranslateY;\n }\n\n this.updateState({\n isExpanded: false,\n lastGestureDy: currentTranslateY\n } as WmBottomsheetState);\n return;\n }\n\n if (gestureState.dy > 0) {\n if (this.state.isExpanded || this.props.disableswipedownclose) {\n if (gestureState.dy < this.expandedHeight / 4 || this.props.disableswipedownclose) {\n //reseting bottom sheet scrollview offset value to fix scrollview automatic scroll issue while collpsing the bottom sheet\n setTimeout(() => {\n if (this.state.scrollViewRef?.current) {\n this.state.scrollViewRef.current.scrollTo({ x: 0, y: 0, animated: false });\n this.updateState({ scrollOffset: 0 } as WmBottomsheetState);\n }\n }, this.animationDuration);\n let sheetMinimumHeight = this.props.bottomsheetminimumheight || 0.1;\n const targetHeight = this.props.disableswipedownclose ? sheetMinimumHeight * SCREEN_HEIGHT : this.calculatedHeight;\n const currentHeight = this.sheetHeight?.value || this.expandedHeight;\n const distance = Math.abs(currentHeight - targetHeight);\n const duration = this.getAnimationDuration(distance, gestureState.vy);\n\n const callback = () => {\n this.updateState({\n isExpanded: false\n } as WmBottomsheetState);\n this.invokeEventCallback('onCollapse', [null, this]);\n };\n\n if (this.translateY && this.sheetHeight) {\n this.translateY.value = withTiming(0, {\n duration: duration,\n easing: Easing.out(Easing.ease)\n });\n this.sheetHeight.value = withTiming(\n targetHeight,\n {\n duration: duration,\n easing: Easing.out(Easing.ease)\n },\n (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n }\n );\n }\n } else if ((gestureState.dy > this.expandedHeight / 4 || gestureState.vy > 0.5) && !this.props.disableswipedownclose) {\n this.closeSheet();\n }\n } else {\n if (this.props.disableswipedownclose) {\n this.openSheet();\n return;\n }\n if ((gestureState.dy > 100 || gestureState.vy > 0.5) && !this.props.disableswipedownclose) {\n this.closeSheet();\n } else {\n this.openSheet();\n }\n }\n }\n }\n\n private configurePanGesture = (pan: any) => {\n pan\n .enabled(true)\n .onUpdate((event: any) => { // ← Add : any\n const gestureState = {\n dy: event.translationY,\n vy: event.velocityY,\n moveX: event.x,\n moveY: event.y,\n vx: event.velocityX\n };\n if (gestureState.dy > 0 && this.translateY && this.lastGestureDyShared && this.state.scrollOffset <= 0 && this.containerscrollYoffset <= 0) {\n const newTranslateY = Math.max(0, this.lastGestureDyShared.value + gestureState.dy);\n this.translateY.value = newTranslateY;\n // Reset expand flag if dragging down\n this.isDragHandleExpanding = false;\n }\n else if (gestureState.dy < 0 && this.props.expand && this.props.bottomsheetheightratio !== 1 && !this.isDragHandleExpanding && !this.state.isExpanded && this.props.disablescrollonrest) {\n // Only trigger expand once with threshold of -50px upward drag\n this.isDragHandleExpanding = true;\n this.expandBottomSheet();\n }\n // ... rest of logic\n })\n .onEnd((event: any) => { // ← Add : any\n const gestureState = {\n dy: event.translationY,\n vy: event.velocityY,\n moveX: event.x,\n moveY: event.y,\n vx: event.velocityX\n };\n if (gestureState.dy > 0 && this.state.scrollOffset <= 0 && this.containerscrollYoffset <= 0) {\n this.handleSwipeGesture(gestureState as any);\n }\n })\n .onFinalize((event: any, success: boolean) => { // ← Add types\n if (!success) {\n this.openSheet()\n }\n });\n\n return pan;\n };\n // panResponder for bottom sheet scroll view\n panResponder = PanResponder.create({\n onStartShouldSetPanResponder: (_, gestureState) => {\n if (this.props.disablescrollonrest && !this.state.isExpanded) {\n return true\n }\n // Only handle the gesture if we're at the top and swiping down\n return gestureState.dy > 0 && this.state.scrollOffset <= 0;\n\n },\n\n onMoveShouldSetPanResponder: (_, gestureState) => {\n if (this.props.disablescrollonrest && !this.state.isExpanded) {\n return Math.abs(gestureState.dy) > 2;\n }\n // Only handle the gesture if we're at the top and swiping down\n return gestureState.dy > 0 && this.state.scrollOffset <= 0;\n\n },\n\n onPanResponderGrant: () => {\n // Cancel any ongoing animations when user starts dragging\n if (this.translateY) {\n cancelAnimation(this.translateY);\n }\n },\n\n onPanResponderMove: (_, gestureState) => {\n\n if (gestureState.dy > 0 && this.translateY && this.lastGestureDyShared) {\n const newTranslateY = Math.max(0, this.lastGestureDyShared.value + gestureState.dy);\n this.translateY.value = newTranslateY;\n // Reset expand flag if dragging down\n this.isDragHandleExpanding = false;\n }\n else if (gestureState.dy < 0 && this.props.expand && this.props.bottomsheetheightratio !== 1 && !this.isDragHandleExpanding && !this.state.isExpanded) {\n // Only trigger expand once with threshold of -50px upward drag\n this.isDragHandleExpanding = true;\n this.expandBottomSheet();\n }\n },\n\n onPanResponderRelease: (_, gestureState) => {\n this.handleSwipeGesture(gestureState);\n },\n\n onPanResponderTerminate: () => {\n this.openSheet();\n },\n });\n\n //pan repsoneder for bottom sheet dragable container\n dragHandlePanResponder = PanResponder.create({\n onStartShouldSetPanResponder: () => true,\n onMoveShouldSetPanResponder: () => true,\n\n onPanResponderGrant: () => {\n // Cancel any ongoing animations when user starts dragging\n if (this.translateY) {\n cancelAnimation(this.translateY);\n }\n // Reset the expand flag\n this.isDragHandleExpanding = false;\n },\n\n onPanResponderMove: (_, gestureState) => {\n if (gestureState.dy > 0 && this.translateY && this.lastGestureDyShared) {\n const newTranslateY = Math.max(0, this.lastGestureDyShared.value + gestureState.dy);\n this.translateY.value = newTranslateY;\n // Reset expand flag if dragging down\n this.isDragHandleExpanding = false;\n } else if (gestureState.dy < -50 && this.props.expand && this.props.bottomsheetheightratio !== 1 && !this.isDragHandleExpanding && !this.state.isExpanded) {\n // Only trigger expand once with threshold of -50px upward drag\n this.isDragHandleExpanding = true;\n this.expandBottomSheet();\n }\n },\n onPanResponderRelease: (_, gestureState) => {\n this.isDragHandleExpanding = false;\n this.handleSwipeGesture(gestureState);\n },\n });\n\n handleScroll = (event: any): any => {\n if (this.state.keyboardHeight > 0) return null;\n const offsetY = event.nativeEvent.contentOffset.y;\n this.updateState({\n isScrolling: offsetY > 0,\n scrollOffset: offsetY\n } as WmBottomsheetState);\n };\n\n openSheet = () => {\n const callback = () => {\n this.updateState({\n lastGestureDy: 0,\n } as WmBottomsheetState);\n this.invokeEventCallback('onOpened', [null, this]);\n };\n\n // Reset drag settle value immediately on UI thread\n if (this.lastGestureDyShared) {\n this.lastGestureDyShared.value = 0;\n }\n\n if (this.translateY && this.backdropOpacity) {\n this.translateY.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n // Backdrop animation synchronized with sheet animation\n this.backdropOpacity.value = withTiming(1, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n }\n };\n\n private handleClose = () => {\n this.updateState({\n isBottomsheetVisible: false\n } as WmBottomsheetState);\n this.invokeEventCallback('onClose', [null, this]);\n };\n\n closeSheet = () => {\n \n\n const callback = () => {\n // Reset sheet height after close\n if (this.sheetHeight) {\n this.sheetHeight.value = this.calculatedHeight;\n }\n this.updateState({\n isExpanded: false,\n localModalsOpened: [] as ModalOptions[],\n scrollOffset: 0,\n contentAnimationId: 0, \n contentAnimatableProps: undefined \n } as WmBottomsheetState);\n this.containerscrollYoffset = 0\n this.handleClose();\n };\n\n if (this.translateY && this.backdropOpacity) {\n this.translateY.value = withTiming(SCREEN_HEIGHT, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n }, (finished) => {\n if (finished) {\n runOnJS(callback)();\n }\n });\n // Backdrop animation synchronized with sheet animation\n this.backdropOpacity.value = withTiming(0, {\n duration: this.animationDuration,\n easing: Easing.out(Easing.ease)\n });\n }\n };\n\n closeSheetImmediate = () => {\n if (this.translateY && this.backdropOpacity && this.lastGestureDyShared) {\n this.translateY.value = SCREEN_HEIGHT;\n this.backdropOpacity.value = 0;\n this.lastGestureDyShared.value = 0;\n }\n\n this.updateState({\n lastGestureDy: 0,\n isExpanded: false,\n isBottomsheetVisible: false,\n localModalsOpened: [] as ModalOptions[],\n contentAnimationId: 0,\n contentAnimatableProps: undefined\n } as WmBottomsheetState);\n\n requestAnimationFrame(() => {\n if (this.sheetHeight) {\n this.sheetHeight.value = this.calculatedHeight;\n }\n });\n };\n\n public onPropertyChange(name: string, $new: any, $old: any): void {\n super.onPropertyChange(name, $new, $old);\n switch (name) {\n case \"showonrender\":\n if ($new) {\n this.updateState({\n isBottomsheetVisible: $new || false\n } as WmBottomsheetState);\n if (this.state.isBottomsheetVisible) {\n this.openSheet && this.openSheet();\n }\n } else {\n this.closeSheetImmediate && this.closeSheetImmediate();\n }\n break;\n }\n }\n\n public renderSkeleton(props: WmBottomsheetProps) {\n return createSkeleton(this.theme, this.styles.skeleton, {\n ...this.styles.root,\n width: this.styles.root.width as DimensionValue,\n height: this.styles.root.height as DimensionValue\n });\n }\n\n // Class methods to prevent recreation on every render\n private handleBackdropPress = () => {\n if (this.props.autoclose !== 'disabled') {\n this.closeSheet();\n }\n };\n\n private handleDragHandlePress = () => {\n this.invokeEventCallback('onDraghandleiconclick', [null, this]);\n };\n\n private renderAnimatedSheetChildren = (children: React.ReactNode) => {\n if (!this.state.contentAnimatableProps) {\n return children;\n }\n return (\n <Animatable.View\n key={this.state.contentAnimationId}\n {...this.state.contentAnimatableProps}\n >\n {children}\n </Animatable.View>\n );\n };\n\n private renderContent = (props: WmBottomsheetProps) => {\n // Don't render if shared values aren't initialized yet\n if (!this.translateY || !this.backdropOpacity || !this.sheetHeight || !this.lastGestureDyShared) {\n return null;\n }\n\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets = { top: 0, bottom: 0, left: 0, right: 0 }) => {\n // Store topInset for later use (avoid mutation during render)\n const topInset = insets?.top || 0;\n const bottomInset = insets?.bottom || 0;\n // Update the instance variable outside of render cycle\n if (this.topInset !== topInset) {\n requestAnimationFrame(() => {\n this.topInset = topInset;\n });\n }\n const absoluteStyle = {\n top: 0,\n left: 0,\n right: 0,\n }\n const rootStyle = props.modal\n ? [this.styles.root, absoluteStyle]\n : this.styles.root;\n return (\n <View style={rootStyle} {...this.getTestProps('keyboardview')}>\n {this._background}\n\n <AnimatedBottomsheetContent\n translateY={this.translateY}\n backdropOpacity={this.backdropOpacity}\n sheetHeight={this.sheetHeight}\n lastGestureDy={this.lastGestureDyShared}\n styles={this.styles}\n props={props}\n panHandlers={this.panResponder.panHandlers}\n dragHandlePanHandlers={this.dragHandlePanResponder.panHandlers}\n onBackdropPress={this.handleBackdropPress}\n onDragHandlePress={this.handleDragHandlePress}\n getTestProps={this.getTestProps.bind(this)}\n enabledragsettle={props.enabledragsettle}\n scrollRef={this.state.scrollViewRef}\n containerScrollRef={this.containerscrollViewRef}\n configurePanGesture={this.configurePanGesture}\n >\n {(contentStyle: any) => (\n props.issticky ? (\n props.enablemodalsupport ? (\n <ModalProvider value={this.sheetModalService}>\n <Animated.View style={[contentStyle, this.styles.sheetContentContainer, { overflow: 'hidden' }]}>\n {props.children}\n </Animated.View>\n </ModalProvider>\n ) : (\n <Animated.View style={[contentStyle, this.styles.sheetContentContainer, { overflow: 'hidden' }]}>\n {props.children}\n </Animated.View>\n )\n ) : (<ScrollView\n ref={this.state.scrollViewRef}\n style={this.styles.sheetContentContainer}\n contentContainerStyle={[this.styles.sheetScrollContent]}\n alwaysBounceVertical={false}\n alwaysBounceHorizontal={false}\n bounces={false}\n showsVerticalScrollIndicator={false}\n scrollEventThrottle={16}\n onScroll={this.handleScroll}\n nestedScrollEnabled={true}\n scrollEnabled={!props.issticky && (!props.disablescrollonrest || this.state.isExpanded)}\n {...this.getTestProps('scorllview')}\n >\n {props.enablemodalsupport ? (\n <ModalProvider value={this.sheetModalService}>\n <Animated.View style={contentStyle}>\n {props.children}\n </Animated.View>\n </ModalProvider>\n ) : (\n <Animated.View style={contentStyle}>\n {props.children}\n </Animated.View>\n )}\n </ScrollView>)\n )}\n </AnimatedBottomsheetContent>\n {/*Adding SafeAreaView to ensure the bottom sheet is rendered above the Android button navigation bar when modal prop is false */}\n {(Platform.OS === 'android' && !this.props.modal && bottomInset > 40) && <SafeAreaView edges={['bottom']} />}\n\n {props.enablemodalsupport && this.state.localModalsOpened && this.state.localModalsOpened.map((o, i) => (\n <View\n key={(o.name || '') + i}\n onStartShouldSetResponder={() => true}\n onResponderEnd={() => o.isModal && this.sheetModalService.hideModal(o)}\n style={[\n this.styles.modalOverlay,\n (o as any).centered ? this.styles.centeredOverlay : null,\n { zIndex: (o as any).elevationIndex || 9999, elevation: (o as any).elevationIndex || 9999 },\n (o.modalStyle || {})\n ]}\n >\n <View\n style={[(o.contentStyle || {})]}\n onStartShouldSetResponder={() => true}\n onResponderEnd={(e) => e.stopPropagation()}\n >\n {o.content}\n </View>\n </View>\n ))}\n </View>\n );\n }}\n </SafeAreaInsetsContext.Consumer>\n );\n };\n\n renderWidget(props: WmBottomsheetProps) {\n if (!this.state.isBottomsheetVisible) return null;\n\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets = { top: 0, bottom: 0, left: 0, right: 0 }) => {\n // Use SafeAreaView on Android with button navigation to render the bottom sheet above the nav bar (when modal props is true)\n // Button navigation is identified when bottom inset >= 40 \n const hasButtonNavigation = Platform.OS === 'android' && (insets?.bottom || 0) >= 40;\n\n const wrapWithSafeArea = (children: React.ReactNode) => {\n if (hasButtonNavigation) {\n return <SafeAreaView style={{ flex: 1 }}>{children}</SafeAreaView>;\n }\n return children;\n };\n\n if (props.modal) {\n return (\n <Modal\n visible={this.state.isBottomsheetVisible}\n transparent={true}\n animationType=\"none\"\n onRequestClose={() => {\n if (!this.props.disableswipedownclose && this.props.autoclose !== 'disabled') {\n this.closeSheet();\n }\n }}\n statusBarTranslucent={false}\n >\n <GestureHandlerRootView style={{ flex: 1 }}>\n {wrapWithSafeArea(\n <KeyboardAvoidingView\n style={{ flex: 1 }}\n behavior={Platform.OS === 'android' ? (this.state.keyboardHeight > 0 ? 'padding' : undefined) : 'padding'}\n keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : undefined}\n >\n {this.renderContent(props)}\n </KeyboardAvoidingView>\n )}\n </GestureHandlerRootView>\n </Modal>\n );\n } else {\n return this.renderContent(props);\n }\n }}\n </SafeAreaInsetsContext.Consumer>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -172,6 +172,11 @@ export default class WmFormField extends BaseComponent {
172
172
  }
173
173
  setReadOnlyState(updateMode) {
174
174
  var _this$formwidget;
175
+ // A field explicitly marked readonly in markup must stay readonly regardless
176
+ // of the form's insert/edit mode toggle.
177
+ if (this.props.readonly) {
178
+ return;
179
+ }
175
180
  (_this$formwidget = this.formwidget) === null || _this$formwidget === void 0 || _this$formwidget.updateState({
176
181
  props: {
177
182
  readonly: !updateMode
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","View","BaseComponent","BaseComponentState","isEqual","isNil","get","find","cloneDeep","forEach","keys","WmFormFieldProps","DEFAULT_CLASS","PERFORMANCE_LOGGER","WmFormFieldState","constructor","args","_defineProperty","WmFormField","props","form","formScope","componentDidMount","_this$form","_this$form2","_this$form3","formwidget","formKey","formWidgets","name","registerFormFields","formFields","onFieldChangeEvt","$new","$old","isDefault","notifyChanges","updateState","datavalue","invokeEventCallback","undefined","validateFormField","updateDataOutput","call","observeOn","fields","field","formfield","f","proxy","notifyForFields","push","validate","setTimeout","getPromiseList","validators","arr","fn","promise","Function","bind","Promise","setAsyncValidators","_asyncValidatorFn","all","then","err","validationMsg","hasOwnProperty","messageKeys","toString","setInvalidState","setValidators","_cloneValidators","_syncValidators","obj","index","key","defaultValidatorMessages","value","propsObj","updateFormWidgetDataset","res","displayField","dataset","data","datafield","displayfield","state","msg","isValid","validationmessage","onPropertyChange","debug","applyDefaultValue","setPrimaryKey","setReadOnlyState","updateMode","_this$formwidget","readonly","_this$formwidget2","_this$_syncValidators","_this$formwidget3","errorType","errormsg","errorMessage","renderWidget","_this$form4","_this$form5","nextRef","fieldRefs","fieldIndex","currentRef","childrenWithProps","Children","map","renderFormFields","children","child","_child$props","cloneElement","ref","maskchar","displayformat","autocomplete","autocapitalize","uppercase","invokeEvent","triggerValidation","onFieldChange","formRef","isdefault","defaultvalue","returnkeytype","onSubmitEditing","_this$form6","isDone","submitondone","submit","current","_nextRef$current$focu","_nextRef$current","focus","placeholder","createElement","style","styles","root","onLayout","event","handleLayout","_background","_extends","getTestPropsForLabel","errorMsg"],"sources":["form-field.component.tsx"],"sourcesContent":["import React from 'react';\nimport {Text, View} from 'react-native';\nimport { BaseComponent, BaseComponentState } from '@wavemaker/app-rn-runtime/core/base.component';\nimport { widgetsWithUndefinedValue } from '@wavemaker/app-rn-runtime/core/utils';\nimport { isEqual, isNil, get, find, cloneDeep, forEach, keys } from 'lodash';\n\nimport WmFormFieldProps from './form-field.props';\nimport { DEFAULT_CLASS, WmFormFieldStyles } from './form-field.styles';\nimport {PERFORMANCE_LOGGER} from \"@wavemaker/app-rn-runtime/core/logger\";\n\nexport class WmFormFieldState extends BaseComponentState<WmFormFieldProps> {\n isValid = true;\n}\n\nexport default class WmFormField extends BaseComponent<WmFormFieldProps, WmFormFieldState, WmFormFieldStyles> {\n public form: any;\n public formwidget: any;\n public fieldIndex: number = -1;\n public _syncValidators: any;\n public defaultValidatorMessages: any = [];\n private notifyForFields: any = [];\n private _asyncValidatorFn: any;\n constructor(props: WmFormFieldProps) {\n super(props, DEFAULT_CLASS, new WmFormFieldProps(), new WmFormFieldState());\n if (!this.form) {\n this.form = props.formScope && props.formScope();\n }\n }\n\n componentDidMount() {\n super.componentDidMount();\n this.formwidget = (this.props.formKey && this.form?.formWidgets[this.props.formKey])\n || (this.props.name && this.form?.formWidgets[this.props.name]);\n this.form?.registerFormFields(this.form.formFields, this.form.formWidgets);\n }\n\n onFieldChangeEvt(name: string, $new: any, $old: any, isDefault: boolean) {\n this.notifyChanges();\n if (!isEqual($old, $new)) {\n this.updateState({ props: { datavalue: $new }} as WmFormFieldState, () => {\n !isDefault && this.invokeEventCallback('onChange', [undefined, this, $new, $old]);\n this.validateFormField();\n });\n if (this.form) {\n this.form.updateDataOutput.call(this.form, get(this.props, 'formKey', this.props.name), $new);\n }\n }\n }\n\n // Registers observer of validation fields\n observeOn(fields: any) {\n forEach(fields, (field) => {\n const formfield = find(this.form.formFields, (f) => f.proxy.name === field);\n if (formfield) {\n formfield.notifyForFields.push(this);\n }\n });\n }\n\n // Notifies changes to observing validation fields\n notifyChanges() {\n forEach(this.notifyForFields, (field) => {\n field.formwidget.validate(field.formwidget.datavalue);\n setTimeout(() => field.validateFormField());\n });\n }\n\n getPromiseList(validators: any) {\n const arr: any = [];\n forEach(validators, (fn) => {\n let promise = fn;\n if (fn instanceof Function && fn.bind) {\n promise = fn(this.formwidget.proxy, this.form);\n }\n if (promise instanceof Promise) {\n arr.push(promise);\n }\n });\n return arr;\n }\n\n // this method sets the asyncValidation on the form field. Assigns validationmessages from the returned response\n setAsyncValidators(validators: any) {\n this._asyncValidatorFn = () => {\n return Promise.all(this.getPromiseList(validators)).then(() => {\n return null;\n }, err => {\n let validationMsg: string;\n // if err obj has validationMessage key, then set validationMessage using this value\n // else return the value of the first key in the err object as validation message.\n if (err.hasOwnProperty('errorMessage')) {\n validationMsg = get(err, 'errorMessage');\n } else {\n const messageKeys = keys(err);\n validationMsg = (err[messageKeys[0]]).toString();\n }\n this.setInvalidState(validationMsg);\n return err;\n })\n };\n }\n\n // sets the default validation on the form field\n setValidators(validators: any) {\n let _cloneValidators = cloneDeep(validators);\n this._syncValidators = [];\n forEach(_cloneValidators, (obj, index) => {\n // custom validation is bound to function.\n if (obj && obj instanceof Function) {\n // passing formwidget and form as arguments to the obj (i.e. validator function)\n _cloneValidators[index] = obj.bind(undefined, this.formwidget.proxy, this.form);\n this._syncValidators.push(_cloneValidators[index]);\n } else {\n // checks for default validator like required, maxchars etc.\n const key = get(obj, 'type');\n this.defaultValidatorMessages[key] = get(obj, 'errorMessage');\n const value = get(obj, 'validator');\n let propsObj: any = {\n props: {}\n };\n propsObj.props[key] = value;\n key === 'required' && this.updateState(propsObj as WmFormFieldState);\n this.formwidget.updateState(propsObj as WmFormFieldState);\n }\n });\n }\n\n updateFormWidgetDataset(res: any, displayField: string) {\n this.formwidget.updateState({\n props: {\n dataset: res.data,\n datafield: 'All Fields',\n displayfield: this.formwidget.state.props.displayfield || displayField,\n }\n } as WmFormFieldState);\n }\n\n setInvalidState(msg: string) {\n this.updateState({\n isValid: false,\n props: {\n validationmessage: msg\n }\n } as WmFormFieldState)\n this.formwidget.updateState({\n isValid: false,\n props: {\n validationmessage: msg\n }\n } as WmFormFieldState);\n }\n\n onPropertyChange(name: string, $new: any, $old: any) {\n switch (name) {\n case 'datavalue':\n if (!isEqual($old, $new)) {\n PERFORMANCE_LOGGER.debug(`form field ${this.props.name} changed from ${$old} to ${$new}`);\n }\n break;\n case 'defaultvalue':\n if (!isEqual($old, $new)) {\n get(this, 'form') && this.form.applyDefaultValue(this);\n }\n break;\n case 'primary-key':\n if ($new) {\n this.form.setPrimaryKey(this.props.name);\n }\n break;\n }\n }\n\n setReadOnlyState(updateMode: any) {\n this.formwidget?.updateState({\n props: {\n readonly: !updateMode,\n }\n } as WmFormFieldState);\n }\n\n validateFormField() {\n if (this.formwidget?.state.isValid === false) {\n const errorType = this.formwidget?.state?.errorType;\n let validationMsg = get(this.defaultValidatorMessages, errorType);\n if (validationMsg) {\n if (validationMsg instanceof Function) {\n // passing formwidget and form as arguments to the errorMessage function.\n validationMsg = validationMsg(this.formwidget.proxy, this.form);\n }\n this.updateState({ props: {\n validationmessage: validationMsg\n }} as WmFormFieldState);\n }\n this.updateState({ isValid: false} as WmFormFieldState);\n } else {\n this.updateState({ isValid: true } as WmFormFieldState);\n }\n\n this._syncValidators?.forEach((fn: any) => {\n const errormsg = fn();\n let validationMsg = errormsg?.errorMessage;\n if (validationMsg) {\n if (validationMsg instanceof Function) {\n // passing formwidget and form as arguments to the errorMessage function.\n validationMsg = validationMsg(this.formwidget.proxy, this.form);\n }\n this.setInvalidState(validationMsg);\n }\n })\n\n this._asyncValidatorFn && this._asyncValidatorFn();\n\n }\n\n get value(){\n return this.state.props.datavalue;\n }\n\n renderWidget(props: WmFormFieldProps) {\n const nextRef = this.form?.fieldRefs[this.fieldIndex + 1];\n const currentRef = this.form?.fieldRefs[this.fieldIndex];\n var childrenWithProps = React.Children.map(props.renderFormFields(this.proxy).props.children, (child) => {\n return React.cloneElement(child, {\n ref: currentRef,\n datavalue: props.datavalue || child?.props?.datavalue,\n value: this.value,\n isValid: this.state.isValid,\n maskchar: props.maskchar,\n displayformat: props.displayformat,\n autocomplete: props.autocomplete,\n autocapitalize: props.autocapitalize,\n uppercase: props.uppercase,\n invokeEvent: this.invokeEventCallback.bind(this),\n triggerValidation: this.validateFormField.bind(this),\n onFieldChange: this.onFieldChangeEvt.bind(this),\n formRef: props.formRef,\n isdefault: props.defaultvalue !== undefined ? true : false,\n ...(props.returnkeytype !== 'auto' ? {\n returnkeytype: props.returnkeytype,\n onSubmitEditing: () => {\n const isDone = props.returnkeytype === 'done';\n if (this.form?.props?.submitondone && isDone) {\n this.form.submit();\n } else if (props.returnkeytype === 'next' && nextRef?.current) {\n nextRef.current.focus?.();\n }\n }\n } : {}),\n ...(!isNil(props?.placeholder) ? { placeholder: props.placeholder } : {})\n });\n });\n return (\n <View \n style={this.styles.root}\n onLayout={(event) => this.handleLayout(event)}\n >\n {this._background}\n {childrenWithProps}\n {this.state.isValid === false && !!props.validationmessage && <Text {...this.getTestPropsForLabel('error_msg')} style={this.styles.errorMsg}>{props.validationmessage}</Text>}\n </View>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Text","View","BaseComponent","BaseComponentState","isEqual","isNil","get","find","cloneDeep","forEach","keys","WmFormFieldProps","DEFAULT_CLASS","PERFORMANCE_LOGGER","WmFormFieldState","constructor","args","_defineProperty","WmFormField","props","form","formScope","componentDidMount","_this$form","_this$form2","_this$form3","formwidget","formKey","formWidgets","name","registerFormFields","formFields","onFieldChangeEvt","$new","$old","isDefault","notifyChanges","updateState","datavalue","invokeEventCallback","undefined","validateFormField","updateDataOutput","call","observeOn","fields","field","formfield","f","proxy","notifyForFields","push","validate","setTimeout","getPromiseList","validators","arr","fn","promise","Function","bind","Promise","setAsyncValidators","_asyncValidatorFn","all","then","err","validationMsg","hasOwnProperty","messageKeys","toString","setInvalidState","setValidators","_cloneValidators","_syncValidators","obj","index","key","defaultValidatorMessages","value","propsObj","updateFormWidgetDataset","res","displayField","dataset","data","datafield","displayfield","state","msg","isValid","validationmessage","onPropertyChange","debug","applyDefaultValue","setPrimaryKey","setReadOnlyState","updateMode","_this$formwidget","readonly","_this$formwidget2","_this$_syncValidators","_this$formwidget3","errorType","errormsg","errorMessage","renderWidget","_this$form4","_this$form5","nextRef","fieldRefs","fieldIndex","currentRef","childrenWithProps","Children","map","renderFormFields","children","child","_child$props","cloneElement","ref","maskchar","displayformat","autocomplete","autocapitalize","uppercase","invokeEvent","triggerValidation","onFieldChange","formRef","isdefault","defaultvalue","returnkeytype","onSubmitEditing","_this$form6","isDone","submitondone","submit","current","_nextRef$current$focu","_nextRef$current","focus","placeholder","createElement","style","styles","root","onLayout","event","handleLayout","_background","_extends","getTestPropsForLabel","errorMsg"],"sources":["form-field.component.tsx"],"sourcesContent":["import React from 'react';\nimport {Text, View} from 'react-native';\nimport { BaseComponent, BaseComponentState } from '@wavemaker/app-rn-runtime/core/base.component';\nimport { widgetsWithUndefinedValue } from '@wavemaker/app-rn-runtime/core/utils';\nimport { isEqual, isNil, get, find, cloneDeep, forEach, keys } from 'lodash';\n\nimport WmFormFieldProps from './form-field.props';\nimport { DEFAULT_CLASS, WmFormFieldStyles } from './form-field.styles';\nimport {PERFORMANCE_LOGGER} from \"@wavemaker/app-rn-runtime/core/logger\";\n\nexport class WmFormFieldState extends BaseComponentState<WmFormFieldProps> {\n isValid = true;\n}\n\nexport default class WmFormField extends BaseComponent<WmFormFieldProps, WmFormFieldState, WmFormFieldStyles> {\n public form: any;\n public formwidget: any;\n public fieldIndex: number = -1;\n public _syncValidators: any;\n public defaultValidatorMessages: any = [];\n private notifyForFields: any = [];\n private _asyncValidatorFn: any;\n constructor(props: WmFormFieldProps) {\n super(props, DEFAULT_CLASS, new WmFormFieldProps(), new WmFormFieldState());\n if (!this.form) {\n this.form = props.formScope && props.formScope();\n }\n }\n\n componentDidMount() {\n super.componentDidMount();\n this.formwidget = (this.props.formKey && this.form?.formWidgets[this.props.formKey])\n || (this.props.name && this.form?.formWidgets[this.props.name]);\n this.form?.registerFormFields(this.form.formFields, this.form.formWidgets);\n }\n\n onFieldChangeEvt(name: string, $new: any, $old: any, isDefault: boolean) {\n this.notifyChanges();\n if (!isEqual($old, $new)) {\n this.updateState({ props: { datavalue: $new }} as WmFormFieldState, () => {\n !isDefault && this.invokeEventCallback('onChange', [undefined, this, $new, $old]);\n this.validateFormField();\n });\n if (this.form) {\n this.form.updateDataOutput.call(this.form, get(this.props, 'formKey', this.props.name), $new);\n }\n }\n }\n\n // Registers observer of validation fields\n observeOn(fields: any) {\n forEach(fields, (field) => {\n const formfield = find(this.form.formFields, (f) => f.proxy.name === field);\n if (formfield) {\n formfield.notifyForFields.push(this);\n }\n });\n }\n\n // Notifies changes to observing validation fields\n notifyChanges() {\n forEach(this.notifyForFields, (field) => {\n field.formwidget.validate(field.formwidget.datavalue);\n setTimeout(() => field.validateFormField());\n });\n }\n\n getPromiseList(validators: any) {\n const arr: any = [];\n forEach(validators, (fn) => {\n let promise = fn;\n if (fn instanceof Function && fn.bind) {\n promise = fn(this.formwidget.proxy, this.form);\n }\n if (promise instanceof Promise) {\n arr.push(promise);\n }\n });\n return arr;\n }\n\n // this method sets the asyncValidation on the form field. Assigns validationmessages from the returned response\n setAsyncValidators(validators: any) {\n this._asyncValidatorFn = () => {\n return Promise.all(this.getPromiseList(validators)).then(() => {\n return null;\n }, err => {\n let validationMsg: string;\n // if err obj has validationMessage key, then set validationMessage using this value\n // else return the value of the first key in the err object as validation message.\n if (err.hasOwnProperty('errorMessage')) {\n validationMsg = get(err, 'errorMessage');\n } else {\n const messageKeys = keys(err);\n validationMsg = (err[messageKeys[0]]).toString();\n }\n this.setInvalidState(validationMsg);\n return err;\n })\n };\n }\n\n // sets the default validation on the form field\n setValidators(validators: any) {\n let _cloneValidators = cloneDeep(validators);\n this._syncValidators = [];\n forEach(_cloneValidators, (obj, index) => {\n // custom validation is bound to function.\n if (obj && obj instanceof Function) {\n // passing formwidget and form as arguments to the obj (i.e. validator function)\n _cloneValidators[index] = obj.bind(undefined, this.formwidget.proxy, this.form);\n this._syncValidators.push(_cloneValidators[index]);\n } else {\n // checks for default validator like required, maxchars etc.\n const key = get(obj, 'type');\n this.defaultValidatorMessages[key] = get(obj, 'errorMessage');\n const value = get(obj, 'validator');\n let propsObj: any = {\n props: {}\n };\n propsObj.props[key] = value;\n key === 'required' && this.updateState(propsObj as WmFormFieldState);\n this.formwidget.updateState(propsObj as WmFormFieldState);\n }\n });\n }\n\n updateFormWidgetDataset(res: any, displayField: string) {\n this.formwidget.updateState({\n props: {\n dataset: res.data,\n datafield: 'All Fields',\n displayfield: this.formwidget.state.props.displayfield || displayField,\n }\n } as WmFormFieldState);\n }\n\n setInvalidState(msg: string) {\n this.updateState({\n isValid: false,\n props: {\n validationmessage: msg\n }\n } as WmFormFieldState)\n this.formwidget.updateState({\n isValid: false,\n props: {\n validationmessage: msg\n }\n } as WmFormFieldState);\n }\n\n onPropertyChange(name: string, $new: any, $old: any) {\n switch (name) {\n case 'datavalue':\n if (!isEqual($old, $new)) {\n PERFORMANCE_LOGGER.debug(`form field ${this.props.name} changed from ${$old} to ${$new}`);\n }\n break;\n case 'defaultvalue':\n if (!isEqual($old, $new)) {\n get(this, 'form') && this.form.applyDefaultValue(this);\n }\n break;\n case 'primary-key':\n if ($new) {\n this.form.setPrimaryKey(this.props.name);\n }\n break;\n }\n }\n\n setReadOnlyState(updateMode: any) {\n // A field explicitly marked readonly in markup must stay readonly regardless\n // of the form's insert/edit mode toggle.\n if (this.props.readonly) {\n return;\n }\n this.formwidget?.updateState({\n props: {\n readonly: !updateMode,\n }\n } as WmFormFieldState);\n }\n\n validateFormField() {\n if (this.formwidget?.state.isValid === false) {\n const errorType = this.formwidget?.state?.errorType;\n let validationMsg = get(this.defaultValidatorMessages, errorType);\n if (validationMsg) {\n if (validationMsg instanceof Function) {\n // passing formwidget and form as arguments to the errorMessage function.\n validationMsg = validationMsg(this.formwidget.proxy, this.form);\n }\n this.updateState({ props: {\n validationmessage: validationMsg\n }} as WmFormFieldState);\n }\n this.updateState({ isValid: false} as WmFormFieldState);\n } else {\n this.updateState({ isValid: true } as WmFormFieldState);\n }\n\n this._syncValidators?.forEach((fn: any) => {\n const errormsg = fn();\n let validationMsg = errormsg?.errorMessage;\n if (validationMsg) {\n if (validationMsg instanceof Function) {\n // passing formwidget and form as arguments to the errorMessage function.\n validationMsg = validationMsg(this.formwidget.proxy, this.form);\n }\n this.setInvalidState(validationMsg);\n }\n })\n\n this._asyncValidatorFn && this._asyncValidatorFn();\n\n }\n\n get value(){\n return this.state.props.datavalue;\n }\n\n renderWidget(props: WmFormFieldProps) {\n const nextRef = this.form?.fieldRefs[this.fieldIndex + 1];\n const currentRef = this.form?.fieldRefs[this.fieldIndex];\n var childrenWithProps = React.Children.map(props.renderFormFields(this.proxy).props.children, (child) => {\n return React.cloneElement(child, {\n ref: currentRef,\n datavalue: props.datavalue || child?.props?.datavalue,\n value: this.value,\n isValid: this.state.isValid,\n maskchar: props.maskchar,\n displayformat: props.displayformat,\n autocomplete: props.autocomplete,\n autocapitalize: props.autocapitalize,\n uppercase: props.uppercase,\n invokeEvent: this.invokeEventCallback.bind(this),\n triggerValidation: this.validateFormField.bind(this),\n onFieldChange: this.onFieldChangeEvt.bind(this),\n formRef: props.formRef,\n isdefault: props.defaultvalue !== undefined ? true : false,\n ...(props.returnkeytype !== 'auto' ? {\n returnkeytype: props.returnkeytype,\n onSubmitEditing: () => {\n const isDone = props.returnkeytype === 'done';\n if (this.form?.props?.submitondone && isDone) {\n this.form.submit();\n } else if (props.returnkeytype === 'next' && nextRef?.current) {\n nextRef.current.focus?.();\n }\n }\n } : {}),\n ...(!isNil(props?.placeholder) ? { placeholder: props.placeholder } : {})\n });\n });\n return (\n <View \n style={this.styles.root}\n onLayout={(event) => this.handleLayout(event)}\n >\n {this._background}\n {childrenWithProps}\n {this.state.isValid === false && !!props.validationmessage && <Text {...this.getTestPropsForLabel('error_msg')} style={this.styles.errorMsg}>{props.validationmessage}</Text>}\n </View>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -378,15 +378,18 @@ export default class WmList extends BaseComponent {
378
378
  });
379
379
  }
380
380
  this.subscribe('scroll', event => {
381
- var _event$nativeEvent, _event$nativeEvent2, _event$nativeEvent3;
381
+ var _event$nativeEvent, _event$nativeEvent2, _event$nativeEvent3, _event$nativeEvent4;
382
382
  const scrollPosition = event === null || event === void 0 || (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 || (_event$nativeEvent = _event$nativeEvent.contentOffset) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.y;
383
+ if (scrollPosition < 0) {
384
+ return;
385
+ }
383
386
  const contentHeight = event === null || event === void 0 || (_event$nativeEvent2 = event.nativeEvent) === null || _event$nativeEvent2 === void 0 || (_event$nativeEvent2 = _event$nativeEvent2.contentSize) === null || _event$nativeEvent2 === void 0 ? void 0 : _event$nativeEvent2.height;
384
387
  const viewportHeight = event === null || event === void 0 || (_event$nativeEvent3 = event.nativeEvent) === null || _event$nativeEvent3 === void 0 || (_event$nativeEvent3 = _event$nativeEvent3.layoutMeasurement) === null || _event$nativeEvent3 === void 0 ? void 0 : _event$nativeEvent3.height;
385
388
 
386
389
  //checking user scrolled till bottom of the list logic
387
390
  const threshold = 50; // px
388
391
  const isVisible = scrollPosition + viewportHeight >= contentHeight - threshold;
389
- if (isVisible && !this.scrolledToEnd) {
392
+ if (isVisible && !this.scrolledToEnd && (event === null || event === void 0 || (_event$nativeEvent4 = event.nativeEvent) === null || _event$nativeEvent4 === void 0 ? void 0 : _event$nativeEvent4.scrollDelta) !== 0) {
390
393
  this.scrolledToEnd = true;
391
394
  //console.log('user scrolled till end');
392
395
  this.loadData();