@wavemaker/app-rn-runtime 11.14.2-rc.6311 → 11.15.0-1.246

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 (96) hide show
  1. package/actions/notification-action.js +1 -0
  2. package/actions/notification-action.js.map +1 -1
  3. package/components/basic/bottomsheet/bottomsheet.component.js +58 -23
  4. package/components/basic/bottomsheet/bottomsheet.component.js.map +1 -1
  5. package/components/basic/button/button.component.js +56 -7
  6. package/components/basic/button/button.component.js.map +1 -1
  7. package/components/basic/button/button.styles.js +0 -1
  8. package/components/basic/button/button.styles.js.map +1 -1
  9. package/components/basic/message/message.component.js +1 -1
  10. package/components/basic/message/message.component.js.map +1 -1
  11. package/components/basic/message/message.props.js +1 -0
  12. package/components/basic/message/message.props.js.map +1 -1
  13. package/components/basic/picture/picture.component.js +2 -2
  14. package/components/basic/picture/picture.component.js.map +1 -1
  15. package/components/chart/bar-chart/bar-chart.component.js +13 -2
  16. package/components/chart/bar-chart/bar-chart.component.js.map +1 -1
  17. package/components/chart/bar-chart/bar-chart.props.js +1 -0
  18. package/components/chart/bar-chart/bar-chart.props.js.map +1 -1
  19. package/components/container/accordion/accordion.component.js +10 -3
  20. package/components/container/accordion/accordion.component.js.map +1 -1
  21. package/components/container/accordion/accordion.styles.js +6 -2
  22. package/components/container/accordion/accordion.styles.js.map +1 -1
  23. package/components/container/container.component.js +132 -50
  24. package/components/container/container.component.js.map +1 -1
  25. package/components/container/container.props.js +1 -0
  26. package/components/container/container.props.js.map +1 -1
  27. package/components/container/panel/panel.component.js +8 -1
  28. package/components/container/panel/panel.component.js.map +1 -1
  29. package/components/container/panel/panel.props.js +2 -0
  30. package/components/container/panel/panel.props.js.map +1 -1
  31. package/components/container/tile/tile.component.js +3 -0
  32. package/components/container/tile/tile.component.js.map +1 -1
  33. package/components/container/wizard/wizard.component.js +1 -1
  34. package/components/container/wizard/wizard.component.js.map +1 -1
  35. package/components/container/wizard/wizard.props.js +1 -0
  36. package/components/container/wizard/wizard.props.js.map +1 -1
  37. package/components/container/wizard/wizard.styles.js +0 -13
  38. package/components/container/wizard/wizard.styles.js.map +1 -1
  39. package/components/data/form/form-body/form-body.component.js +2 -1
  40. package/components/data/form/form-body/form-body.component.js.map +1 -1
  41. package/components/data/form/form-footer/form-footer.component.js +2 -1
  42. package/components/data/form/form-footer/form-footer.component.js.map +1 -1
  43. package/components/input/chips/chips.component.js +2 -2
  44. package/components/input/chips/chips.component.js.map +1 -1
  45. package/components/input/chips/chips.styles.js +1 -0
  46. package/components/input/chips/chips.styles.js.map +1 -1
  47. package/components/input/currency/currency.component.js +3 -1
  48. package/components/input/currency/currency.component.js.map +1 -1
  49. package/components/input/epoch/base-datetime.component.js +3 -1
  50. package/components/input/epoch/base-datetime.component.js.map +1 -1
  51. package/components/input/number/number.component.js +2 -1
  52. package/components/input/number/number.component.js.map +1 -1
  53. package/components/input/select/select.component.js +76 -35
  54. package/components/input/select/select.component.js.map +1 -1
  55. package/components/input/text/text.component.js +2 -1
  56. package/components/input/text/text.component.js.map +1 -1
  57. package/components/input/textarea/textarea.component.js +2 -1
  58. package/components/input/textarea/textarea.component.js.map +1 -1
  59. package/components/input/toggle/toggle.component.js +12 -4
  60. package/components/input/toggle/toggle.component.js.map +1 -1
  61. package/components/input/toggle/toggle.props.js +5 -0
  62. package/components/input/toggle/toggle.props.js.map +1 -1
  63. package/components/navigation/popover/popover.component.js +5 -1
  64. package/components/navigation/popover/popover.component.js.map +1 -1
  65. package/core/advanced-promise-rejection-tracker.js +208 -0
  66. package/core/advanced-promise-rejection-tracker.js.map +1 -0
  67. package/core/base.component.js +8 -3
  68. package/core/base.component.js.map +1 -1
  69. package/core/components/error-fallback/error-fallback.component.js +50 -18
  70. package/core/components/error-fallback/error-fallback.component.js.map +1 -1
  71. package/core/components/error-fallback/error-fallback.styles.js +4 -1
  72. package/core/components/error-fallback/error-fallback.styles.js.map +1 -1
  73. package/core/error-boundary.component.js +17 -1
  74. package/core/error-boundary.component.js.map +1 -1
  75. package/core/fixed-view.component.js +19 -2
  76. package/core/fixed-view.component.js.map +1 -1
  77. package/core/global-error-handler.service.js +103 -0
  78. package/core/global-error-handler.service.js.map +1 -0
  79. package/core/tappable.component.js +7 -4
  80. package/core/tappable.component.js.map +1 -1
  81. package/core/toast.service.js.map +1 -1
  82. package/npm-shrinkwrap.json +1126 -1347
  83. package/package-lock.json +1126 -1347
  84. package/package.json +2 -2
  85. package/runtime/App.js +124 -13
  86. package/runtime/App.js.map +1 -1
  87. package/runtime/base-page.component.js +11 -2
  88. package/runtime/base-page.component.js.map +1 -1
  89. package/runtime/navigator/drawer.navigator.js +1 -0
  90. package/runtime/navigator/drawer.navigator.js.map +1 -1
  91. package/runtime/services/device/camera-service.js +31 -20
  92. package/runtime/services/device/camera-service.js.map +1 -1
  93. package/styles/theme.js +17 -3
  94. package/styles/theme.js.map +1 -1
  95. package/styles/theme.variables.js +2 -0
  96. 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":"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","ignoreList":[]}
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":";;;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;IACzDb,CAAC,CAACc,gBAAgB,GAAGhB,MAAM,CAACgB,gBAAgB;IAC5C,MAAMC,eAAe,GAAGpB,OAAO,CAACqB,QAAQ,IAAIlB,MAAM,CAACiB,eAAe,IAAI,cAAc;IACpF,MAAME,SAAS,GAAGF,eAAe,CAACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAOD,SAAS;MACZ,KAAK,KAAK;QACNjB,CAAC,CAACmB,MAAM,GAAG;UAACC,GAAG,EAAE;QAAC,CAAC;QACnB;MACJ,KAAK,QAAQ;QACTpB,CAAC,CAACmB,MAAM,GAAG;UAACE,MAAM,EAAE;QAAC,CAAC;QACtB;MACJ,KAAK,QAAQ;QACTrB,CAAC,CAACmB,MAAM,GAAG;UAACC,GAAG,EAAE;QAAK,CAAC;QACvB;IACR;IACA,IAAI,IAAI,CAAC7B,MAAM,CAACmB,cAAc,EAAE;MAC5B,IAAI,CAACV,CAAC,CAACmB,MAAM,EAAE;QACXnB,CAAC,CAACmB,MAAM,GAAG,CAAC,CAAC;MACjB;IACJ;IACA,IAAI,CAACrB,MAAM,CAACwB,QAAQ,EAAE;MACpBxB,MAAM,CAACwB,QAAQ,GAAIxB,MAAM,CAACwB,QAAQ,KAAK,CAAC,IAAItB,CAAC,CAACG,IAAI,KAAK,SAAS,GAAIf,gBAAgB,GAAG,CAAC;IAC1F;IACAY,CAAC,CAACsB,QAAQ,GAAGC,QAAQ,CAAC5B,OAAO,CAAC2B,QAAQ,IAAIxB,MAAM,CAACwB,QAAQ,CAAC;IAC1DtB,CAAC,CAACwB,IAAI,GAAG,IAAI,CAACA,IAAI;IAClB,OAAOxB,CAAC;EACV;EAEFyB,UAAUA,CAAA,EAAG;IACT,OAAO,IAAI,CAAClC,MAAM,CAACQ,aAAa,CAAC,CAAC,CAACE,IAAI;EAC3C;EAEAyB,MAAMA,CAAC/B,OAAY,EAAEgC,OAAY,EAAEC,KAAU,EAAE;IAC3C,KAAK,CAACF,MAAM,CAAC/B,OAAO,EAAEgC,OAAO,EAAEC,KAAK,CAAC;IACrC,IAAI,IAAI,CAACrC,MAAM,CAACsC,SAAS,KAAK,OAAO,EAAE;MACnC,MAAMC,cAAc,GAAG,IAAI,CAACvC,MAAM,CAACuC,cAAc,CAAC,CAAC;MACnD,OAAOA,cAAc,CAACC,SAAS,CAAC,IAAI,CAACrC,mBAAmB,CAACC,OAAO,CAAC,CAAC;IACtE,CAAC,MAAM;MACH,OAAO,IAAI,CAACF,UAAU,IAAI,IAAI,CAACA,UAAU,CAAC;QAAC,GAAG,IAAI,CAACK,MAAM;QAAEU,IAAI,EAAE,IAAI,CAACjB,MAAM,CAACiB,IAAI;QAAEwB,QAAQ,EAAE,IAAI,CAACzC,MAAM,CAACyC,QAAQ;QAAE1B,OAAO,EAAE,IAAI,CAACf,MAAM,CAACe;MAAO,CAAC,CAAC;IACrJ;EACJ;AACJ","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))), props.enablemodalsupport && this.state.localModalsOpened && this.state.localModalsOpened.map((o, i) => /*#__PURE__*/React.createElement(View, {
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
- if (props.modal) {
715
- return /*#__PURE__*/React.createElement(Modal, {
716
- visible: this.state.isBottomsheetVisible,
717
- transparent: true,
718
- animationType: "none",
719
- onRequestClose: () => {
720
- if (!this.props.disableswipedownclose && this.props.autoclose !== 'disabled') {
721
- this.closeSheet();
722
- }
723
- },
724
- statusBarTranslucent: false
725
- }, /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
726
- style: {
727
- flex: 1
728
- },
729
- behavior: 'padding',
730
- keyboardVerticalOffset: Platform.OS === 'ios' ? 0 : undefined
731
- }, this.renderContent(props)));
732
- } else {
733
- return this.renderContent(props);
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: [this.styles.root, {
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
- }, this.styles.root.height == "100%" ? {
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