@wavemaker/app-rn-runtime 11.14.3-rc.6401 → 11.15.0-rc.6403
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/actions/notification-action.js +1 -0
- package/actions/notification-action.js.map +1 -1
- package/components/basic/bottomsheet/bottomsheet.component.js +58 -23
- package/components/basic/bottomsheet/bottomsheet.component.js.map +1 -1
- package/components/basic/button/button.component.js +56 -7
- package/components/basic/button/button.component.js.map +1 -1
- package/components/basic/button/button.styles.js +0 -1
- package/components/basic/button/button.styles.js.map +1 -1
- package/components/basic/message/message.component.js +1 -1
- package/components/basic/message/message.component.js.map +1 -1
- package/components/basic/message/message.props.js +1 -0
- package/components/basic/message/message.props.js.map +1 -1
- package/components/basic/picture/picture.component.js +2 -2
- package/components/basic/picture/picture.component.js.map +1 -1
- package/components/chart/bar-chart/bar-chart.component.js +13 -2
- package/components/chart/bar-chart/bar-chart.component.js.map +1 -1
- package/components/chart/bar-chart/bar-chart.props.js +1 -0
- package/components/chart/bar-chart/bar-chart.props.js.map +1 -1
- package/components/container/accordion/accordion.component.js +10 -3
- package/components/container/accordion/accordion.component.js.map +1 -1
- package/components/container/accordion/accordion.styles.js +6 -2
- package/components/container/accordion/accordion.styles.js.map +1 -1
- package/components/container/container.component.js +132 -50
- package/components/container/container.component.js.map +1 -1
- package/components/container/container.props.js +1 -0
- package/components/container/container.props.js.map +1 -1
- package/components/container/panel/panel.component.js +8 -1
- package/components/container/panel/panel.component.js.map +1 -1
- package/components/container/panel/panel.props.js +2 -0
- package/components/container/panel/panel.props.js.map +1 -1
- package/components/container/tile/tile.component.js +3 -0
- package/components/container/tile/tile.component.js.map +1 -1
- package/components/container/wizard/wizard.component.js +1 -1
- package/components/container/wizard/wizard.component.js.map +1 -1
- package/components/container/wizard/wizard.props.js +1 -0
- package/components/container/wizard/wizard.props.js.map +1 -1
- package/components/container/wizard/wizard.styles.js +0 -13
- package/components/container/wizard/wizard.styles.js.map +1 -1
- package/components/data/form/form-body/form-body.component.js +2 -1
- package/components/data/form/form-body/form-body.component.js.map +1 -1
- package/components/data/form/form-footer/form-footer.component.js +2 -1
- package/components/data/form/form-footer/form-footer.component.js.map +1 -1
- package/components/input/chips/chips.component.js +2 -2
- package/components/input/chips/chips.component.js.map +1 -1
- package/components/input/chips/chips.styles.js +1 -0
- package/components/input/chips/chips.styles.js.map +1 -1
- package/components/input/currency/currency.component.js +3 -1
- package/components/input/currency/currency.component.js.map +1 -1
- package/components/input/epoch/base-datetime.component.js +3 -1
- package/components/input/epoch/base-datetime.component.js.map +1 -1
- package/components/input/number/number.component.js +2 -1
- package/components/input/number/number.component.js.map +1 -1
- package/components/input/select/select.component.js +76 -35
- package/components/input/select/select.component.js.map +1 -1
- package/components/input/text/text.component.js +2 -1
- package/components/input/text/text.component.js.map +1 -1
- package/components/input/textarea/textarea.component.js +2 -1
- package/components/input/textarea/textarea.component.js.map +1 -1
- package/components/input/toggle/toggle.component.js +12 -4
- package/components/input/toggle/toggle.component.js.map +1 -1
- package/components/input/toggle/toggle.props.js +5 -0
- package/components/input/toggle/toggle.props.js.map +1 -1
- package/components/navigation/popover/popover.component.js +5 -1
- package/components/navigation/popover/popover.component.js.map +1 -1
- package/core/advanced-promise-rejection-tracker.js +208 -0
- package/core/advanced-promise-rejection-tracker.js.map +1 -0
- package/core/base.component.js +8 -3
- package/core/base.component.js.map +1 -1
- package/core/components/error-fallback/error-fallback.component.js +50 -18
- package/core/components/error-fallback/error-fallback.component.js.map +1 -1
- package/core/components/error-fallback/error-fallback.styles.js +4 -1
- package/core/components/error-fallback/error-fallback.styles.js.map +1 -1
- package/core/error-boundary.component.js +17 -1
- package/core/error-boundary.component.js.map +1 -1
- package/core/fixed-view.component.js +19 -2
- package/core/fixed-view.component.js.map +1 -1
- package/core/global-error-handler.service.js +103 -0
- package/core/global-error-handler.service.js.map +1 -0
- package/core/tappable.component.js +7 -4
- package/core/tappable.component.js.map +1 -1
- package/core/toast.service.js.map +1 -1
- package/npm-shrinkwrap.json +5 -5
- package/package-lock.json +5 -5
- package/package.json +2 -2
- package/runtime/App.js +124 -13
- package/runtime/App.js.map +1 -1
- package/runtime/base-page.component.js +11 -2
- package/runtime/base-page.component.js.map +1 -1
- package/runtime/navigator/drawer.navigator.js +1 -0
- package/runtime/navigator/drawer.navigator.js.map +1 -1
- package/runtime/services/device/camera-service.js +31 -20
- package/runtime/services/device/camera-service.js.map +1 -1
- package/styles/theme.js +17 -3
- package/styles/theme.js.map +1 -1
- package/styles/theme.variables.js +2 -0
- package/styles/theme.variables.js.map +1 -1
|
@@ -23,6 +23,7 @@ export class NotificationAction extends BaseAction {
|
|
|
23
23
|
o.hideOnClick = !params.showclosebutton && (options.hideOnClick || true);
|
|
24
24
|
o.showclosebutton = params.showclosebutton;
|
|
25
25
|
o.closeiconclass = params.closeiconclass || 'wi wi-close';
|
|
26
|
+
o.messageiconclass = params.messageiconclass;
|
|
26
27
|
const toasterPosition = options.position || params.toasterPosition || 'bottom right';
|
|
27
28
|
const placement = toasterPosition.split(' ')[0];
|
|
28
29
|
switch (placement) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BaseAction","DEFAULT_DURATION","NotificationAction","constructor","config","_defineProperty","showDialog","prepareToastOptions","options","_options$class","_params$class","params","paramProvider","o","text","message","type","class","toLowerCase","onClose","onClick","onOk","content","partialContent","hideOnClick","showclosebutton","closeiconclass","toasterPosition","position","placement","split","styles","top","bottom","duration","parseInt","name","getMessage","invoke","success","error","operation","toasterService","showToast","onCancel"],"sources":["notification-action.ts"],"sourcesContent":["import { ActionConfig, BaseAction } from \"./base-action\";\nimport { ToastOptions, ToastService } from '@wavemaker/app-rn-runtime/core/toast.service';\nimport React from 'react';\nexport interface NotificationActionConfig extends ActionConfig {\n showDialog: Function;\n onOk: any;\n onCancel: any;\n onClose: any;\n operation: string;\n partialContent: React.ReactNode;\n toasterService: () => ToastService;\n}\nconst DEFAULT_DURATION = 3000;\nexport class NotificationAction extends BaseAction<NotificationActionConfig> {\n showDialog: Function;\n constructor(config: NotificationActionConfig) {\n super(config);\n this.showDialog = config.showDialog;\n }\n\n prepareToastOptions(options: any = {}) {\n const params = this.config.paramProvider();\n const o = {} as ToastOptions;\n o.text = options.message || params.text;\n o.type = options.class?.toLowerCase() || params.class?.toLowerCase();\n o.onClose = () => {\n this.config.onClose && this.config.onClose(this);\n },\n o.onClick = () => {\n this.config.onOk && this.config.onOk(this);\n },\n o.content = this.config.partialContent;\n o.hideOnClick = !params.showclosebutton && (options.hideOnClick || true);\n o.showclosebutton = params.showclosebutton;\n o.closeiconclass = params.closeiconclass || 'wi wi-close';\n const toasterPosition = options.position || params.toasterPosition || 'bottom right';\n const placement = toasterPosition.split(' ')[0];\n switch(placement) {\n case 'top':\n o.styles = {top: 0};\n break;\n case 'bottom':\n o.styles = {bottom: 0};\n break;\n case 'center':\n o.styles = {top: '50%'};\n break;\n }\n if (this.config.partialContent) {\n if (!o.styles) {\n o.styles = {};\n }\n }\n if (!params.duration) {\n params.duration = (params.duration !== 0 && o.type === 'success') ? DEFAULT_DURATION : 0;\n }\n o.duration = parseInt(options.duration || params.duration);\n o.name = this.name;\n return o;\n }\n\n getMessage() {\n return this.config.paramProvider().text;\n }\n\n invoke(options: any, success: any, error: any) {\n super.invoke(options, success, error);\n if (this.config.operation === 'toast') {\n const toasterService = this.config.toasterService();\n return toasterService.showToast(this.prepareToastOptions(options));\n } else {\n return this.showDialog && this.showDialog({...this.params, onOk: this.config.onOk, onCancel: this.config.onCancel, onClose: this.config.onClose});\n }\n }\n}\n"],"mappings":";;;AAAA,SAAuBA,UAAU,QAAQ,eAAe;AAYxD,MAAMC,gBAAgB,GAAG,IAAI;AAC7B,OAAO,MAAMC,kBAAkB,SAASF,UAAU,CAA2B;EAEzEG,WAAWA,CAACC,MAAgC,EAAE;IAC1C,KAAK,CAACA,MAAM,CAAC;IAACC,eAAA;IACd,IAAI,CAACC,UAAU,GAAGF,MAAM,CAACE,UAAU;EACvC;EAEAC,mBAAmBA,CAACC,OAAY,GAAG,CAAC,CAAC,EAAE;IAAA,IAAAC,cAAA,EAAAC,aAAA;IACnC,MAAMC,MAAM,GAAG,IAAI,CAACP,MAAM,CAACQ,aAAa,CAAC,CAAC;IAC1C,MAAMC,CAAC,GAAG,CAAC,CAAiB;IAC5BA,CAAC,CAACC,IAAI,GAAGN,OAAO,CAACO,OAAO,IAAIJ,MAAM,CAACG,IAAI;IACvCD,CAAC,CAACG,IAAI,GAAG,EAAAP,cAAA,GAAAD,OAAO,CAACS,KAAK,cAAAR,cAAA,uBAAbA,cAAA,CAAeS,WAAW,CAAC,CAAC,OAAAR,aAAA,GAAIC,MAAM,CAACM,KAAK,cAAAP,aAAA,uBAAZA,aAAA,CAAcQ,WAAW,CAAC,CAAC;IACpEL,CAAC,CAACM,OAAO,GAAG,MAAM;MACd,IAAI,CAACf,MAAM,CAACe,OAAO,IAAI,IAAI,CAACf,MAAM,CAACe,OAAO,CAAC,IAAI,CAAC;IACpD,CAAC,EACDN,CAAC,CAACO,OAAO,GAAG,MAAM;MACd,IAAI,CAAChB,MAAM,CAACiB,IAAI,IAAI,IAAI,CAACjB,MAAM,CAACiB,IAAI,CAAC,IAAI,CAAC;IAC9C,CAAC,EACDR,CAAC,CAACS,OAAO,GAAG,IAAI,CAAClB,MAAM,CAACmB,cAAc;IACtCV,CAAC,CAACW,WAAW,GAAG,CAACb,MAAM,CAACc,eAAe,KAAKjB,OAAO,CAACgB,WAAW,IAAI,IAAI,CAAC;IACxEX,CAAC,CAACY,eAAe,GAAGd,MAAM,CAACc,eAAe;IAC1CZ,CAAC,CAACa,cAAc,GAAGf,MAAM,CAACe,cAAc,IAAI,aAAa;
|
|
1
|
+
{"version":3,"names":["BaseAction","DEFAULT_DURATION","NotificationAction","constructor","config","_defineProperty","showDialog","prepareToastOptions","options","_options$class","_params$class","params","paramProvider","o","text","message","type","class","toLowerCase","onClose","onClick","onOk","content","partialContent","hideOnClick","showclosebutton","closeiconclass","messageiconclass","toasterPosition","position","placement","split","styles","top","bottom","duration","parseInt","name","getMessage","invoke","success","error","operation","toasterService","showToast","onCancel"],"sources":["notification-action.ts"],"sourcesContent":["import { ActionConfig, BaseAction } from \"./base-action\";\nimport { ToastOptions, ToastService } from '@wavemaker/app-rn-runtime/core/toast.service';\nimport React from 'react';\nexport interface NotificationActionConfig extends ActionConfig {\n showDialog: Function;\n onOk: any;\n onCancel: any;\n onClose: any;\n operation: string;\n partialContent: React.ReactNode;\n toasterService: () => ToastService;\n}\nconst DEFAULT_DURATION = 3000;\nexport class NotificationAction extends BaseAction<NotificationActionConfig> {\n showDialog: Function;\n constructor(config: NotificationActionConfig) {\n super(config);\n this.showDialog = config.showDialog;\n }\n\n prepareToastOptions(options: any = {}) {\n const params = this.config.paramProvider();\n const o = {} as ToastOptions;\n o.text = options.message || params.text;\n o.type = options.class?.toLowerCase() || params.class?.toLowerCase();\n o.onClose = () => {\n this.config.onClose && this.config.onClose(this);\n },\n o.onClick = () => {\n this.config.onOk && this.config.onOk(this);\n },\n o.content = this.config.partialContent;\n o.hideOnClick = !params.showclosebutton && (options.hideOnClick || true);\n o.showclosebutton = params.showclosebutton;\n o.closeiconclass = params.closeiconclass || 'wi wi-close';\n o.messageiconclass = params.messageiconclass;\n const toasterPosition = options.position || params.toasterPosition || 'bottom right';\n const placement = toasterPosition.split(' ')[0];\n switch(placement) {\n case 'top':\n o.styles = {top: 0};\n break;\n case 'bottom':\n o.styles = {bottom: 0};\n break;\n case 'center':\n o.styles = {top: '50%'};\n break;\n }\n if (this.config.partialContent) {\n if (!o.styles) {\n o.styles = {};\n }\n }\n if (!params.duration) {\n params.duration = (params.duration !== 0 && o.type === 'success') ? DEFAULT_DURATION : 0;\n }\n o.duration = parseInt(options.duration || params.duration);\n o.name = this.name;\n return o;\n }\n\n getMessage() {\n return this.config.paramProvider().text;\n }\n\n invoke(options: any, success: any, error: any) {\n super.invoke(options, success, error);\n if (this.config.operation === 'toast') {\n const toasterService = this.config.toasterService();\n return toasterService.showToast(this.prepareToastOptions(options));\n } else {\n return this.showDialog && this.showDialog({...this.params, onOk: this.config.onOk, onCancel: this.config.onCancel, onClose: this.config.onClose});\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ import { DEFAULT_CLASS } from './bottomsheet.styles';
|
|
|
12
12
|
import { createSkeleton } from '../skeleton/skeleton.component';
|
|
13
13
|
import { AccessibilityWidgetType, getAccessibilityProps } from '@wavemaker/app-rn-runtime/core/accessibility';
|
|
14
14
|
import { ModalProvider } from '@wavemaker/app-rn-runtime/core/modal.service';
|
|
15
|
-
import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
|
|
15
|
+
import { SafeAreaInsetsContext, SafeAreaView } from 'react-native-safe-area-context';
|
|
16
16
|
|
|
17
17
|
// Web-only: Runs all bottom sheet animations on the JS thread (sets useNativeDriver to false)
|
|
18
18
|
// Prevents errors on web where native driver animations are not supported
|
|
@@ -366,10 +366,16 @@ export default class WmBottomsheet extends BaseComponent {
|
|
|
366
366
|
// panResponder for bottom sheet scroll view
|
|
367
367
|
_defineProperty(this, "panResponder", PanResponder.create({
|
|
368
368
|
onStartShouldSetPanResponder: (_, gestureState) => {
|
|
369
|
+
if (this.props.disablescrollonrest && !this.state.isExpanded) {
|
|
370
|
+
return true;
|
|
371
|
+
}
|
|
369
372
|
// Only handle the gesture if we're at the top and swiping down
|
|
370
373
|
return gestureState.dy > 0 && this.state.scrollOffset <= 0;
|
|
371
374
|
},
|
|
372
375
|
onMoveShouldSetPanResponder: (_, gestureState) => {
|
|
376
|
+
if (this.props.disablescrollonrest && !this.state.isExpanded) {
|
|
377
|
+
return Math.abs(gestureState.dy) > 2;
|
|
378
|
+
}
|
|
373
379
|
// Only handle the gesture if we're at the top and swiping down
|
|
374
380
|
return gestureState.dy > 0 && this.state.scrollOffset <= 0;
|
|
375
381
|
},
|
|
@@ -383,6 +389,12 @@ export default class WmBottomsheet extends BaseComponent {
|
|
|
383
389
|
if (gestureState.dy > 0 && this.translateY && this.lastGestureDyShared) {
|
|
384
390
|
const newTranslateY = Math.max(0, this.lastGestureDyShared.value + gestureState.dy);
|
|
385
391
|
this.translateY.value = newTranslateY;
|
|
392
|
+
// Reset expand flag if dragging down
|
|
393
|
+
this.isDragHandleExpanding = false;
|
|
394
|
+
} else if (gestureState.dy < 0 && this.props.expand && this.props.bottomsheetheightratio !== 1 && !this.isDragHandleExpanding && !this.state.isExpanded) {
|
|
395
|
+
// Only trigger expand once with threshold of -50px upward drag
|
|
396
|
+
this.isDragHandleExpanding = true;
|
|
397
|
+
this.expandBottomSheet();
|
|
386
398
|
}
|
|
387
399
|
},
|
|
388
400
|
onPanResponderRelease: (_, gestureState) => {
|
|
@@ -531,6 +543,7 @@ export default class WmBottomsheet extends BaseComponent {
|
|
|
531
543
|
}) => {
|
|
532
544
|
// Store topInset for later use (avoid mutation during render)
|
|
533
545
|
const topInset = (insets === null || insets === void 0 ? void 0 : insets.top) || 0;
|
|
546
|
+
const bottomInset = (insets === null || insets === void 0 ? void 0 : insets.bottom) || 0;
|
|
534
547
|
// Update the instance variable outside of render cycle
|
|
535
548
|
if (this.topInset !== topInset) {
|
|
536
549
|
requestAnimationFrame(() => {
|
|
@@ -570,7 +583,9 @@ export default class WmBottomsheet extends BaseComponent {
|
|
|
570
583
|
style: contentStyle
|
|
571
584
|
}, props.children)) : /*#__PURE__*/React.createElement(Animated.View, {
|
|
572
585
|
style: contentStyle
|
|
573
|
-
}, props.children))),
|
|
586
|
+
}, props.children))), Platform.OS === 'android' && !this.props.modal && bottomInset > 40 && /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
587
|
+
edges: ['bottom']
|
|
588
|
+
}), props.enablemodalsupport && this.state.localModalsOpened && this.state.localModalsOpened.map((o, i) => /*#__PURE__*/React.createElement(View, {
|
|
574
589
|
key: (o.name || '') + i,
|
|
575
590
|
onStartShouldSetResponder: () => true,
|
|
576
591
|
onResponderEnd: () => o.isModal && this.sheetModalService.hideModal(o),
|
|
@@ -711,27 +726,47 @@ export default class WmBottomsheet extends BaseComponent {
|
|
|
711
726
|
}
|
|
712
727
|
renderWidget(props) {
|
|
713
728
|
if (!this.state.isBottomsheetVisible) return null;
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
729
|
+
return /*#__PURE__*/React.createElement(SafeAreaInsetsContext.Consumer, null, (insets = {
|
|
730
|
+
top: 0,
|
|
731
|
+
bottom: 0,
|
|
732
|
+
left: 0,
|
|
733
|
+
right: 0
|
|
734
|
+
}) => {
|
|
735
|
+
// Use SafeAreaView on Android with button navigation to render the bottom sheet above the nav bar (when modal props is true)
|
|
736
|
+
// Button navigation is identified when bottom inset >= 40
|
|
737
|
+
const hasButtonNavigation = Platform.OS === 'android' && ((insets === null || insets === void 0 ? void 0 : insets.bottom) || 0) >= 40;
|
|
738
|
+
const wrapWithSafeArea = children => {
|
|
739
|
+
if (hasButtonNavigation) {
|
|
740
|
+
return /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
741
|
+
style: {
|
|
742
|
+
flex: 1
|
|
743
|
+
}
|
|
744
|
+
}, children);
|
|
745
|
+
}
|
|
746
|
+
return children;
|
|
747
|
+
};
|
|
748
|
+
if (props.modal) {
|
|
749
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
750
|
+
visible: this.state.isBottomsheetVisible,
|
|
751
|
+
transparent: true,
|
|
752
|
+
animationType: "none",
|
|
753
|
+
onRequestClose: () => {
|
|
754
|
+
if (!this.props.disableswipedownclose && this.props.autoclose !== 'disabled') {
|
|
755
|
+
this.closeSheet();
|
|
756
|
+
}
|
|
757
|
+
},
|
|
758
|
+
statusBarTranslucent: false
|
|
759
|
+
}, wrapWithSafeArea(/*#__PURE__*/React.createElement(KeyboardAvoidingView, {
|
|
760
|
+
style: {
|
|
761
|
+
flex: 1
|
|
762
|
+
},
|
|
763
|
+
behavior: 'padding',
|
|
764
|
+
keyboardVerticalOffset: Platform.OS === 'ios' ? 0 : undefined
|
|
765
|
+
}, this.renderContent(props))));
|
|
766
|
+
} else {
|
|
767
|
+
return this.renderContent(props);
|
|
768
|
+
}
|
|
769
|
+
});
|
|
735
770
|
}
|
|
736
771
|
}
|
|
737
772
|
//# sourceMappingURL=bottomsheet.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createRef","BaseComponent","BaseComponentState","View","PanResponder","Dimensions","TouchableWithoutFeedback","Platform","StatusBar","BackHandler","KeyboardAvoidingView","Keyboard","Modal","Pressable","ScrollView","Animated","useAnimatedStyle","withTiming","runOnJS","Easing","makeMutable","cancelAnimation","WmBottomsheetProps","DEFAULT_CLASS","createSkeleton","AccessibilityWidgetType","getAccessibilityProps","ModalProvider","SafeAreaInsetsContext","OS","RN","require","RNAnimated","__wmPatchedNoNativeDriver","wrap","name","original","value","config","patched","useNativeDriver","_","height","SCREEN_HEIGHT","get","WmBottomsheetState","constructor","args","_defineProperty","AnimatedBottomsheetContent","translateY","backdropOpacity","sheetHeight","lastGestureDy","styles","props","children","panHandlers","dragHandlePanHandlers","onBackdropPress","onDragHandlePress","getTestProps","enabledragsettle","backdropAnimatedStyle","opacity","containerAnimatedStyle","transform","contentStyle","paddingBottom","createElement","Fragment","onPress","_extends","style","backdrop","BOTTOMSHEET","container","dragHandleContainer","dragIconHandle","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","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","sheetMinimumHeight","bottomsheetminimumheight","create","onStartShouldSetPanResponder","scrollOffset","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","newTranslateY","onPanResponderRelease","handleSwipeGesture","onPanResponderTerminate","isDragHandleExpanding","expand","expandBottomSheet","offsetY","nativeEvent","contentOffset","y","isScrolling","handleClose","requestAnimationFrame","Consumer","insets","bottom","left","right","root","_background","panResponder","dragHandlePanResponder","handleBackdropPress","handleDragHandlePress","bind","ref","scrollViewRef","sheetContentContainer","contentContainerStyle","sheetScrollContent","alwaysBounceVertical","alwaysBounceHorizontal","bounces","showsVerticalScrollIndicator","scrollEventThrottle","onScroll","handleScroll","nestedScrollEnabled","scrollEnabled","issticky","disablescrollonrest","enablemodalsupport","map","o","i","key","onStartShouldSetResponder","onResponderEnd","isModal","modalOverlay","centered","centeredOverlay","zIndex","elevationIndex","elevation","modalStyle","e","stopPropagation","content","expandedRatio","bottomsheetexpandedheightratio","expandedDefaultHeight","effectiveExpandedRatio","minimumExpandedHeight","showonrender","refresh","forceUpdate","showModal","options","exists","find","list","setTimeout","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","visible","transparent","animationType","onRequestClose","statusBarTranslucent","flex","behavior","keyboardVerticalOffset","undefined","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 } from 'react-native';\nimport { 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 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 } 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}\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}: any) => {\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 {children(contentStyle)}\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\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 constructor(props: WmBottomsheetProps) {\n super(props, DEFAULT_CLASS, new WmBottomsheetProps(), new WmBottomsheetState());\n this.calculatedHeight = this.calculateSheetHeight(props.bottomsheetheightratio);\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 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 // panResponder for bottom sheet scroll view\n panResponder = PanResponder.create({\n onStartShouldSetPanResponder: (_, gestureState) => {\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 onMoveShouldSetPanResponder: (_, gestureState) => {\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 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 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 }\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 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 } as WmBottomsheetState);\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 } 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 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 // Update the instance variable outside of render cycle\n if (this.topInset !== topInset) {\n requestAnimationFrame(() => {\n this.topInset = topInset;\n });\n }\n return (\n <View style={this.styles.root} {...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 >\n {(contentStyle: any) => (\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\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 if (props.modal) {\n\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 <KeyboardAvoidingView\n style={{ flex: 1 }}\n behavior={'padding'}\n keyboardVerticalOffset={Platform.OS === 'ios' ? 0 : undefined}\n >\n {this.renderContent(props)}\n </KeyboardAvoidingView>\n </Modal>\n );\n } else {\n return this.renderContent(props);\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","ScrollView","Animated","useAnimatedStyle","withTiming","runOnJS","Easing","makeMutable","cancelAnimation","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","AnimatedBottomsheetContent","translateY","backdropOpacity","sheetHeight","lastGestureDy","styles","props","children","panHandlers","dragHandlePanHandlers","onBackdropPress","onDragHandlePress","getTestProps","enabledragsettle","backdropAnimatedStyle","opacity","containerAnimatedStyle","transform","contentStyle","paddingBottom","createElement","Fragment","onPress","_extends","style","backdrop","BOTTOMSHEET","container","dragHandleContainer","dragIconHandle","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","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","sheetMinimumHeight","bottomsheetminimumheight","create","onStartShouldSetPanResponder","disablescrollonrest","scrollOffset","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","newTranslateY","isDragHandleExpanding","expand","expandBottomSheet","onPanResponderRelease","handleSwipeGesture","onPanResponderTerminate","offsetY","nativeEvent","contentOffset","y","isScrolling","handleClose","requestAnimationFrame","Consumer","insets","bottom","left","right","bottomInset","root","_background","panResponder","dragHandlePanResponder","handleBackdropPress","handleDragHandlePress","bind","ref","scrollViewRef","sheetContentContainer","contentContainerStyle","sheetScrollContent","alwaysBounceVertical","alwaysBounceHorizontal","bounces","showsVerticalScrollIndicator","scrollEventThrottle","onScroll","handleScroll","nestedScrollEnabled","scrollEnabled","issticky","enablemodalsupport","edges","map","o","i","key","onStartShouldSetResponder","onResponderEnd","isModal","modalOverlay","centered","centeredOverlay","zIndex","elevationIndex","elevation","modalStyle","e","stopPropagation","content","expandedRatio","bottomsheetexpandedheightratio","expandedDefaultHeight","effectiveExpandedRatio","minimumExpandedHeight","showonrender","refresh","forceUpdate","showModal","options","exists","find","list","setTimeout","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","undefined","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 } from 'react-native';\nimport { 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 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}\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}: any) => {\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 {children(contentStyle)}\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\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 constructor(props: WmBottomsheetProps) {\n super(props, DEFAULT_CLASS, new WmBottomsheetProps(), new WmBottomsheetState());\n this.calculatedHeight = this.calculateSheetHeight(props.bottomsheetheightratio);\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 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 // 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 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 } as WmBottomsheetState);\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 } 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 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 return (\n <View style={this.styles.root} {...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 >\n {(contentStyle: any) => (\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 {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 </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,4 +1,7 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
3
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
4
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
2
5
|
import React from 'react';
|
|
3
6
|
import { Text, View } from 'react-native';
|
|
4
7
|
import { BaseComponent, BaseComponentState } from '@wavemaker/app-rn-runtime/core/base.component';
|
|
@@ -10,10 +13,38 @@ import WmIcon from '@wavemaker/app-rn-runtime/components/basic/icon/icon.compone
|
|
|
10
13
|
import { Animatedview } from '@wavemaker/app-rn-runtime/components/basic/animatedview.component';
|
|
11
14
|
import { createSkeleton } from '../skeleton/skeleton.component';
|
|
12
15
|
import { AccessibilityWidgetType, getAccessibilityProps } from '@wavemaker/app-rn-runtime/core/accessibility';
|
|
13
|
-
export class WmButtonState extends BaseComponentState {
|
|
16
|
+
export class WmButtonState extends BaseComponentState {
|
|
17
|
+
constructor(...args) {
|
|
18
|
+
super(...args);
|
|
19
|
+
_defineProperty(this, "contentWidth", void 0);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
14
22
|
export default class WmButton extends BaseComponent {
|
|
15
23
|
constructor(props) {
|
|
16
24
|
super(props, DEFAULT_CLASS, new WmButtonProps());
|
|
25
|
+
_defineProperty(this, "handleContentLayout", event => {
|
|
26
|
+
var _this$styles;
|
|
27
|
+
if (((_this$styles = this.styles) === null || _this$styles === void 0 || (_this$styles = _this$styles.root) === null || _this$styles === void 0 ? void 0 : _this$styles.flex) === 1) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const {
|
|
31
|
+
width
|
|
32
|
+
} = event.nativeEvent.layout;
|
|
33
|
+
const rootWidth = this.styles.root.width;
|
|
34
|
+
const hasExplicitWidth = rootWidth && rootWidth !== '100%' && !(typeof rootWidth === 'string' && rootWidth.includes('%'));
|
|
35
|
+
if (!hasExplicitWidth && width > 0 && this.state.contentWidth !== width) {
|
|
36
|
+
const paddingLeft = this.styles.root.paddingLeft || 0;
|
|
37
|
+
const paddingRight = this.styles.root.paddingRight || 0;
|
|
38
|
+
const paddingLeftNum = typeof paddingLeft === 'number' ? paddingLeft : typeof paddingLeft === 'string' ? parseFloat(paddingLeft) || 0 : 0;
|
|
39
|
+
const paddingRightNum = typeof paddingRight === 'number' ? paddingRight : typeof paddingRight === 'string' ? parseFloat(paddingRight) || 0 : 0;
|
|
40
|
+
const totalWidth = width + paddingLeftNum + paddingRightNum;
|
|
41
|
+
if (totalWidth > 0) {
|
|
42
|
+
this.updateState({
|
|
43
|
+
contentWidth: totalWidth
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
17
48
|
}
|
|
18
49
|
prepareIcon({
|
|
19
50
|
iconclass,
|
|
@@ -66,18 +97,32 @@ export default class WmButton extends BaseComponent {
|
|
|
66
97
|
});
|
|
67
98
|
}
|
|
68
99
|
renderWidget(props) {
|
|
100
|
+
const rootStyle = this.styles.root;
|
|
101
|
+
const isFill = rootStyle.flex === 1;
|
|
102
|
+
const hasExplicitWidth = rootStyle.width !== undefined && rootStyle.width !== null;
|
|
103
|
+
const preventShrink = !isFill && !hasExplicitWidth;
|
|
104
|
+
const buttonWidth = hasExplicitWidth ? rootStyle.width : this.state.contentWidth ? this.state.contentWidth : undefined;
|
|
105
|
+
const isPercentageWidth = typeof buttonWidth === 'string' && buttonWidth.includes('%');
|
|
106
|
+
const tappableWidth = buttonWidth ? isPercentageWidth ? '100%' : buttonWidth : undefined;
|
|
69
107
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Animatedview, {
|
|
70
108
|
entryanimation: props.animation,
|
|
71
109
|
delay: props.animationdelay,
|
|
72
110
|
onLayout: event => this.handleLayout(event),
|
|
73
|
-
style: [
|
|
111
|
+
style: [rootStyle, {
|
|
74
112
|
paddingTop: 0,
|
|
75
113
|
paddingBottom: 0,
|
|
76
114
|
paddingLeft: 0,
|
|
77
115
|
paddingRight: 0,
|
|
78
116
|
overflow: 'hidden',
|
|
79
|
-
flexDirection: 'column'
|
|
80
|
-
|
|
117
|
+
flexDirection: 'column',
|
|
118
|
+
flexShrink: preventShrink ? 0 : 1,
|
|
119
|
+
...(isFill ? {
|
|
120
|
+
flexGrow: 1
|
|
121
|
+
} : {}),
|
|
122
|
+
...(buttonWidth ? {
|
|
123
|
+
width: buttonWidth
|
|
124
|
+
} : {})
|
|
125
|
+
}, rootStyle.height === '100%' ? {
|
|
81
126
|
flex: 1
|
|
82
127
|
} : {}]
|
|
83
128
|
}, this._background, /*#__PURE__*/React.createElement(Tappable, _extends({
|
|
@@ -87,9 +132,11 @@ export default class WmButton extends BaseComponent {
|
|
|
87
132
|
paddingBottom: this.styles.root.paddingBottom,
|
|
88
133
|
paddingLeft: this.styles.root.paddingLeft,
|
|
89
134
|
paddingRight: this.styles.root.paddingRight,
|
|
90
|
-
width: '100%',
|
|
91
135
|
height: this.styles.root.height ? '100%' : null,
|
|
92
|
-
justifyContent: 'center'
|
|
136
|
+
justifyContent: 'center',
|
|
137
|
+
...(tappableWidth ? {
|
|
138
|
+
width: tappableWidth
|
|
139
|
+
} : {})
|
|
93
140
|
},
|
|
94
141
|
rippleColor: this.styles.root.rippleColor,
|
|
95
142
|
target: this
|
|
@@ -98,8 +145,10 @@ export default class WmButton extends BaseComponent {
|
|
|
98
145
|
...getAccessibilityProps(AccessibilityWidgetType.BUTTON, props)
|
|
99
146
|
}
|
|
100
147
|
}), /*#__PURE__*/React.createElement(View, {
|
|
148
|
+
onLayout: this.handleContentLayout,
|
|
101
149
|
style: [this.styles.content, {
|
|
102
|
-
flexDirection: props.iconposition === 'top' ? 'column' : 'row'
|
|
150
|
+
flexDirection: props.iconposition === 'top' ? 'column' : 'row',
|
|
151
|
+
alignSelf: 'center'
|
|
103
152
|
}]
|
|
104
153
|
}, props.iconposition === 'top' && this.prepareIcon(props), props.iconposition === 'left' && this.prepareIcon(props), props.caption ? /*#__PURE__*/React.createElement(Text, _extends({
|
|
105
154
|
style: this.styles.text
|