@wavemaker-ai/react-runtime 1.0.0-rc.309 → 1.0.0-rc.314

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 (574) hide show
  1. package/.npmignore +4 -0
  2. package/actions/base-action.js +12 -29
  3. package/actions/login-action.js +35 -52
  4. package/actions/logout-action.js +21 -38
  5. package/actions/navigation-action.js +251 -346
  6. package/actions/notification-action.js +121 -149
  7. package/actions/timer-action.js +95 -151
  8. package/actions/toast-provider.js +62 -76
  9. package/actions/toast.js +95 -91
  10. package/actions/toast.service.js +59 -79
  11. package/actions/types/index.js +6 -9
  12. package/components/advanced/carousel/index.js +358 -366
  13. package/components/advanced/carousel/props.js +0 -5
  14. package/components/advanced/carousel/template.js +102 -80
  15. package/components/advanced/login/index.js +227 -285
  16. package/components/advanced/login/props.js +0 -5
  17. package/components/advanced/marquee/index.js +169 -163
  18. package/components/advanced/marquee/props.js +0 -5
  19. package/components/basic/anchor/index.js +207 -187
  20. package/components/basic/anchor/props.js +0 -5
  21. package/components/basic/audio/index.js +110 -72
  22. package/components/basic/audio/props.js +0 -5
  23. package/components/basic/html/index.js +163 -203
  24. package/components/basic/html/props.js +0 -5
  25. package/components/basic/html/utils.js +30 -28
  26. package/components/basic/icon/index.js +98 -84
  27. package/components/basic/icon/props.js +0 -5
  28. package/components/basic/iframe/iframe.utils.js +7 -16
  29. package/components/basic/iframe/index.js +97 -103
  30. package/components/basic/iframe/props.js +0 -5
  31. package/components/basic/label/index.js +156 -134
  32. package/components/basic/label/props.js +0 -5
  33. package/components/basic/message/index.js +129 -113
  34. package/components/basic/message/props.js +0 -5
  35. package/components/basic/picture/index.js +156 -127
  36. package/components/basic/picture/props.js +0 -5
  37. package/components/basic/progress-bar/index.js +240 -176
  38. package/components/basic/progress-bar/props.js +5 -31
  39. package/components/basic/progress-circle/index.js +166 -183
  40. package/components/basic/progress-circle/props.js +14 -34
  41. package/components/basic/richtexteditor/index.js +430 -396
  42. package/components/basic/richtexteditor/props.js +0 -5
  43. package/components/basic/search/index.js +812 -931
  44. package/components/basic/search/props.js +0 -5
  45. package/components/basic/search/providers.js +233 -380
  46. package/components/basic/spinner/index.js +210 -200
  47. package/components/basic/spinner/props.js +4 -22
  48. package/components/basic/tile/index.js +73 -81
  49. package/components/basic/tile/props.js +0 -5
  50. package/components/basic/tree/Components/TreeNodeComponent.js +238 -170
  51. package/components/basic/tree/hooks/useTreePartialNodeApi.js +143 -135
  52. package/components/basic/tree/index.js +378 -454
  53. package/components/basic/tree/props.js +0 -5
  54. package/components/basic/tree/utils.js +129 -185
  55. package/components/basic/video/index.js +161 -107
  56. package/components/basic/video/props.js +0 -5
  57. package/components/chart/index.js +42 -50
  58. package/components/chart/props.js +31 -37
  59. package/components/chart/src/ChartRenderer.js +172 -154
  60. package/components/chart/src/chart.js +391 -213
  61. package/components/chart/src/chartStyles.generated.js +6 -14
  62. package/components/chart/src/chartUtils.js +228 -272
  63. package/components/chart/src/constants.d.ts +13 -0
  64. package/components/chart/src/constants.js +316 -90
  65. package/components/chart/src/d3Setup.js +11 -30
  66. package/components/chart/src/dataUtils.js +362 -446
  67. package/components/chart/src/formatUtils.js +47 -38
  68. package/components/chart/src/index.js +11 -19
  69. package/components/chart/src/nvd3Source.generated.js +5 -13
  70. package/components/chart/src/pieDonutResponsiveLayout.d.ts +5 -0
  71. package/components/chart/src/pieDonutResponsiveLayout.js +76 -96
  72. package/components/chart/src/types.js +0 -5
  73. package/components/common/AppSpinner.js +17 -33
  74. package/components/common/app-spinner.js +11 -22
  75. package/components/common/customTemplate/index.d.ts +3 -0
  76. package/components/common/customTemplate/index.js +6 -0
  77. package/components/common/customTemplate/props.d.ts +20 -0
  78. package/components/common/customTemplate/props.js +0 -0
  79. package/components/common/customTemplate/template.d.ts +3 -0
  80. package/components/common/customTemplate/template.js +27 -0
  81. package/components/common/customTemplate/useCustomTemplate.d.ts +8 -0
  82. package/components/common/customTemplate/useCustomTemplate.js +17 -0
  83. package/components/common/customTemplate/utils.d.ts +6 -0
  84. package/components/common/customTemplate/utils.js +12 -0
  85. package/components/common/index.js +4 -12
  86. package/components/constants.js +81 -77
  87. package/components/container/accordion/accordion-pane/index.js +105 -118
  88. package/components/container/accordion/accordion-pane/props.js +5 -21
  89. package/components/container/accordion/index.js +225 -243
  90. package/components/container/accordion/props.js +5 -16
  91. package/components/container/index.js +214 -150
  92. package/components/container/layout-grid/grid-column/index.js +68 -43
  93. package/components/container/layout-grid/grid-column/props.js +0 -5
  94. package/components/container/layout-grid/grid-row/index.js +12 -29
  95. package/components/container/layout-grid/grid-row/props.js +0 -5
  96. package/components/container/layout-grid/index.js +53 -38
  97. package/components/container/layout-grid/props.js +0 -5
  98. package/components/container/linear-layout/index.js +56 -60
  99. package/components/container/linear-layout/linear-layout-item/index.js +43 -47
  100. package/components/container/linear-layout/linear-layout-item/props.js +0 -5
  101. package/components/container/linear-layout/props.js +0 -5
  102. package/components/container/panel/components/panel-content/index.js +7 -16
  103. package/components/container/panel/components/panel-header/index.js +166 -146
  104. package/components/container/panel/components/panel-header/props.js +0 -5
  105. package/components/container/panel/hooks.js +76 -102
  106. package/components/container/panel/index.js +289 -252
  107. package/components/container/panel/props.js +0 -5
  108. package/components/container/props.js +0 -5
  109. package/components/container/repeat-template/index.js +65 -44
  110. package/components/container/repeat-template/props.js +0 -5
  111. package/components/container/tabs/index.js +517 -526
  112. package/components/container/tabs/props.js +5 -28
  113. package/components/container/tabs/tab-pane/index.js +105 -100
  114. package/components/container/tabs/tab-pane/props.js +0 -5
  115. package/components/container/tabs/utils.js +30 -35
  116. package/components/container/wizard/WizardContext.js +9 -11
  117. package/components/container/wizard/components/StepComponents.js +76 -99
  118. package/components/container/wizard/components/WizardStep.js +107 -85
  119. package/components/container/wizard/index.js +791 -921
  120. package/components/container/wizard/props.js +0 -5
  121. package/components/container/wizard/utils.js +97 -131
  122. package/components/container/wizard/wizard-action/index.js +41 -81
  123. package/components/container/wizard/wizard-step/index.js +140 -120
  124. package/components/data/card/card-actions/index.js +13 -31
  125. package/components/data/card/card-content/index.js +27 -36
  126. package/components/data/card/card-footer/index.js +13 -31
  127. package/components/data/card/index.js +192 -199
  128. package/components/data/card/props.js +0 -5
  129. package/components/data/form/base-form/constant.js +5 -8
  130. package/components/data/form/base-form/hooks/index.js +26 -77
  131. package/components/data/form/base-form/hooks/useFormDataSync.js +106 -212
  132. package/components/data/form/base-form/hooks/useFormOperations.js +109 -161
  133. package/components/data/form/base-form/hooks/useFormSubmission.js +220 -280
  134. package/components/data/form/base-form/hooks/useFormValidation.js +119 -168
  135. package/components/data/form/base-form/hooks/useParentFormRelationship.js +67 -103
  136. package/components/data/form/base-form/index.js +531 -646
  137. package/components/data/form/base-form/props.js +74 -151
  138. package/components/data/form/base-form/utils.js +210 -323
  139. package/components/data/form/dynamic-fields/constant.js +43 -53
  140. package/components/data/form/dynamic-fields/index.js +135 -144
  141. package/components/data/form/dynamic-fields/props.js +0 -5
  142. package/components/data/form/dynamic-fields/utils.js +99 -158
  143. package/components/data/form/form-action/index.js +107 -85
  144. package/components/data/form/form-body/index.js +52 -26
  145. package/components/data/form/form-context.js +43 -59
  146. package/components/data/form/form-controller/hooks/index.js +43 -57
  147. package/components/data/form/form-controller/props.js +5 -8
  148. package/components/data/form/form-controller/utils.js +54 -49
  149. package/components/data/form/form-controller/validation-contrustor.js +203 -426
  150. package/components/data/form/form-controller/withFormController.js +319 -269
  151. package/components/data/form/form-dynamic-section/index.js +47 -41
  152. package/components/data/form/form-dynamic-section/props.js +0 -5
  153. package/components/data/form/form-field/base-field.js +97 -109
  154. package/components/data/form/form-field/index.js +91 -82
  155. package/components/data/form/form-field/props.js +0 -5
  156. package/components/data/form/form-footer/index.js +52 -25
  157. package/components/data/form/form-header/index.js +61 -58
  158. package/components/data/form/index.js +95 -74
  159. package/components/data/form/props.js +0 -5
  160. package/components/data/list/components/GroupHeader.js +34 -33
  161. package/components/data/list/components/GroupedListItems.js +108 -104
  162. package/components/data/list/components/ListContainer.js +22 -27
  163. package/components/data/list/components/ListDND.js +193 -185
  164. package/components/data/list/components/ListHeader.js +32 -49
  165. package/components/data/list/components/ListItem.js +153 -146
  166. package/components/data/list/components/ListItemWithTemplate.js +87 -105
  167. package/components/data/list/components/ListItems.js +180 -194
  168. package/components/data/list/components/ListPagination.js +127 -153
  169. package/components/data/list/components/LoadMoreButton.js +25 -33
  170. package/components/data/list/components/NoDataMessage.js +9 -22
  171. package/components/data/list/components/StandardListItems.js +79 -85
  172. package/components/data/list/components/index.js +31 -119
  173. package/components/data/list/components/props.js +0 -5
  174. package/components/data/list/hooks/index.js +22 -75
  175. package/components/data/list/hooks/props.js +0 -5
  176. package/components/data/list/hooks/useCurrentPageItems.js +20 -38
  177. package/components/data/list/hooks/useGroupedData.js +19 -33
  178. package/components/data/list/hooks/useListData.js +17 -47
  179. package/components/data/list/hooks/useListEffects.js +168 -237
  180. package/components/data/list/hooks/useListEventHandlers.js +301 -285
  181. package/components/data/list/hooks/useListPagination.js +90 -136
  182. package/components/data/list/hooks/useListState.js +49 -91
  183. package/components/data/list/hooks/useListStateManager.js +104 -159
  184. package/components/data/list/hooks/usePaginatedGroupedData.js +74 -110
  185. package/components/data/list/index.d.ts +1 -0
  186. package/components/data/list/index.js +579 -621
  187. package/components/data/list/props.d.ts +4 -0
  188. package/components/data/list/props.js +0 -5
  189. package/components/data/list/templates/media-template.js +29 -50
  190. package/components/data/list/utils/constants.js +20 -32
  191. package/components/data/list/utils/list-helpers.d.ts +2 -1
  192. package/components/data/list/utils/list-helpers.js +71 -115
  193. package/components/data/list/utils/list-widget-methods.js +56 -76
  194. package/components/data/list/utils/widget-instance-utils.js +20 -57
  195. package/components/data/live-filter/index.js +219 -271
  196. package/components/data/live-filter/props.js +5 -12
  197. package/components/data/live-form/index.js +68 -91
  198. package/components/data/live-form/props.js +5 -12
  199. package/components/data/pagination/components/BasicPagination.js +124 -104
  200. package/components/data/pagination/components/ClassicPagination.js +167 -190
  201. package/components/data/pagination/components/InlinePagination.js +97 -98
  202. package/components/data/pagination/components/LoadingComponent.js +17 -30
  203. package/components/data/pagination/components/PageSizeSelector.js +176 -169
  204. package/components/data/pagination/components/PagerNavigation.js +84 -105
  205. package/components/data/pagination/components/TotalRecords.js +48 -47
  206. package/components/data/pagination/components/index.js +14 -47
  207. package/components/data/pagination/components/props.js +0 -5
  208. package/components/data/pagination/hooks/index.js +6 -19
  209. package/components/data/pagination/hooks/props.js +0 -5
  210. package/components/data/pagination/hooks/useNavigationSize.js +12 -21
  211. package/components/data/pagination/hooks/usePagination.js +702 -905
  212. package/components/data/pagination/index.js +336 -389
  213. package/components/data/table/components/AddNewRow.js +122 -154
  214. package/components/data/table/components/EditableCell.js +68 -75
  215. package/components/data/table/components/FieldValidationError.js +19 -20
  216. package/components/data/table/components/RowCells.js +97 -80
  217. package/components/data/table/components/RowExpansionButton.js +43 -39
  218. package/components/data/table/components/SummaryCell.js +54 -88
  219. package/components/data/table/components/SummaryRow.js +45 -52
  220. package/components/data/table/components/SummaryRowFooter.js +35 -42
  221. package/components/data/table/components/TableBody.js +222 -218
  222. package/components/data/table/components/TableDataRow.js +113 -106
  223. package/components/data/table/components/TableFilters.js +391 -390
  224. package/components/data/table/components/TableFooterActions.js +25 -32
  225. package/components/data/table/components/TableHeader.js +460 -435
  226. package/components/data/table/components/TablePanelHeading.js +157 -181
  227. package/components/data/table/components/index.js +27 -95
  228. package/components/data/table/hooks/index.js +21 -230
  229. package/components/data/table/hooks/use-edited-rows.js +59 -94
  230. package/components/data/table/hooks/useCellState.js +58 -83
  231. package/components/data/table/hooks/useCustomExpressionColumns.js +65 -86
  232. package/components/data/table/hooks/useDynamicColumns.js +59 -92
  233. package/components/data/table/hooks/useEditingState.js +30 -41
  234. package/components/data/table/hooks/useFormWidget.js +163 -172
  235. package/components/data/table/hooks/usePaginationState.js +67 -77
  236. package/components/data/table/hooks/usePanelStructure.js +47 -41
  237. package/components/data/table/hooks/useResponsiveColumns.js +14 -20
  238. package/components/data/table/hooks/useRowExpansion.js +131 -127
  239. package/components/data/table/hooks/useRowHandlers.js +56 -69
  240. package/components/data/table/hooks/useRowSelection.js +249 -329
  241. package/components/data/table/hooks/useServerSideSorting.js +109 -175
  242. package/components/data/table/hooks/useTableColumns.js +322 -331
  243. package/components/data/table/hooks/useTableData.js +111 -166
  244. package/components/data/table/hooks/useTableEdit.js +526 -564
  245. package/components/data/table/hooks/useTableEffects.js +60 -107
  246. package/components/data/table/hooks/useTableFilter.js +244 -237
  247. package/components/data/table/hooks/useTableInitialization.js +44 -76
  248. package/components/data/table/hooks/useTableState.js +39 -61
  249. package/components/data/table/hooks/useTableStateManager.js +295 -468
  250. package/components/data/table/index.js +1553 -1713
  251. package/components/data/table/live-table/index.js +157 -219
  252. package/components/data/table/props.js +0 -5
  253. package/components/data/table/table-action/index.js +97 -75
  254. package/components/data/table/table-column/index.js +48 -42
  255. package/components/data/table/table-group/index.js +7 -25
  256. package/components/data/table/table-row/index.js +63 -55
  257. package/components/data/table/table-row-action/index.js +102 -77
  258. package/components/data/table/utils/buildSelectionColumns.js +86 -137
  259. package/components/data/table/utils/columnBuilder.js +116 -158
  260. package/components/data/table/utils/columnProxy.js +48 -66
  261. package/components/data/table/utils/columnWidthDistribution.js +40 -64
  262. package/components/data/table/utils/constants.js +92 -40
  263. package/components/data/table/utils/crud-handlers.js +292 -473
  264. package/components/data/table/utils/dynamic-columns.js +99 -144
  265. package/components/data/table/utils/groupHeaderUtils.js +36 -61
  266. package/components/data/table/utils/index.d.ts +8 -5
  267. package/components/data/table/utils/index.js +419 -639
  268. package/components/data/table/utils/renderDisplayCell.js +127 -169
  269. package/components/data/table/utils/script-page-size-broadcast.js +17 -29
  270. package/components/data/table/utils/selectionUtils.js +59 -113
  271. package/components/data/table/utils/table-helpers.js +38 -74
  272. package/components/data/table/utils/validation.js +35 -78
  273. package/components/data/table/utils/widgetMapping.d.ts +5 -0
  274. package/components/data/table/utils/widgetMapping.js +41 -0
  275. package/components/data/types.js +112 -112
  276. package/components/data/utils/field-data-utils.js +38 -42
  277. package/components/data/utils/filter-field-util.js +42 -44
  278. package/components/data/utils/index.js +112 -111
  279. package/components/dialogs/alert-dialog/index.js +83 -78
  280. package/components/dialogs/alert-dialog/props.js +0 -5
  281. package/components/dialogs/confirm-dialog/index.js +102 -92
  282. package/components/dialogs/confirm-dialog/props.js +0 -5
  283. package/components/dialogs/dialog/index.js +93 -69
  284. package/components/dialogs/dialog/props.js +0 -5
  285. package/components/dialogs/dialog-actions/index.js +12 -26
  286. package/components/dialogs/dialog-actions/props.js +0 -5
  287. package/components/dialogs/dialog-body/index.js +13 -30
  288. package/components/dialogs/dialog-body/props.js +0 -5
  289. package/components/dialogs/dialog-content/index.js +48 -41
  290. package/components/dialogs/dialog-content/props.js +0 -5
  291. package/components/dialogs/dialog-header/index.js +88 -101
  292. package/components/dialogs/dialog-header/props.js +0 -5
  293. package/components/dialogs/iframe-dialog/index.js +136 -128
  294. package/components/dialogs/iframe-dialog/props.js +0 -5
  295. package/components/dialogs/index.js +104 -101
  296. package/components/dialogs/login-dialog/index.js +285 -347
  297. package/components/dialogs/login-dialog/props.js +0 -5
  298. package/components/dialogs/page-dialog/index.js +95 -86
  299. package/components/dialogs/page-dialog/props.js +0 -5
  300. package/components/dialogs/props.js +0 -5
  301. package/components/dialogs/withDialogWrapper.js +110 -83
  302. package/components/form/button/index.js +296 -245
  303. package/components/form/button/props.js +0 -5
  304. package/components/form/button-group/index.js +80 -69
  305. package/components/form/button-group/props.js +0 -5
  306. package/components/input/calendar/index.js +409 -362
  307. package/components/input/calendar/props.js +0 -5
  308. package/components/input/calendar/utils.js +164 -172
  309. package/components/input/chips/SortableChip/index.js +109 -100
  310. package/components/input/chips/SortableChip/props.js +0 -5
  311. package/components/input/chips/index.js +663 -570
  312. package/components/input/chips/props.js +0 -5
  313. package/components/input/chips/utils.js +131 -122
  314. package/components/input/color-picker/index.js +536 -594
  315. package/components/input/color-picker/props.js +0 -5
  316. package/components/input/composite/index.js +71 -110
  317. package/components/input/composite/props.js +0 -5
  318. package/components/input/currency/index.js +277 -224
  319. package/components/input/currency/props.js +0 -5
  320. package/components/input/default/checkbox/index.js +329 -250
  321. package/components/input/default/checkbox/props.js +0 -5
  322. package/components/input/default/checkboxset/index.d.ts +2 -0
  323. package/components/input/default/checkboxset/index.js +529 -446
  324. package/components/input/default/checkboxset/props.d.ts +4 -0
  325. package/components/input/default/checkboxset/props.js +0 -5
  326. package/components/input/default/checkboxset/utils.js +15 -25
  327. package/components/input/default/radioset/index.d.ts +2 -0
  328. package/components/input/default/radioset/index.js +409 -350
  329. package/components/input/default/radioset/props.d.ts +6 -0
  330. package/components/input/default/radioset/props.js +0 -5
  331. package/components/input/default/switch/index.js +494 -458
  332. package/components/input/default/switch/prop.js +0 -5
  333. package/components/input/epoch/date/components/DatePickerPopover.js +242 -193
  334. package/components/input/epoch/date/index.js +638 -518
  335. package/components/input/epoch/date/props.js +0 -5
  336. package/components/input/epoch/date/styled.js +61 -70
  337. package/components/input/epoch/date/utils.js +67 -115
  338. package/components/input/epoch/datetime/index.js +758 -695
  339. package/components/input/epoch/datetime/props.js +0 -5
  340. package/components/input/epoch/datetime/utils.js +121 -186
  341. package/components/input/epoch/time/index.js +441 -415
  342. package/components/input/epoch/time/props.js +0 -5
  343. package/components/input/epoch/time/utils.js +101 -112
  344. package/components/input/fileupload/Utils.js +70 -97
  345. package/components/input/fileupload/components/ListItems.js +132 -130
  346. package/components/input/fileupload/components/MultiUpload.js +80 -77
  347. package/components/input/fileupload/components/SingleUpload.js +57 -57
  348. package/components/input/fileupload/index.js +253 -178
  349. package/components/input/fileupload/props.js +0 -5
  350. package/components/input/fileupload/useFileUpload.js +209 -258
  351. package/components/input/number/index.js +434 -393
  352. package/components/input/number/props.js +0 -5
  353. package/components/input/rating/index.js +401 -394
  354. package/components/input/rating/props.js +0 -5
  355. package/components/input/select/index.js +408 -463
  356. package/components/input/select/props.js +0 -5
  357. package/components/input/slider/index.js +339 -332
  358. package/components/input/slider/props.js +0 -5
  359. package/components/input/text/index.d.ts +3 -3
  360. package/components/input/text/index.js +438 -475
  361. package/components/input/text/props.d.ts +1 -1
  362. package/components/input/text/props.js +0 -5
  363. package/components/input/text/util.js +82 -222
  364. package/components/input/textarea/index.js +322 -358
  365. package/components/input/textarea/props.js +0 -5
  366. package/components/input/upload/index.js +135 -131
  367. package/components/input/upload/props.js +0 -5
  368. package/components/input/util/index.js +9 -11
  369. package/components/layout/footer/index.js +12 -35
  370. package/components/layout/footer/props.js +0 -5
  371. package/components/layout/header/index.js +12 -38
  372. package/components/layout/header/props.js +0 -5
  373. package/components/layout/leftnav/index.js +38 -44
  374. package/components/layout/leftnav/props.js +0 -5
  375. package/components/layout/rightnav/index.js +12 -36
  376. package/components/layout/rightnav/props.js +0 -5
  377. package/components/layout/topnav/index.js +24 -38
  378. package/components/layout/topnav/props.js +0 -5
  379. package/components/navbar/index.js +119 -98
  380. package/components/navbar/nav/index.js +236 -232
  381. package/components/navbar/nav/props.js +0 -5
  382. package/components/navbar/nav-item/index.js +74 -65
  383. package/components/navbar/nav-item/props.js +0 -5
  384. package/components/navigation/breadcrumb/index.js +38 -61
  385. package/components/navigation/breadcrumb/props.js +0 -5
  386. package/components/navigation/menu/components/ListItems.js +76 -67
  387. package/components/navigation/menu/constants.js +27 -42
  388. package/components/navigation/menu/hooks/useHoverState.hook.js +20 -47
  389. package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +34 -28
  390. package/components/navigation/menu/hooks/useTransformedDataset.hook.js +21 -14
  391. package/components/navigation/menu/index.js +911 -846
  392. package/components/navigation/menu/props.js +0 -5
  393. package/components/navigation/menu/utils/action-task.js +6 -9
  394. package/components/navigation/menu/utils/role-filter.js +41 -56
  395. package/components/navigation/popover/index.js +191 -205
  396. package/components/navigation/popover/props.js +5 -8
  397. package/components/page/content/index.js +9 -31
  398. package/components/page/content/props.js +0 -5
  399. package/components/page/error-boundary/index.js +115 -105
  400. package/components/page/error-boundary/props.js +0 -5
  401. package/components/page/index.js +84 -102
  402. package/components/page/page-content/index.js +21 -30
  403. package/components/page/page-content/props.js +0 -5
  404. package/components/page/partial/index.js +50 -45
  405. package/components/page/partial/props.js +0 -5
  406. package/components/page/partial-container/index.js +81 -107
  407. package/components/page/partial-container/props.d.ts +1 -1
  408. package/components/page/partial-container/props.js +0 -5
  409. package/components/page/props.js +0 -5
  410. package/components/page/toast-container/index.js +20 -41
  411. package/components/page/toast-container/props.js +0 -5
  412. package/components/prefab/container/index.js +60 -53
  413. package/components/prefab/container/props.js +0 -5
  414. package/components/prefab/index.js +76 -61
  415. package/components/prefab/props.js +0 -5
  416. package/context/AppContext.d.ts +1 -1
  417. package/context/AppContext.js +17 -18
  418. package/context/AppSpinnerProvider.js +19 -34
  419. package/context/LayoutProvider.js +54 -57
  420. package/context/LocalizationProvider.js +34 -49
  421. package/context/PrefabContext.js +68 -119
  422. package/context/WidgetProvider.js +160 -166
  423. package/core/app-config.js +0 -1
  424. package/core/app.service.js +200 -327
  425. package/core/appVariablesStore.js +10 -15
  426. package/core/appstore.js +37 -53
  427. package/core/constants/currency-constant.js +81 -83
  428. package/core/constants/events.js +34 -44
  429. package/core/constants/index.js +21 -31
  430. package/core/dialog.service.js +52 -72
  431. package/core/event-notifier.js +94 -131
  432. package/core/formatter/array-formatters.js +18 -32
  433. package/core/formatter/date-formatters.js +140 -204
  434. package/core/formatter/index.js +64 -117
  435. package/core/formatter/number-formatters.js +115 -159
  436. package/core/formatter/security-formatters.js +233 -283
  437. package/core/formatter/string-formatters.js +23 -45
  438. package/core/formatter/types.js +12 -18
  439. package/core/formatters.js +6 -24
  440. package/core/proxy-service.js +242 -306
  441. package/core/script-registry.js +87 -134
  442. package/core/security.service.js +8 -11
  443. package/core/util/compare.js +13 -25
  444. package/core/util/dom.js +32 -63
  445. package/core/util/index.d.ts +5 -0
  446. package/core/util/index.js +95 -95
  447. package/core/util/safe-is-equal.js +42 -94
  448. package/core/util/security.js +114 -153
  449. package/core/util/utils.d.ts +8 -1
  450. package/core/util/utils.js +124 -132
  451. package/core/widget-observer.js +34 -61
  452. package/higherOrder/BaseApp.js +327 -500
  453. package/higherOrder/BaseAppProps.js +0 -5
  454. package/higherOrder/BaseDateTime.js +277 -231
  455. package/higherOrder/BasePage.js +479 -735
  456. package/higherOrder/BasePartial.js +87 -114
  457. package/higherOrder/BasePrefab.js +190 -206
  458. package/higherOrder/DataNav.js +287 -302
  459. package/higherOrder/helper.js +62 -48
  460. package/higherOrder/props.js +0 -5
  461. package/higherOrder/withBaseWrapper.js +123 -168
  462. package/higherOrder/withStandalone.js +28 -26
  463. package/hooks/useAccess.js +113 -289
  464. package/hooks/useAppConfig.js +15 -40
  465. package/hooks/useAuth.js +256 -495
  466. package/hooks/useDataSourceSubscription.d.ts +3 -3
  467. package/hooks/useDataSourceSubscription.js +99 -109
  468. package/hooks/useDebounce.js +28 -56
  469. package/hooks/useDeviceVisibility.js +14 -23
  470. package/hooks/useHttp.d.ts +1 -0
  471. package/hooks/useHttp.js +318 -493
  472. package/libs/index.js +4 -13
  473. package/libs/prefab/index.js +6 -20
  474. package/mui-config/theme-provider.js +9 -17
  475. package/mui-config/theme.js +6 -9
  476. package/package-lock.json +822 -3191
  477. package/package.json +3 -19
  478. package/providers/AppProviders.js +21 -24
  479. package/runtime-dynamic/App.js +65 -93
  480. package/runtime-dynamic/app-initializer.js +207 -400
  481. package/runtime-dynamic/components/ErrorBoundary.js +59 -76
  482. package/runtime-dynamic/components/PageWrapper.js +23 -35
  483. package/runtime-dynamic/components/PrefabPreview.js +40 -69
  484. package/runtime-dynamic/components/partial-content.d.ts +2 -3
  485. package/runtime-dynamic/components/partial-content.js +66 -48
  486. package/runtime-dynamic/components/prefab-content.js +37 -30
  487. package/runtime-dynamic/components/use-dynamic-component.js +62 -150
  488. package/runtime-dynamic/factories/build-base-page-like-component.js +44 -58
  489. package/runtime-dynamic/factories/dynamic-component.d.ts +9 -0
  490. package/runtime-dynamic/factories/dynamic-component.js +83 -0
  491. package/runtime-dynamic/factories/prefab-factory.js +60 -81
  492. package/runtime-dynamic/factories/startup-info.js +12 -25
  493. package/runtime-dynamic/factories/utils.d.ts +1 -9
  494. package/runtime-dynamic/factories/utils.js +47 -130
  495. package/runtime-dynamic/index.js +56 -191
  496. package/runtime-dynamic/main.js +42 -70
  497. package/runtime-dynamic/preview-mode.js +14 -29
  498. package/runtime-dynamic/preview-navigation.js +21 -30
  499. package/runtime-dynamic/preview-path.d.ts +5 -0
  500. package/runtime-dynamic/preview-path.js +13 -0
  501. package/runtime-dynamic/preview-resource-base.js +15 -31
  502. package/runtime-dynamic/registry/component-registry.js +269 -334
  503. package/runtime-dynamic/registry/custom-widget-registry.js +11 -15
  504. package/runtime-dynamic/registry/index.js +24 -63
  505. package/runtime-dynamic/registry/store.d.ts +1 -0
  506. package/runtime-dynamic/registry/store.js +18 -23
  507. package/runtime-dynamic/routes.js +53 -81
  508. package/runtime-dynamic/services/app-extension-provider.js +17 -44
  509. package/runtime-dynamic/services/autolayout-inject.d.ts +4 -0
  510. package/runtime-dynamic/services/autolayout-inject.js +27 -0
  511. package/runtime-dynamic/services/cache.js +27 -33
  512. package/runtime-dynamic/services/compile-render.d.ts +9 -0
  513. package/runtime-dynamic/services/compile-render.js +142 -0
  514. package/runtime-dynamic/services/component-ref-provider.js +70 -124
  515. package/runtime-dynamic/services/css-scoping.js +27 -28
  516. package/runtime-dynamic/services/fragment-url.js +37 -50
  517. package/runtime-dynamic/services/index.js +48 -152
  518. package/runtime-dynamic/services/markup-transpiler.d.ts +2 -2
  519. package/runtime-dynamic/services/markup-transpiler.js +39 -231
  520. package/runtime-dynamic/services/prefab-resources.js +42 -130
  521. package/runtime-dynamic/services/resource-manager.d.ts +2 -1
  522. package/runtime-dynamic/services/resource-manager.js +32 -63
  523. package/runtime-dynamic/services/script-executor.js +50 -61
  524. package/runtime-dynamic/services/variable-factory.js +141 -184
  525. package/runtime-dynamic/services/variable-registry.js +69 -115
  526. package/runtime-dynamic/services/variable-transpiler.js +73 -103
  527. package/runtime-dynamic/shims/next-image.js +79 -50
  528. package/runtime-dynamic/shims/next-link.js +58 -32
  529. package/runtime-dynamic/shims/next-navigation.js +17 -34
  530. package/runtime-dynamic/utils/index.d.ts +2 -0
  531. package/runtime-dynamic/utils/index.js +22 -24
  532. package/store/bindActions/i18nActions.js +16 -18
  533. package/store/index.js +29 -35
  534. package/store/middleware/navigationMiddleware.js +25 -45
  535. package/store/middleware/pendingTabNavigationIntentMiddleware.js +20 -25
  536. package/store/slices/appConfigSlice.js +65 -94
  537. package/store/slices/authSlice.js +317 -471
  538. package/store/slices/i18nSlice.js +169 -168
  539. package/store/slices/navigationSlice.js +22 -20
  540. package/store/util/resolve-path.d.ts +1 -0
  541. package/store/util/resolve-path.js +7 -0
  542. package/store/viewport.service.js +150 -194
  543. package/types/index.js +10 -15
  544. package/utils/attr.js +198 -41
  545. package/utils/custom-expression/index.js +55 -151
  546. package/utils/custom-expression/parser.js +106 -182
  547. package/utils/dataset-util.js +113 -154
  548. package/utils/eval-expression.js +10 -19
  549. package/utils/form-state.util.js +60 -118
  550. package/utils/form-utils.js +49 -190
  551. package/utils/format-util.js +113 -184
  552. package/utils/layoutsize-util.js +11 -17
  553. package/utils/lib-error-skipper.js +54 -52
  554. package/utils/page-params-util.js +50 -40
  555. package/utils/pending-tab-navigation-intent.js +7 -17
  556. package/utils/resource-url.js +8 -19
  557. package/utils/state-persistance.js +136 -253
  558. package/utils/style-utils.d.ts +2 -0
  559. package/utils/style-utils.js +25 -74
  560. package/utils/transformedDataset-utils.js +353 -381
  561. package/utils/widget-cleanup-util.js +42 -74
  562. package/utils/widgets.js +19 -31
  563. package/variables/base-variable.js +117 -166
  564. package/variables/constants.js +5 -8
  565. package/variables/crud-variable.js +150 -181
  566. package/variables/live-variable.d.ts +1 -1
  567. package/variables/live-variable.js +140 -174
  568. package/variables/metadata.service.js +74 -116
  569. package/variables/model-variable.js +68 -78
  570. package/variables/service-variable.js +171 -285
  571. package/wm-namespace.js +11 -14
  572. package/components/chart/src/css.d.js +0 -1
  573. package/tsconfig.declaration.tsbuildinfo +0 -1
  574. package/types/global.d.js +0 -3
@@ -1,717 +1,780 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = exports.WmDatetime = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _react = _interopRequireWildcard(require("react"));
11
- var _material = require("@mui/material");
12
- var _DatePicker = require("@mui/x-date-pickers/DatePicker");
13
- var _TimePicker = require("@mui/x-date-pickers/TimePicker");
14
- var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
15
- var _clsx = _interopRequireDefault(require("clsx"));
16
- var _BaseDateTime = _interopRequireDefault(require("@wavemaker-ai/react-runtime/higherOrder/BaseDateTime"));
17
- var _withFormController = _interopRequireDefault(require("@wavemaker-ai/react-runtime/components/data/form/form-controller/withFormController"));
18
- var _utils = require("./utils");
19
- var _compare = _interopRequireDefault(require("../../../../core/util/compare"));
20
- var _withStandalone = _interopRequireDefault(require("@wavemaker-ai/react-runtime/higherOrder/withStandalone"));
21
- var _withBaseWrapper = _interopRequireDefault(require("@wavemaker-ai/react-runtime/higherOrder/withBaseWrapper"));
22
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
23
- var __jsx = _react["default"].createElement;
24
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
- var DEFAULT_CLS = "app-datetime input-group";
27
- var WmDateTime = /*#__PURE__*/(0, _react.memo)(function (props) {
28
- var _listener$localeForma3, _listener$localeForma4;
29
- var name = props.name,
30
- _props$placeholder = props.placeholder,
31
- placeholder = _props$placeholder === void 0 ? "Select Date Time" : _props$placeholder,
32
- hint = props.hint,
33
- _props$tabindex = props.tabindex,
34
- tabindex = _props$tabindex === void 0 ? 0 : _props$tabindex,
35
- shortcutkey = props.shortcutkey,
36
- datavalue = props.datavalue,
37
- datepatternProp = props.datepattern,
38
- _props$hourstep = props.hourstep,
39
- hourstep = _props$hourstep === void 0 ? 1 : _props$hourstep,
40
- _props$minutestep = props.minutestep,
41
- minutestep = _props$minutestep === void 0 ? 15 : _props$minutestep,
42
- _props$outputformat = props.outputformat,
43
- outputformat = _props$outputformat === void 0 ? "timestamp" : _props$outputformat,
44
- defaultDateFormat = props.defaultDateFormat,
45
- defaultTimeFormat = props.defaultTimeFormat,
46
- _props$required = props.required,
47
- required = _props$required === void 0 ? false : _props$required,
48
- mindate = props.mindate,
49
- maxdate = props.maxdate,
50
- excludedays = props.excludedays,
51
- excludedates = props.excludedates,
52
- _props$showweeks = props.showweeks,
53
- showweeks = _props$showweeks === void 0 ? false : _props$showweeks,
54
- _props$autofocus = props.autofocus,
55
- autofocus = _props$autofocus === void 0 ? false : _props$autofocus,
56
- _props$readonly = props.readonly,
57
- readonly = _props$readonly === void 0 ? false : _props$readonly,
58
- _props$disabled = props.disabled,
59
- disabled = _props$disabled === void 0 ? false : _props$disabled,
60
- _props$selectfromothe = props.selectfromothermonth,
61
- selectfromothermonth = _props$selectfromothe === void 0 ? true : _props$selectfromothe,
62
- _props$todaybutton = props.todaybutton,
63
- todaybutton = _props$todaybutton === void 0 ? true : _props$todaybutton,
64
- _props$clearbutton = props.clearbutton,
65
- clearbutton = _props$clearbutton === void 0 ? true : _props$clearbutton,
66
- _props$adaptivepositi = props.adaptiveposition,
67
- adaptiveposition = _props$adaptivepositi === void 0 ? true : _props$adaptivepositi,
68
- _props$showdropdownon = props.showdropdownon,
69
- showdropdownon = _props$showdropdownon === void 0 ? "default" : _props$showdropdownon,
70
- _props$dataentrymode = props.dataentrymode,
71
- dataentrymode = _props$dataentrymode === void 0 ? "default" : _props$dataentrymode,
72
- width = props.width,
73
- arialabel = props.arialabel,
74
- className = props.className,
75
- isValidDate = props.isValidDate,
76
- formatValidation = props.formatValidation,
77
- updatePrevDatavalue = props.updatePrevDatavalue,
78
- updateBoundVariable = props.updateBoundVariable,
79
- onChange = props.onChange,
80
- onClick = props.onClick,
81
- _onFocus = props.onFocus,
82
- _onBlur = props.onBlur,
83
- _onMouseEnter = props.onMouseEnter,
84
- _onMouseLeave = props.onMouseLeave,
85
- onBeforeload = props.onBeforeload,
86
- listener = props.listener,
87
- floatinglabel = props.floatinglabel,
88
- styles = props.styles,
89
- _props$showampmbutton = props.showampmbuttons,
90
- showampmbuttons = _props$showampmbutton === void 0 ? false : _props$showampmbutton,
91
- _props$validators = props.validators,
92
- validators = _props$validators === void 0 ? [] : _props$validators,
93
- validationmessage = props.validationmessage;
94
- var defaultDateTimeFormat = (0, _react.useMemo)(function () {
95
- var combinedFromParts = function combinedFromParts() {
96
- var _listener$localeForma, _listener$localeForma2;
97
- var datePart = defaultDateFormat || (listener === null || listener === void 0 || (_listener$localeForma = listener.localeFormats) === null || _listener$localeForma === void 0 ? void 0 : _listener$localeForma.date) || "MMM d, y";
98
- var timePart = defaultTimeFormat || (listener === null || listener === void 0 || (_listener$localeForma2 = listener.localeFormats) === null || _listener$localeForma2 === void 0 ? void 0 : _listener$localeForma2.time) || "h:mm:ss a";
99
- return "".concat(datePart, " ").concat(timePart);
100
- };
101
- return combinedFromParts();
102
- }, [defaultDateFormat, defaultTimeFormat, listener === null || listener === void 0 || (_listener$localeForma3 = listener.localeFormats) === null || _listener$localeForma3 === void 0 ? void 0 : _listener$localeForma3.date, listener === null || listener === void 0 || (_listener$localeForma4 = listener.localeFormats) === null || _listener$localeForma4 === void 0 ? void 0 : _listener$localeForma4.time]);
103
- var datepattern = (0, _react.useMemo)(function () {
104
- return datepatternProp !== null && datepatternProp !== void 0 ? datepatternProp : defaultDateTimeFormat;
105
- }, [datepatternProp, defaultDateTimeFormat]);
106
-
107
- // State management
108
- var _useState = (0, _react.useState)(false),
109
- isDateOpen = _useState[0],
110
- setIsDateOpen = _useState[1];
111
- var _useState2 = (0, _react.useState)(false),
112
- isTimeOpen = _useState2[0],
113
- setIsTimeOpen = _useState2[1];
114
- var _useState3 = (0, _react.useState)(""),
115
- displayValue = _useState3[0],
116
- setDisplayValue = _useState3[1];
117
- var _useState4 = (0, _react.useState)(false),
118
- isCurrentDate = _useState4[0],
119
- setIsCurrentDate = _useState4[1];
120
- var _useState5 = (0, _react.useState)(null),
121
- localDateValue = _useState5[0],
122
- setLocalDateValue = _useState5[1];
123
- var _useState6 = (0, _react.useState)(false),
124
- invalidFormat = _useState6[0],
125
- setInvalidFormat = _useState6[1];
126
- var _useState7 = (0, _react.useState)(false),
127
- dateNotInRange = _useState7[0],
128
- setDateNotInRange = _useState7[1];
129
- var _useState8 = (0, _react.useState)(null),
130
- tempDateValue = _useState8[0],
131
- setTempDateValue = _useState8[1];
132
- var _useState9 = (0, _react.useState)("day"),
133
- datePickerView = _useState9[0],
134
- setDatePickerView = _useState9[1];
135
- var _useState0 = (0, _react.useState)(true),
136
- isCurrentMonth = _useState0[0],
137
- setIsCurrentMonth = _useState0[1];
138
- var _useState1 = (0, _react.useState)(""),
139
- validationFailureMessage = _useState1[0],
140
- setValidationFailureMessage = _useState1[1];
141
- // Refs
142
- var inputRef = (0, _react.useRef)(null);
143
- var onBeforeloadExecutedRef = (0, _react.useRef)(false);
144
- var anchorRef = (0, _react.useRef)(null);
145
-
146
- // Computed values
147
- var isReadOnly = (0, _react.useMemo)(function () {
148
- return readonly || isCurrentDate || dataentrymode !== "undefined" && dataentrymode !== "default";
149
- }, [readonly, dataentrymode, isCurrentDate]);
150
- var shouldOpenOnInput = (0, _react.useMemo)(function () {
151
- return showdropdownon === "default" && dataentrymode !== "picker";
152
- }, [showdropdownon, dataentrymode]);
153
-
154
- // Parse min/max dates with CURRENT_DATE support
155
- var minDateObj = (0, _react.useMemo)(function () {
156
- return (0, _utils.parseDateWithCurrent)(mindate, "min");
157
- }, [mindate]);
158
- var maxDateObj = (0, _react.useMemo)(function () {
159
- return (0, _utils.parseDateWithCurrent)(maxdate, "max");
160
- }, [maxdate]);
161
- var excludedDaysArray = (0, _react.useMemo)(function () {
162
- return (0, _utils.parseExcludedDays)(excludedays);
163
- }, [excludedays]);
164
- var excludedDatesArray = (0, _react.useMemo)(function () {
165
- return (0, _utils.parseExcludedDates)(excludedates);
166
- }, [excludedates]);
167
-
168
- // Format date utility
169
- var formatDateWithPattern = (0, _react.useCallback)(function (date) {
170
- var pattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : datepattern;
171
- return (0, _utils.formatDate)(date, pattern, (0, _utils.getTimezone)());
172
- }, [datepattern]);
173
-
174
- // Validate date
175
- var validateDateWithProps = (0, _react.useCallback)(function (date) {
176
- var _validation$validatio;
177
- if (!date) return true;
178
- var validation = (0, _utils.validateDate)(date, minDateObj, maxDateObj, excludedDaysArray, excludedDatesArray, validators, validationmessage);
179
- setDateNotInRange(validation.isOutOfRange);
180
- setValidationFailureMessage((_validation$validatio = validation.validationMessage) !== null && _validation$validatio !== void 0 ? _validation$validatio : "");
181
- setInvalidFormat(false);
182
- setDateNotInRange(false);
183
- return validation.isValid;
184
- }, [minDateObj, maxDateObj, excludedDaysArray, excludedDatesArray]);
185
-
186
- // Handle final date change
187
- var handleFinalDateChange = (0, _react.useCallback)(function (date, event) {
188
- if (!date) {
189
- if (onChange && name && listener !== null && listener !== void 0 && listener.Widgets[name] && props.formfield) {
190
- onChange(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name], "", displayValue);
191
- }
192
- setValidationFailureMessage("");
193
- setLocalDateValue(null);
194
- setDisplayValue("");
195
- setInvalidFormat(false);
196
- setDateNotInRange(false);
197
- if (updatePrevDatavalue) {
198
- updatePrevDatavalue(null);
199
- }
200
- if (updateBoundVariable) {
201
- updateBoundVariable(null);
202
- }
203
- (0, _utils.updateListener)(name, listener, "", "", props, onChange, displayValue, "");
204
- return;
205
- }
206
- var dateString = formatDateWithPattern(date);
207
- if (required && formatValidation && !formatValidation(date, dateString)) {
208
- setInvalidFormat(true);
209
- return;
210
- }
211
- if (!validateDateWithProps(date)) {
212
- if (onChange && name && listener !== null && listener !== void 0 && listener.Widgets[name] && props.formfield && event) {
213
- onChange(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name], dateString, displayValue);
214
- }
215
- return;
216
- }
217
- var oldValue = displayValue;
218
- setLocalDateValue(date);
219
- setDisplayValue(dateString);
220
- setInvalidFormat(false);
221
- var outputValue = outputformat === "timestamp" ? date.getTime().toString() : formatDateWithPattern(date, outputformat);
222
- if (updatePrevDatavalue) {
223
- updatePrevDatavalue(date);
224
- }
225
- if (updateBoundVariable) {
226
- updateBoundVariable(date);
227
- }
228
- (0, _utils.updateListener)(name, listener, dateString, outputValue, props, onChange, oldValue, formatDateWithPattern(date, "timestamp"));
229
- }, [formatDateWithPattern, formatValidation, validateDateWithProps, updatePrevDatavalue, updateBoundVariable, outputformat, displayValue, name, listener, onChange, props]);
230
-
231
- // Handle date selection - now updates immediately
232
- var handleDateSelection = (0, _react.useCallback)(function (date) {
233
- if (!date) {
234
- handleFinalDateChange(null);
235
- setIsDateOpen(false);
236
- setIsTimeOpen(false);
237
- setTempDateValue(null);
238
- return;
239
- }
240
- // Validate date format
241
- var dateString = formatDateWithPattern(date);
242
- if (formatValidation && required && !formatValidation(date, dateString)) {
243
- setInvalidFormat(true);
244
- return;
245
- }
246
- // Validate min/max date and excluded dates/days
247
- if (!validateDateWithProps(date)) {
248
- return;
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
249
14
  }
250
- // If we have an existing time component, preserve it
251
- var finalDate = date;
252
- if (localDateValue) {
253
- var existingMoment = (0, _momentTimezone["default"])(localDateValue);
254
- finalDate = (0, _momentTimezone["default"])(date).hour(existingMoment.hour()).minute(existingMoment.minute()).second(existingMoment.second()).toDate();
255
- }
256
- // Update immediately with the new date (preserving existing time if any)
257
- if (datePickerView === "day") {
258
- var dateWithTime = (0, _utils.ensureTime)(finalDate);
259
- setTempDateValue(dateWithTime);
260
- setLocalDateValue(dateWithTime);
261
- setDisplayValue(formatDateWithPattern(dateWithTime));
262
- setTimeout(function () {
263
- setIsDateOpen(false);
264
- setIsTimeOpen(true);
265
- }, 0);
266
- } else {
267
- setTempDateValue(finalDate);
268
- }
269
- }, [formatDateWithPattern, formatValidation, validateDateWithProps, localDateValue, datePickerView]);
270
-
271
- // Handle date picker accept (when user completes date selection)
272
- var handleDateAccept = (0, _react.useCallback)(function () {
273
- if (tempDateValue) {
274
- setIsDateOpen(false);
275
- setIsTimeOpen(true);
276
- }
277
- setIsCurrentMonth(true);
278
- }, [tempDateValue]);
279
-
280
- // Handle date picker close
281
- var handleDateClose = (0, _react.useCallback)(function () {
282
- setIsDateOpen(false);
283
- setIsTimeOpen(false);
284
- setDatePickerView("day");
285
- setIsCurrentMonth(true);
286
- }, []);
287
- var handleVeiwChange = (0, _react.useCallback)(function (view) {
288
- setDatePickerView(view);
289
- }, []);
290
-
291
- // Handle time selection
292
- var handleTimeSelection = (0, _react.useCallback)(function (time) {
293
- if (!time || !tempDateValue) return;
294
- var combinedDateTime = (0, _momentTimezone["default"])(tempDateValue).hour((0, _momentTimezone["default"])(time).hour()).minute((0, _momentTimezone["default"])(time).minute()).second((0, _momentTimezone["default"])(time).second()).toDate();
295
- setLocalDateValue(combinedDateTime);
296
- setDisplayValue(formatDateWithPattern(combinedDateTime));
297
- setTempDateValue(combinedDateTime);
298
- }, [tempDateValue, formatDateWithPattern]);
299
-
300
- // Handle time picker accept (OK button or outside click)
301
- var handleTimeAccept = (0, _react.useCallback)(function () {
302
- setIsTimeOpen(false);
303
- setTempDateValue(null);
304
- }, [tempDateValue, handleFinalDateChange]);
305
-
306
- // Handle time picker cancel
307
- var handleTimeCancel = (0, _react.useCallback)(function () {
308
- setIsTimeOpen(false);
309
- setTempDateValue(null);
310
- setDisplayValue(localDateValue ? formatDateWithPattern(localDateValue) : "");
311
- }, [localDateValue, formatDateWithPattern]);
312
-
313
- // Handle time picker close (outside click)
314
- var handleTimeClose = (0, _react.useCallback)(function () {
315
- if (tempDateValue) {
316
- handleFinalDateChange(tempDateValue);
317
- }
318
- setIsTimeOpen(false);
319
- setTempDateValue(null);
320
- }, [tempDateValue, handleFinalDateChange]);
321
-
322
- // Handle input change
323
- var handleInputChange = (0, _react.useCallback)(function (event) {
324
- if (dataentrymode === "picker") return;
325
- var value = event.target.value;
326
- setDisplayValue(value);
327
- if (!value) {
328
- handleFinalDateChange(null, event);
329
- return;
330
- }
331
- try {
332
- var momentPattern = (0, _utils.mapToMomentPattern)(datepattern);
333
- var parsedDate = (0, _momentTimezone["default"])(value, momentPattern, true);
334
- if (parsedDate.isValid()) {
335
- var dateObj = parsedDate.toDate();
336
- if (isValidDate && isValidDate(dateObj)) {
337
- handleFinalDateChange(dateObj, event);
338
- } else {
339
- handleFinalDateChange(dateObj, event);
340
- }
341
- } else {
342
- if (required) {
343
- if (onChange && name && listener !== null && listener !== void 0 && listener.Widgets[name] && props.formfield) {
344
- onChange(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name], value, displayValue);
15
+ return a;
16
+ };
17
+ import { jsx, jsxs } from "react/jsx-runtime";
18
+ import { useCallback, useEffect, useMemo, useRef, useState, memo } from "react";
19
+ import { TextField, Button, Box } from "@mui/material";
20
+ import { DatePicker } from "@mui/x-date-pickers/DatePicker";
21
+ import { TimePicker } from "@mui/x-date-pickers/TimePicker";
22
+ import moment from "moment-timezone";
23
+ import clsx from "clsx";
24
+ import withBaseDateTime from "../../../../higherOrder/BaseDateTime";
25
+ import withFormController from "../../../data/form/form-controller/withFormController";
26
+ import {
27
+ ensureTime,
28
+ mapToMomentPattern,
29
+ getTimezone,
30
+ parseDateWithCurrent,
31
+ parseExcludedDays,
32
+ parseExcludedDates,
33
+ formatDate,
34
+ parseDateValue,
35
+ validateDate,
36
+ shouldDisableDate,
37
+ getTimeViews,
38
+ updateListener
39
+ } from "./utils";
40
+ import compare from "../../../../core/util/compare";
41
+ import withStandalone from "../../../../higherOrder/withStandalone";
42
+ import withBaseWrapper from "../../../../higherOrder/withBaseWrapper";
43
+ const DEFAULT_CLS = "app-datetime input-group";
44
+ const WmDateTime = memo(
45
+ (props) => {
46
+ var _a, _b;
47
+ const {
48
+ name,
49
+ placeholder = "Select Date Time",
50
+ hint,
51
+ tabindex = 0,
52
+ shortcutkey,
53
+ datavalue,
54
+ datepattern: datepatternProp,
55
+ hourstep = 1,
56
+ minutestep = 15,
57
+ outputformat = "timestamp",
58
+ defaultDateFormat,
59
+ defaultTimeFormat,
60
+ required = false,
61
+ mindate,
62
+ maxdate,
63
+ excludedays,
64
+ excludedates,
65
+ showweeks = false,
66
+ autofocus = false,
67
+ readonly = false,
68
+ disabled = false,
69
+ selectfromothermonth = true,
70
+ todaybutton = true,
71
+ clearbutton = true,
72
+ adaptiveposition = true,
73
+ showdropdownon = "default",
74
+ dataentrymode = "default",
75
+ width,
76
+ arialabel,
77
+ className,
78
+ isValidDate,
79
+ formatValidation,
80
+ updatePrevDatavalue,
81
+ updateBoundVariable,
82
+ onChange,
83
+ onClick,
84
+ onFocus,
85
+ onBlur,
86
+ onMouseEnter,
87
+ onMouseLeave,
88
+ onBeforeload,
89
+ listener,
90
+ floatinglabel,
91
+ styles,
92
+ showampmbuttons = false,
93
+ validators = [],
94
+ validationmessage
95
+ } = props;
96
+ const defaultDateTimeFormat = useMemo(() => {
97
+ const combinedFromParts = () => {
98
+ var _a2, _b2;
99
+ const datePart = defaultDateFormat || ((_a2 = listener == null ? void 0 : listener.localeFormats) == null ? void 0 : _a2.date) || "MMM d, y";
100
+ const timePart = defaultTimeFormat || ((_b2 = listener == null ? void 0 : listener.localeFormats) == null ? void 0 : _b2.time) || "h:mm:ss a";
101
+ return `${datePart} ${timePart}`;
102
+ };
103
+ return combinedFromParts();
104
+ }, [
105
+ defaultDateFormat,
106
+ defaultTimeFormat,
107
+ (_a = listener == null ? void 0 : listener.localeFormats) == null ? void 0 : _a.date,
108
+ (_b = listener == null ? void 0 : listener.localeFormats) == null ? void 0 : _b.time
109
+ ]);
110
+ const datepattern = useMemo(
111
+ () => datepatternProp != null ? datepatternProp : defaultDateTimeFormat,
112
+ [datepatternProp, defaultDateTimeFormat]
113
+ );
114
+ const [isDateOpen, setIsDateOpen] = useState(false);
115
+ const [isTimeOpen, setIsTimeOpen] = useState(false);
116
+ const [displayValue, setDisplayValue] = useState("");
117
+ const [isCurrentDate, setIsCurrentDate] = useState(false);
118
+ const [localDateValue, setLocalDateValue] = useState(null);
119
+ const [invalidFormat, setInvalidFormat] = useState(false);
120
+ const [dateNotInRange, setDateNotInRange] = useState(false);
121
+ const [tempDateValue, setTempDateValue] = useState(null);
122
+ const [datePickerView, setDatePickerView] = useState("day");
123
+ const [isCurrentMonth, setIsCurrentMonth] = useState(true);
124
+ const [validationFailureMessage, setValidationFailureMessage] = useState("");
125
+ const inputRef = useRef(null);
126
+ const onBeforeloadExecutedRef = useRef(false);
127
+ const anchorRef = useRef(null);
128
+ const isReadOnly = useMemo(
129
+ () => readonly || isCurrentDate || dataentrymode !== "undefined" && dataentrymode !== "default",
130
+ [readonly, dataentrymode, isCurrentDate]
131
+ );
132
+ const shouldOpenOnInput = useMemo(() => {
133
+ return showdropdownon === "default" && dataentrymode !== "picker";
134
+ }, [showdropdownon, dataentrymode]);
135
+ const minDateObj = useMemo(() => {
136
+ return parseDateWithCurrent(mindate, "min");
137
+ }, [mindate]);
138
+ const maxDateObj = useMemo(() => {
139
+ return parseDateWithCurrent(maxdate, "max");
140
+ }, [maxdate]);
141
+ const excludedDaysArray = useMemo(() => {
142
+ return parseExcludedDays(excludedays);
143
+ }, [excludedays]);
144
+ const excludedDatesArray = useMemo(() => {
145
+ return parseExcludedDates(excludedates);
146
+ }, [excludedates]);
147
+ const formatDateWithPattern = useCallback(
148
+ (date, pattern = datepattern) => {
149
+ return formatDate(date, pattern, getTimezone());
150
+ },
151
+ [datepattern]
152
+ );
153
+ const validateDateWithProps = useCallback(
154
+ (date) => {
155
+ var _a2;
156
+ if (!date) return true;
157
+ const validation = validateDate(
158
+ date,
159
+ minDateObj,
160
+ maxDateObj,
161
+ excludedDaysArray,
162
+ excludedDatesArray,
163
+ validators,
164
+ validationmessage
165
+ );
166
+ setDateNotInRange(validation.isOutOfRange);
167
+ setValidationFailureMessage((_a2 = validation.validationMessage) != null ? _a2 : "");
168
+ setInvalidFormat(false);
169
+ setDateNotInRange(false);
170
+ return validation.isValid;
171
+ },
172
+ [minDateObj, maxDateObj, excludedDaysArray, excludedDatesArray]
173
+ );
174
+ const handleFinalDateChange = useCallback(
175
+ (date, event) => {
176
+ if (!date) {
177
+ if (onChange && name && (listener == null ? void 0 : listener.Widgets[name]) && props.formfield) {
178
+ onChange(event, listener == null ? void 0 : listener.Widgets[name], "", displayValue);
179
+ }
180
+ setValidationFailureMessage("");
181
+ setLocalDateValue(null);
182
+ setDisplayValue("");
183
+ setInvalidFormat(false);
184
+ setDateNotInRange(false);
185
+ if (updatePrevDatavalue) {
186
+ updatePrevDatavalue(null);
345
187
  }
188
+ if (updateBoundVariable) {
189
+ updateBoundVariable(null);
190
+ }
191
+ updateListener(name, listener, "", "", props, onChange, displayValue, "");
192
+ return;
193
+ }
194
+ const dateString = formatDateWithPattern(date);
195
+ if (required && formatValidation && !formatValidation(date, dateString)) {
346
196
  setInvalidFormat(true);
197
+ return;
347
198
  }
348
- }
349
- } catch (error) {
350
- if (required) {
351
- setInvalidFormat(true);
352
- }
353
- }
354
- }, [datepattern, handleFinalDateChange, isValidDate, dataentrymode, required]);
355
-
356
- // Handle input click
357
- var handleInputClick = (0, _react.useCallback)(function (event) {
358
- if (readonly) return;
359
- if (onClick && name) {
360
- var _listener$Widgets;
361
- onClick(event, listener === null || listener === void 0 || (_listener$Widgets = listener.Widgets) === null || _listener$Widgets === void 0 ? void 0 : _listener$Widgets[name]);
362
- }
363
- if (shouldOpenOnInput && !readonly && !disabled && !isCurrentDate) {
364
- setIsDateOpen(true);
365
- setIsTimeOpen(false);
366
- setTempDateValue(null);
367
- }
368
- }, [shouldOpenOnInput, readonly, disabled, isCurrentDate, onClick, name, listener]);
369
-
370
- // Toggle date picker
371
- var toggleDatePicker = (0, _react.useCallback)(function (event) {
372
- if (disabled || readonly || isCurrentDate) return;
373
- setIsDateOpen(function (prev) {
374
- return !prev;
375
- });
376
- setIsTimeOpen(false);
377
- setTempDateValue(null);
378
- }, [disabled, readonly, isCurrentDate]);
379
-
380
- // Toggle time picker
381
- var toggleTimePicker = (0, _react.useCallback)(function (event) {
382
- if (disabled || readonly || isCurrentDate) return;
383
- var dateForTimeSelection = localDateValue;
384
- dateForTimeSelection = (0, _utils.ensureTime)(dateForTimeSelection) || new Date();
385
- setTempDateValue(dateForTimeSelection);
386
- setIsTimeOpen(function (prev) {
387
- return !prev;
388
- });
389
- setIsDateOpen(false);
390
- }, [disabled, readonly, isCurrentDate, localDateValue]);
391
-
392
- // Key down handler
393
- var handleKeyDown = (0, _react.useCallback)(function (event) {
394
- if (props.handleKeyDown) {
395
- props.handleKeyDown(event);
396
- }
397
- if (shortcutkey && event.altKey && event.key.toLowerCase() === shortcutkey.toLowerCase()) {
398
- var _inputRef$current;
399
- event.preventDefault();
400
- (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
401
- return;
402
- }
403
- switch (event.key) {
404
- case "Enter":
405
- case "ArrowDown":
406
- if (shouldOpenOnInput) {
407
- event.preventDefault();
408
- setIsDateOpen(true);
199
+ if (!validateDateWithProps(date)) {
200
+ if (onChange && name && (listener == null ? void 0 : listener.Widgets[name]) && props.formfield && event) {
201
+ onChange(event, listener == null ? void 0 : listener.Widgets[name], dateString, displayValue);
202
+ }
203
+ return;
409
204
  }
410
- break;
411
- case "Escape":
412
- if (isTimeOpen) {
413
- handleTimeCancel();
414
- } else {
205
+ const oldValue = displayValue;
206
+ setLocalDateValue(date);
207
+ setDisplayValue(dateString);
208
+ setInvalidFormat(false);
209
+ const outputValue = outputformat === "timestamp" ? date.getTime().toString() : formatDateWithPattern(date, outputformat);
210
+ if (updatePrevDatavalue) {
211
+ updatePrevDatavalue(date);
212
+ }
213
+ if (updateBoundVariable) {
214
+ updateBoundVariable(date);
215
+ }
216
+ updateListener(
217
+ name,
218
+ listener,
219
+ dateString,
220
+ outputValue,
221
+ props,
222
+ onChange,
223
+ oldValue,
224
+ formatDateWithPattern(date, "timestamp")
225
+ );
226
+ },
227
+ [
228
+ formatDateWithPattern,
229
+ formatValidation,
230
+ validateDateWithProps,
231
+ updatePrevDatavalue,
232
+ updateBoundVariable,
233
+ outputformat,
234
+ displayValue,
235
+ name,
236
+ listener,
237
+ onChange,
238
+ props
239
+ ]
240
+ );
241
+ const handleDateSelection = useCallback(
242
+ (date) => {
243
+ if (!date) {
244
+ handleFinalDateChange(null);
415
245
  setIsDateOpen(false);
416
246
  setIsTimeOpen(false);
247
+ setTempDateValue(null);
248
+ return;
417
249
  }
418
- break;
419
- }
420
- }, [props, isTimeOpen, handleTimeCancel, shouldOpenOnInput, shortcutkey]);
421
-
422
- // shouldDisableDate function for DatePicker
423
- var shouldDisableDateCallback = (0, _react.useCallback)(function (date) {
424
- return (0, _utils.shouldDisableDate)(date, excludedDaysArray, excludedDatesArray);
425
- }, [excludedDaysArray, excludedDatesArray]);
426
-
427
- // Handle today click
428
- var handleToday = (0, _react.useCallback)(function () {
429
- var today = (0, _momentTimezone["default"])().toDate();
430
- handleFinalDateChange(today);
431
- setIsTimeOpen(true);
432
- }, [handleFinalDateChange]);
433
-
434
- // Handle clear click
435
- var handleClear = (0, _react.useCallback)(function () {
436
- handleFinalDateChange(null);
437
- }, [handleFinalDateChange]);
438
-
439
- // Call onBeforeload callback on component mount
440
- (0, _react.useEffect)(function () {
441
- var _listener$Widgets2;
442
- if (onBeforeload && name && listener !== null && listener !== void 0 && (_listener$Widgets2 = listener.Widgets) !== null && _listener$Widgets2 !== void 0 && _listener$Widgets2[name] && !onBeforeloadExecutedRef.current) {
443
- var syntheticEvent = {};
444
- onBeforeload(syntheticEvent, listener.Widgets[name]);
445
- onBeforeloadExecutedRef.current = true;
446
- }
447
- }, [onBeforeload, name, listener]);
448
- var syncDataValueToState = (0, _react.useCallback)(function () {
449
- if (datavalue === "CURRENT_DATE") {
450
- var currentTime = (0, _momentTimezone["default"])().tz((0, _utils.getTimezone)()).toDate();
451
- var display_time = formatDateWithPattern(currentTime);
452
- setLocalDateValue(currentTime);
453
- setDisplayValue(display_time);
454
- setIsCurrentDate(true);
455
- (0, _utils.updateListener)(name, listener, display_time, formatDateWithPattern(currentTime, outputformat), props, undefined, "", formatDateWithPattern(currentTime, "timestamp"));
456
- } else {
457
- if (invalidFormat) return;
458
- setIsCurrentDate(false);
459
- var parsedDate = (0, _utils.parseDateValue)(datavalue, datepattern);
460
- if (!parsedDate && datavalue) {
461
- if (typeof datavalue === "string" || typeof datavalue === "number") {
462
- setDisplayValue(String(datavalue));
250
+ const dateString = formatDateWithPattern(date);
251
+ if (formatValidation && required && !formatValidation(date, dateString)) {
252
+ setInvalidFormat(true);
253
+ return;
463
254
  }
464
- setLocalDateValue(null);
465
- } else {
466
- if (datavalue == undefined) {
467
- setLocalDateValue(null);
468
- setDisplayValue("");
255
+ if (!validateDateWithProps(date)) {
469
256
  return;
470
257
  }
471
- setLocalDateValue(parsedDate);
472
- var formattedValue = formatDateWithPattern(parsedDate);
473
- setDisplayValue(formattedValue);
474
- var validationResult = (0, _utils.validateDate)(parsedDate, minDateObj, maxDateObj, excludedDaysArray, excludedDatesArray, validators, validationmessage);
475
- if (validationResult && !validationResult.isValid) {
476
- setValidationFailureMessage(validationResult.validationMessage || "");
258
+ let finalDate = date;
259
+ if (localDateValue) {
260
+ const existingMoment = moment(localDateValue);
261
+ finalDate = moment(date).hour(existingMoment.hour()).minute(existingMoment.minute()).second(existingMoment.second()).toDate();
477
262
  }
478
- (0, _utils.updateListener)(name, listener, formattedValue, formatDateWithPattern(parsedDate, outputformat), props, undefined, "", formatDateWithPattern(parsedDate, "timestamp"));
479
- }
480
- }
481
- }, [datavalue, datepattern, formatDateWithPattern]);
482
- (0, _react.useEffect)(function () {
483
- if (datavalue === "CURRENT_DATE") {
484
- syncDataValueToState();
485
- var interval = setInterval(syncDataValueToState, 1000);
486
- return function () {
487
- return clearInterval(interval);
488
- };
489
- } else {
490
- syncDataValueToState();
491
- }
492
- }, [datavalue, syncDataValueToState]);
493
-
494
- // Auto focus
495
- (0, _react.useEffect)(function () {
496
- if (autofocus && inputRef.current) {
497
- var timer = setTimeout(function () {
498
- var _inputRef$current2;
499
- return (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
500
- }, 0);
501
- return function () {
502
- return clearTimeout(timer);
503
- };
504
- }
505
- }, [autofocus]);
506
- var timeViews = (0, _utils.getTimeViews)(datepattern);
507
- var isDisabled = (0, _react.useMemo)(function () {
508
- return readonly || disabled || isCurrentDate;
509
- }, [readonly, disabled, isCurrentDate]);
510
- return __jsx(_material.Box, {
511
- style: styles,
512
- ref: anchorRef,
513
- className: (0, _clsx["default"])(DEFAULT_CLS, className === null || className === void 0 ? void 0 : className.replace("form-control", "")),
514
- title: hint,
515
- hidden: props.hidden
516
- }, __jsx(_material.TextField, {
517
- disabled: disabled || readonly,
518
- "aria-readonly": readonly,
519
- inputRef: inputRef,
520
- "aria-label": arialabel,
521
- name: name,
522
- tabIndex: readonly || disabled || isCurrentDate ? -1 : tabindex,
523
- type: "text",
524
- value: displayValue,
525
- label: floatinglabel,
526
- onClick: handleInputClick,
527
- onFocus: function onFocus(event) {
528
- // Prevent focus if readonly, disabled, or current date
529
- if (readonly || disabled || isCurrentDate) {
530
- event.target.blur();
531
- return;
532
- }
533
- // Call custom onFocus callback if conditions are met
534
- if (_onFocus && name) {
535
- _onFocus(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name]);
263
+ if (datePickerView === "day") {
264
+ const dateWithTime = ensureTime(finalDate);
265
+ setTempDateValue(dateWithTime);
266
+ setLocalDateValue(dateWithTime);
267
+ setDisplayValue(formatDateWithPattern(dateWithTime));
268
+ setTimeout(() => {
269
+ setIsDateOpen(false);
270
+ setIsTimeOpen(true);
271
+ }, 0);
272
+ } else {
273
+ setTempDateValue(finalDate);
274
+ }
275
+ },
276
+ [
277
+ formatDateWithPattern,
278
+ formatValidation,
279
+ validateDateWithProps,
280
+ localDateValue,
281
+ datePickerView
282
+ ]
283
+ );
284
+ const handleDateAccept = useCallback(() => {
285
+ if (tempDateValue) {
286
+ setIsDateOpen(false);
287
+ setIsTimeOpen(true);
536
288
  }
537
- },
538
- onBlur: function onBlur(event) {
539
- if (readonly) return;
540
- _onBlur && name && _onBlur(event, listener === null || listener === void 0 ? void 0 : listener.Widgets[name]);
541
- },
542
- onChange: handleInputChange,
543
- onMouseEnter: function onMouseEnter(event) {
544
- var _listener$Widgets3;
545
- return _onMouseEnter && name && _onMouseEnter(event, listener === null || listener === void 0 || (_listener$Widgets3 = listener.Widgets) === null || _listener$Widgets3 === void 0 ? void 0 : _listener$Widgets3[name]);
546
- },
547
- onMouseLeave: function onMouseLeave(event) {
548
- var _listener$Widgets4;
549
- return _onMouseLeave && name && _onMouseLeave(event, listener === null || listener === void 0 || (_listener$Widgets4 = listener.Widgets) === null || _listener$Widgets4 === void 0 ? void 0 : _listener$Widgets4[name]);
550
- },
551
- autoFocus: autofocus,
552
- required: required,
553
- error: Boolean(validationFailureMessage || invalidFormat || dateNotInRange),
554
- helperText: validationFailureMessage || (invalidFormat ? validationmessage || "Invalid date format" : dateNotInRange ? validationmessage || "Date not in valid range" : ""),
555
- InputProps: {
556
- readOnly: isReadOnly,
557
- placeholder: floatinglabel ? undefined : placeholder
558
- },
559
- InputLabelProps: {
560
- shrink: floatinglabel ? undefined : false,
561
- className: floatinglabel ? "wm-datetime-input-label" : undefined
562
- },
563
- inputProps: _objectSpread(_objectSpread({
564
- accessKey: shortcutkey,
565
- "aria-invalid": invalidFormat || dateNotInRange,
566
- className: "form-control app-textbox display-input wm-datetime-html-input"
567
- }, disabled ? {
568
- disabled: true
569
- } : {}), readonly ? {
570
- readOnly: true
571
- } : {}),
572
- onKeyDown: handleKeyDown,
573
- fullWidth: true,
574
- variant: "outlined",
575
- size: "small"
576
- }), __jsx(_material.Box, {
577
- component: "span",
578
- className: "input-group-btn"
579
- }, __jsx(_material.Button, {
580
- className: "btn-date",
581
- tabIndex: tabindex,
582
- "aria-hidden": true,
583
- disableRipple: true,
584
- "aria-label": displayValue ? "Change Date ".concat(displayValue) : "Choose date by pressing enter",
585
- "aria-haspopup": "true",
586
- "aria-expanded": isDateOpen,
587
- onClick: toggleDatePicker,
588
- variant: "outlined",
589
- disabled: isDisabled
590
- }, __jsx(_material.Box, {
591
- component: "i",
592
- className: "app-icon wm-sl-l sl-calendar",
593
- "aria-hidden": "true"
594
- })), __jsx(_material.Button, {
595
- className: "btn-time",
596
- tabIndex: tabindex,
597
- "aria-hidden": true,
598
- disableRipple: true,
599
- "aria-label": "Select time",
600
- "aria-haspopup": "true",
601
- "aria-expanded": isTimeOpen,
602
- onClick: toggleTimePicker,
603
- variant: "outlined",
604
- disabled: isDisabled
605
- }, __jsx(_material.Box, {
606
- component: "i",
607
- className: "app-icon wm-sl-l sl-time",
608
- "aria-hidden": "true"
609
- }))), isDateOpen && !isCurrentDate && __jsx(_DatePicker.DatePicker, {
610
- open: isDateOpen,
611
- onClose: handleDateClose,
612
- onAccept: handleDateAccept,
613
- value: localDateValue && isCurrentMonth ? (0, _momentTimezone["default"])(localDateValue) : null,
614
- onViewChange: function onViewChange(view) {
615
- handleVeiwChange(view);
616
- },
617
- onChange: function onChange(newValue) {
618
- if (!newValue) return;
619
- setLocalDateValue(newValue.toDate());
620
- if (datePickerView === "day") {
621
- handleDateSelection(newValue.toDate());
289
+ setIsCurrentMonth(true);
290
+ }, [tempDateValue]);
291
+ const handleDateClose = useCallback(() => {
292
+ setIsDateOpen(false);
293
+ setIsTimeOpen(false);
294
+ setDatePickerView("day");
295
+ setIsCurrentMonth(true);
296
+ }, []);
297
+ const handleVeiwChange = useCallback((view) => {
298
+ setDatePickerView(view);
299
+ }, []);
300
+ const handleTimeSelection = useCallback(
301
+ (time) => {
302
+ if (!time || !tempDateValue) return;
303
+ const combinedDateTime = moment(tempDateValue).hour(moment(time).hour()).minute(moment(time).minute()).second(moment(time).second()).toDate();
304
+ setLocalDateValue(combinedDateTime);
305
+ setDisplayValue(formatDateWithPattern(combinedDateTime));
306
+ setTempDateValue(combinedDateTime);
307
+ },
308
+ [tempDateValue, formatDateWithPattern]
309
+ );
310
+ const handleTimeAccept = useCallback(() => {
311
+ setIsTimeOpen(false);
312
+ setTempDateValue(null);
313
+ }, [tempDateValue, handleFinalDateChange]);
314
+ const handleTimeCancel = useCallback(() => {
315
+ setIsTimeOpen(false);
316
+ setTempDateValue(null);
317
+ setDisplayValue(localDateValue ? formatDateWithPattern(localDateValue) : "");
318
+ }, [localDateValue, formatDateWithPattern]);
319
+ const handleTimeClose = useCallback(() => {
320
+ if (tempDateValue) {
321
+ handleFinalDateChange(tempDateValue);
622
322
  }
623
- },
624
- onMonthChange: function onMonthChange(newDate) {
625
- if (!localDateValue) return;
626
- var isSameMonth = newDate.month() === (0, _momentTimezone["default"])(localDateValue).month();
627
- setIsCurrentMonth(isSameMonth);
628
- },
629
- minDate: minDateObj ? (0, _momentTimezone["default"])(minDateObj) : undefined,
630
- maxDate: maxDateObj ? (0, _momentTimezone["default"])(maxDateObj) : undefined,
631
- shouldDisableDate: shouldDisableDateCallback,
632
- showDaysOutsideCurrentMonth: selectfromothermonth,
633
- slotProps: {
634
- textField: {
635
- className: "wm-datetime-picker-textfield-hidden"
323
+ setIsTimeOpen(false);
324
+ setTempDateValue(null);
325
+ }, [tempDateValue, handleFinalDateChange]);
326
+ const handleInputChange = useCallback(
327
+ (event) => {
328
+ if (dataentrymode === "picker") return;
329
+ const value = event.target.value;
330
+ setDisplayValue(value);
331
+ if (!value) {
332
+ handleFinalDateChange(null, event);
333
+ return;
334
+ }
335
+ try {
336
+ const momentPattern = mapToMomentPattern(datepattern);
337
+ const parsedDate = moment(value, momentPattern, true);
338
+ if (parsedDate.isValid()) {
339
+ const dateObj = parsedDate.toDate();
340
+ if (isValidDate && isValidDate(dateObj)) {
341
+ handleFinalDateChange(dateObj, event);
342
+ } else {
343
+ handleFinalDateChange(dateObj, event);
344
+ }
345
+ } else {
346
+ if (required) {
347
+ if (onChange && name && (listener == null ? void 0 : listener.Widgets[name]) && props.formfield) {
348
+ onChange(event, listener == null ? void 0 : listener.Widgets[name], value, displayValue);
349
+ }
350
+ setInvalidFormat(true);
351
+ }
352
+ }
353
+ } catch (error) {
354
+ if (required) {
355
+ setInvalidFormat(true);
356
+ }
357
+ }
636
358
  },
637
- popper: {
638
- anchorEl: anchorRef.current,
639
- placement: adaptiveposition ? "bottom-end" : "bottom-start",
640
- className: "wm-datetime-date-picker-popper",
641
- style: {
642
- "--wm-datetime-calendar-width": showweeks ? "420px" : "370px"
359
+ [datepattern, handleFinalDateChange, isValidDate, dataentrymode, required]
360
+ );
361
+ const handleInputClick = useCallback(
362
+ (event) => {
363
+ var _a2;
364
+ if (readonly) return;
365
+ if (onClick && name) {
366
+ onClick(event, (_a2 = listener == null ? void 0 : listener.Widgets) == null ? void 0 : _a2[name]);
367
+ }
368
+ if (shouldOpenOnInput && !readonly && !disabled && !isCurrentDate) {
369
+ setIsDateOpen(true);
370
+ setIsTimeOpen(false);
371
+ setTempDateValue(null);
643
372
  }
644
373
  },
645
- calendarHeader: {
646
- format: "MMMM YYYY"
374
+ [shouldOpenOnInput, readonly, disabled, isCurrentDate, onClick, name, listener]
375
+ );
376
+ const toggleDatePicker = useCallback(
377
+ (event) => {
378
+ if (disabled || readonly || isCurrentDate) return;
379
+ setIsDateOpen((prev) => !prev);
380
+ setIsTimeOpen(false);
381
+ setTempDateValue(null);
647
382
  },
648
- actionBar: {
649
- actions: function () {
650
- var actions = [];
651
- if (todaybutton) actions.push("today");
652
- if (clearbutton) actions.push("clear");
653
- return actions;
654
- }(),
655
- onClick: function onClick(event) {
656
- var _target$textContent;
657
- var target = event.target;
658
- var action = target.getAttribute("data-action") || ((_target$textContent = target.textContent) === null || _target$textContent === void 0 ? void 0 : _target$textContent.toLowerCase());
659
- if (action === "today") handleToday();
660
- if (action === "clear") handleClear();
661
- },
662
- className: "wm-datetime-datepicker-action-bar"
663
- }
664
- },
665
- views: ["year", "month", "day"],
666
- displayWeekNumber: showweeks
667
- }), isTimeOpen && !isCurrentDate && __jsx(_TimePicker.TimePicker, {
668
- open: isTimeOpen,
669
- onClose: handleTimeClose,
670
- onAccept: handleTimeAccept,
671
- value: tempDateValue ? (0, _momentTimezone["default"])(tempDateValue) : (0, _momentTimezone["default"])(),
672
- onChange: function onChange(newValue) {
673
- newValue && handleTimeSelection(newValue.toDate());
674
- },
675
- ampm: showampmbuttons && (datepattern.includes("a") || datepattern.includes("A")),
676
- slotProps: {
677
- textField: {
678
- className: "wm-datetime-picker-textfield-hidden"
383
+ [disabled, readonly, isCurrentDate]
384
+ );
385
+ const toggleTimePicker = useCallback(
386
+ (event) => {
387
+ if (disabled || readonly || isCurrentDate) return;
388
+ let dateForTimeSelection = localDateValue;
389
+ dateForTimeSelection = ensureTime(dateForTimeSelection) || /* @__PURE__ */ new Date();
390
+ setTempDateValue(dateForTimeSelection);
391
+ setIsTimeOpen((prev) => !prev);
392
+ setIsDateOpen(false);
679
393
  },
680
- popper: {
681
- anchorEl: anchorRef.current,
682
- placement: adaptiveposition ? "bottom-start" : "bottom-start",
683
- className: "wm-datetime-time-picker-popper"
394
+ [disabled, readonly, isCurrentDate, localDateValue]
395
+ );
396
+ const handleKeyDown = useCallback(
397
+ (event) => {
398
+ var _a2;
399
+ if (props.handleKeyDown) {
400
+ props.handleKeyDown(event);
401
+ }
402
+ if (shortcutkey && event.altKey && event.key.toLowerCase() === shortcutkey.toLowerCase()) {
403
+ event.preventDefault();
404
+ (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
405
+ return;
406
+ }
407
+ switch (event.key) {
408
+ case "Enter":
409
+ case "ArrowDown":
410
+ if (shouldOpenOnInput) {
411
+ event.preventDefault();
412
+ setIsDateOpen(true);
413
+ }
414
+ break;
415
+ case "Escape":
416
+ if (isTimeOpen) {
417
+ handleTimeCancel();
418
+ } else {
419
+ setIsDateOpen(false);
420
+ setIsTimeOpen(false);
421
+ }
422
+ break;
423
+ }
424
+ },
425
+ [props, isTimeOpen, handleTimeCancel, shouldOpenOnInput, shortcutkey]
426
+ );
427
+ const shouldDisableDateCallback = useCallback(
428
+ (date) => {
429
+ return shouldDisableDate(date, excludedDaysArray, excludedDatesArray);
684
430
  },
685
- actionBar: {
686
- actions: ["accept"]
431
+ [excludedDaysArray, excludedDatesArray]
432
+ );
433
+ const handleToday = useCallback(() => {
434
+ const today = moment().toDate();
435
+ handleFinalDateChange(today);
436
+ setIsTimeOpen(true);
437
+ }, [handleFinalDateChange]);
438
+ const handleClear = useCallback(() => {
439
+ handleFinalDateChange(null);
440
+ }, [handleFinalDateChange]);
441
+ useEffect(() => {
442
+ var _a2;
443
+ if (onBeforeload && name && ((_a2 = listener == null ? void 0 : listener.Widgets) == null ? void 0 : _a2[name]) && !onBeforeloadExecutedRef.current) {
444
+ const syntheticEvent = {};
445
+ onBeforeload(syntheticEvent, listener.Widgets[name]);
446
+ onBeforeloadExecutedRef.current = true;
447
+ }
448
+ }, [onBeforeload, name, listener]);
449
+ const syncDataValueToState = useCallback(() => {
450
+ if (datavalue === "CURRENT_DATE") {
451
+ const currentTime = moment().tz(getTimezone()).toDate();
452
+ const display_time = formatDateWithPattern(currentTime);
453
+ setLocalDateValue(currentTime);
454
+ setDisplayValue(display_time);
455
+ setIsCurrentDate(true);
456
+ updateListener(
457
+ name,
458
+ listener,
459
+ display_time,
460
+ formatDateWithPattern(currentTime, outputformat),
461
+ props,
462
+ void 0,
463
+ "",
464
+ formatDateWithPattern(currentTime, "timestamp")
465
+ );
466
+ } else {
467
+ if (invalidFormat) return;
468
+ setIsCurrentDate(false);
469
+ const parsedDate = parseDateValue(datavalue, datepattern);
470
+ if (!parsedDate && datavalue) {
471
+ if (typeof datavalue === "string" || typeof datavalue === "number") {
472
+ setDisplayValue(String(datavalue));
473
+ }
474
+ setLocalDateValue(null);
475
+ } else {
476
+ if (datavalue == void 0) {
477
+ setLocalDateValue(null);
478
+ setDisplayValue("");
479
+ return;
480
+ }
481
+ setLocalDateValue(parsedDate);
482
+ const formattedValue = formatDateWithPattern(parsedDate);
483
+ setDisplayValue(formattedValue);
484
+ const validationResult = validateDate(
485
+ parsedDate,
486
+ minDateObj,
487
+ maxDateObj,
488
+ excludedDaysArray,
489
+ excludedDatesArray,
490
+ validators,
491
+ validationmessage
492
+ );
493
+ if (validationResult && !validationResult.isValid) {
494
+ setValidationFailureMessage(validationResult.validationMessage || "");
495
+ }
496
+ updateListener(
497
+ name,
498
+ listener,
499
+ formattedValue,
500
+ formatDateWithPattern(parsedDate, outputformat),
501
+ props,
502
+ void 0,
503
+ "",
504
+ formatDateWithPattern(parsedDate, "timestamp")
505
+ );
506
+ }
507
+ }
508
+ }, [datavalue, datepattern, formatDateWithPattern]);
509
+ useEffect(() => {
510
+ if (datavalue === "CURRENT_DATE") {
511
+ syncDataValueToState();
512
+ const interval = setInterval(syncDataValueToState, 1e3);
513
+ return () => clearInterval(interval);
514
+ } else {
515
+ syncDataValueToState();
687
516
  }
688
- },
689
- minutesStep: minutestep,
690
- timeSteps: {
691
- hours: hourstep,
692
- minutes: minutestep,
693
- seconds: 1
694
- },
695
- views: timeViews
696
- }));
697
- }, function (prev, next) {
698
- var keys = ["datavalue", "datepattern", "placeholder", "hint", "tabindex", "shortcutkey", "hourstep", "minutestep", "outputformat", "defaultDateFormat", "defaultTimeFormat", "listener", "required", "mindate", "maxdate", "excludedays", "excludedates", "showweeks", "autofocus", "readonly", "disabled", "selectfromothermonth", "todaybutton", "clearbutton", "adaptiveposition", "showdropdownon", "dataentrymode", "width", "arialabel", "className", "isValidDate", "formatValidation", "floatinglabel", "styles", "showampmbuttons", "hidden", "validators", "validationmessage"];
699
- return keys.every(function (key) {
700
- return (0, _compare["default"])(prev[key], next[key]);
701
- });
702
- });
517
+ }, [datavalue, syncDataValueToState]);
518
+ useEffect(() => {
519
+ if (autofocus && inputRef.current) {
520
+ const timer = setTimeout(() => {
521
+ var _a2;
522
+ return (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
523
+ }, 0);
524
+ return () => clearTimeout(timer);
525
+ }
526
+ }, [autofocus]);
527
+ const timeViews = getTimeViews(datepattern);
528
+ const isDisabled = useMemo(() => {
529
+ return readonly || disabled || isCurrentDate;
530
+ }, [readonly, disabled, isCurrentDate]);
531
+ return /* @__PURE__ */ jsxs(
532
+ Box,
533
+ {
534
+ style: styles,
535
+ ref: anchorRef,
536
+ className: clsx(DEFAULT_CLS, className == null ? void 0 : className.replace("form-control", "")),
537
+ title: hint,
538
+ hidden: props.hidden,
539
+ children: [
540
+ /* @__PURE__ */ jsx(
541
+ TextField,
542
+ {
543
+ disabled: disabled || readonly,
544
+ "aria-readonly": readonly,
545
+ inputRef,
546
+ "aria-label": arialabel,
547
+ name,
548
+ tabIndex: readonly || disabled || isCurrentDate ? -1 : tabindex,
549
+ type: "text",
550
+ value: displayValue,
551
+ label: floatinglabel,
552
+ onClick: handleInputClick,
553
+ onFocus: (event) => {
554
+ if (readonly || disabled || isCurrentDate) {
555
+ event.target.blur();
556
+ return;
557
+ }
558
+ if (onFocus && name) {
559
+ onFocus(event, listener == null ? void 0 : listener.Widgets[name]);
560
+ }
561
+ },
562
+ onBlur: (event) => {
563
+ if (readonly) return;
564
+ onBlur && name && onBlur(event, listener == null ? void 0 : listener.Widgets[name]);
565
+ },
566
+ onChange: handleInputChange,
567
+ onMouseEnter: (event) => {
568
+ var _a2;
569
+ return onMouseEnter && name && onMouseEnter(event, (_a2 = listener == null ? void 0 : listener.Widgets) == null ? void 0 : _a2[name]);
570
+ },
571
+ onMouseLeave: (event) => {
572
+ var _a2;
573
+ return onMouseLeave && name && onMouseLeave(event, (_a2 = listener == null ? void 0 : listener.Widgets) == null ? void 0 : _a2[name]);
574
+ },
575
+ autoFocus: autofocus,
576
+ required,
577
+ error: Boolean(validationFailureMessage || invalidFormat || dateNotInRange),
578
+ helperText: validationFailureMessage || (invalidFormat ? validationmessage || "Invalid date format" : dateNotInRange ? validationmessage || "Date not in valid range" : ""),
579
+ InputProps: {
580
+ readOnly: isReadOnly,
581
+ placeholder: floatinglabel ? void 0 : placeholder
582
+ },
583
+ InputLabelProps: {
584
+ shrink: floatinglabel ? void 0 : false,
585
+ className: floatinglabel ? "wm-datetime-input-label" : void 0
586
+ },
587
+ inputProps: __spreadValues(__spreadValues({
588
+ accessKey: shortcutkey,
589
+ "aria-invalid": invalidFormat || dateNotInRange,
590
+ className: "form-control app-textbox display-input wm-datetime-html-input"
591
+ }, disabled ? { disabled: true } : {}), readonly ? { readOnly: true } : {}),
592
+ onKeyDown: handleKeyDown,
593
+ fullWidth: true,
594
+ variant: "outlined",
595
+ size: "small"
596
+ }
597
+ ),
598
+ /* @__PURE__ */ jsxs(Box, { component: "span", className: "input-group-btn", children: [
599
+ /* @__PURE__ */ jsx(
600
+ Button,
601
+ {
602
+ className: "btn-date",
603
+ tabIndex: tabindex,
604
+ "aria-hidden": true,
605
+ disableRipple: true,
606
+ "aria-label": displayValue ? `Change Date ${displayValue}` : "Choose date by pressing enter",
607
+ "aria-haspopup": "true",
608
+ "aria-expanded": isDateOpen,
609
+ onClick: toggleDatePicker,
610
+ variant: "outlined",
611
+ disabled: isDisabled,
612
+ children: /* @__PURE__ */ jsx(Box, { component: "i", className: "app-icon wm-sl-l sl-calendar", "aria-hidden": "true" })
613
+ }
614
+ ),
615
+ /* @__PURE__ */ jsx(
616
+ Button,
617
+ {
618
+ className: "btn-time",
619
+ tabIndex: tabindex,
620
+ "aria-hidden": true,
621
+ disableRipple: true,
622
+ "aria-label": "Select time",
623
+ "aria-haspopup": "true",
624
+ "aria-expanded": isTimeOpen,
625
+ onClick: toggleTimePicker,
626
+ variant: "outlined",
627
+ disabled: isDisabled,
628
+ children: /* @__PURE__ */ jsx(Box, { component: "i", className: "app-icon wm-sl-l sl-time", "aria-hidden": "true" })
629
+ }
630
+ )
631
+ ] }),
632
+ isDateOpen && !isCurrentDate && /* @__PURE__ */ jsx(
633
+ DatePicker,
634
+ {
635
+ open: isDateOpen,
636
+ onClose: handleDateClose,
637
+ onAccept: handleDateAccept,
638
+ value: localDateValue && isCurrentMonth ? moment(localDateValue) : null,
639
+ onViewChange: (view) => {
640
+ handleVeiwChange(view);
641
+ },
642
+ onChange: (newValue) => {
643
+ if (!newValue) return;
644
+ setLocalDateValue(newValue.toDate());
645
+ if (datePickerView === "day") {
646
+ handleDateSelection(newValue.toDate());
647
+ }
648
+ },
649
+ onMonthChange: (newDate) => {
650
+ if (!localDateValue) return;
651
+ const isSameMonth = newDate.month() === moment(localDateValue).month();
652
+ setIsCurrentMonth(isSameMonth);
653
+ },
654
+ minDate: minDateObj ? moment(minDateObj) : void 0,
655
+ maxDate: maxDateObj ? moment(maxDateObj) : void 0,
656
+ shouldDisableDate: shouldDisableDateCallback,
657
+ showDaysOutsideCurrentMonth: selectfromothermonth,
658
+ slotProps: {
659
+ textField: {
660
+ className: "wm-datetime-picker-textfield-hidden"
661
+ },
662
+ popper: {
663
+ anchorEl: anchorRef.current,
664
+ placement: adaptiveposition ? "bottom-end" : "bottom-start",
665
+ className: "wm-datetime-date-picker-popper",
666
+ style: {
667
+ "--wm-datetime-calendar-width": showweeks ? "420px" : "370px"
668
+ }
669
+ },
670
+ calendarHeader: {
671
+ format: "MMMM YYYY"
672
+ },
673
+ actionBar: {
674
+ actions: (() => {
675
+ const actions = [];
676
+ if (todaybutton) actions.push("today");
677
+ if (clearbutton) actions.push("clear");
678
+ return actions;
679
+ })(),
680
+ onClick: (event) => {
681
+ var _a2;
682
+ const target = event.target;
683
+ const action = target.getAttribute("data-action") || ((_a2 = target.textContent) == null ? void 0 : _a2.toLowerCase());
684
+ if (action === "today") handleToday();
685
+ if (action === "clear") handleClear();
686
+ },
687
+ className: "wm-datetime-datepicker-action-bar"
688
+ }
689
+ },
690
+ views: ["year", "month", "day"],
691
+ displayWeekNumber: showweeks
692
+ }
693
+ ),
694
+ isTimeOpen && !isCurrentDate && /* @__PURE__ */ jsx(
695
+ TimePicker,
696
+ {
697
+ open: isTimeOpen,
698
+ onClose: handleTimeClose,
699
+ onAccept: handleTimeAccept,
700
+ value: tempDateValue ? moment(tempDateValue) : moment(),
701
+ onChange: (newValue) => {
702
+ newValue && handleTimeSelection(newValue.toDate());
703
+ },
704
+ ampm: showampmbuttons && (datepattern.includes("a") || datepattern.includes("A")),
705
+ slotProps: {
706
+ textField: {
707
+ className: "wm-datetime-picker-textfield-hidden"
708
+ },
709
+ popper: {
710
+ anchorEl: anchorRef.current,
711
+ placement: adaptiveposition ? "bottom-start" : "bottom-start",
712
+ className: "wm-datetime-time-picker-popper"
713
+ },
714
+ actionBar: {
715
+ actions: ["accept"]
716
+ }
717
+ },
718
+ minutesStep: minutestep,
719
+ timeSteps: { hours: hourstep, minutes: minutestep, seconds: 1 },
720
+ views: timeViews
721
+ }
722
+ )
723
+ ]
724
+ }
725
+ );
726
+ },
727
+ (prev, next) => {
728
+ const keys = [
729
+ "datavalue",
730
+ "datepattern",
731
+ "placeholder",
732
+ "hint",
733
+ "tabindex",
734
+ "shortcutkey",
735
+ "hourstep",
736
+ "minutestep",
737
+ "outputformat",
738
+ "defaultDateFormat",
739
+ "defaultTimeFormat",
740
+ "listener",
741
+ "required",
742
+ "mindate",
743
+ "maxdate",
744
+ "excludedays",
745
+ "excludedates",
746
+ "showweeks",
747
+ "autofocus",
748
+ "readonly",
749
+ "disabled",
750
+ "selectfromothermonth",
751
+ "todaybutton",
752
+ "clearbutton",
753
+ "adaptiveposition",
754
+ "showdropdownon",
755
+ "dataentrymode",
756
+ "width",
757
+ "arialabel",
758
+ "className",
759
+ "isValidDate",
760
+ "formatValidation",
761
+ "floatinglabel",
762
+ "styles",
763
+ "showampmbuttons",
764
+ "hidden",
765
+ "validators",
766
+ "validationmessage"
767
+ ];
768
+ return keys.every((key) => {
769
+ return compare(prev[key], next[key]);
770
+ });
771
+ }
772
+ );
703
773
  WmDateTime.displayName = "WmDateTime";
704
-
705
- // @ts-expect-error wrap with baseDatetime and formcontroller
706
- var withForm = (0, _BaseDateTime["default"])((0, _withFormController["default"])(WmDateTime));
707
- var WmDateTimeStandalone = exports.WmDatetime = (0, _withStandalone["default"])(withForm);
708
- /**
709
- * The WmDateTime component provides a combined date and time picker input.
710
- *
711
- * - [Playground](https://react-components.wavemaker.ai/?path=/story/input-datetime--showcase)
712
- *
713
- * - [Docs](https://react-components.wavemaker.ai/?path=/story/input-datetime--docs)
714
- *
715
- * @param props - {@link WmDateTimeProps}
716
- */
717
- var _default = exports["default"] = (0, _withBaseWrapper["default"])(withForm);
774
+ const withForm = withBaseDateTime(withFormController(WmDateTime));
775
+ const WmDateTimeStandalone = withStandalone(withForm);
776
+ var datetime_default = withBaseWrapper(withForm);
777
+ export {
778
+ WmDateTimeStandalone as WmDatetime,
779
+ datetime_default as default
780
+ };