@wavemaker-ai/react-runtime 1.0.0-rc.647502 → 1.0.0-rc.647582

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 (596) 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.d.ts +1 -0
  6. package/actions/navigation-action.js +275 -345
  7. package/actions/notification-action.js +121 -149
  8. package/actions/timer-action.js +95 -151
  9. package/actions/toast-provider.js +62 -76
  10. package/actions/toast.js +95 -91
  11. package/actions/toast.service.js +59 -79
  12. package/actions/types/index.js +6 -9
  13. package/components/advanced/carousel/index.js +358 -366
  14. package/components/advanced/carousel/props.js +0 -5
  15. package/components/advanced/carousel/template.js +102 -80
  16. package/components/advanced/login/index.js +227 -285
  17. package/components/advanced/login/props.js +0 -5
  18. package/components/advanced/marquee/index.js +169 -163
  19. package/components/advanced/marquee/props.js +0 -5
  20. package/components/auth/RoleAuthGuard.d.ts +6 -0
  21. package/components/auth/RoleAuthGuard.js +65 -0
  22. package/components/basic/anchor/index.js +207 -187
  23. package/components/basic/anchor/props.js +0 -5
  24. package/components/basic/audio/index.js +110 -72
  25. package/components/basic/audio/props.js +0 -5
  26. package/components/basic/html/index.js +163 -203
  27. package/components/basic/html/props.js +0 -5
  28. package/components/basic/html/utils.js +30 -28
  29. package/components/basic/icon/index.js +98 -84
  30. package/components/basic/icon/props.js +0 -5
  31. package/components/basic/iframe/iframe.utils.js +7 -16
  32. package/components/basic/iframe/index.js +97 -103
  33. package/components/basic/iframe/props.js +0 -5
  34. package/components/basic/label/index.js +156 -134
  35. package/components/basic/label/props.js +0 -5
  36. package/components/basic/message/index.js +129 -113
  37. package/components/basic/message/props.js +0 -5
  38. package/components/basic/picture/index.js +156 -127
  39. package/components/basic/picture/props.js +0 -5
  40. package/components/basic/progress-bar/index.js +240 -176
  41. package/components/basic/progress-bar/props.js +5 -31
  42. package/components/basic/progress-circle/index.js +166 -183
  43. package/components/basic/progress-circle/props.js +14 -34
  44. package/components/basic/richtexteditor/index.js +430 -396
  45. package/components/basic/richtexteditor/props.js +0 -5
  46. package/components/basic/search/index.js +813 -931
  47. package/components/basic/search/props.js +0 -5
  48. package/components/basic/search/providers.js +233 -380
  49. package/components/basic/spinner/index.js +210 -200
  50. package/components/basic/spinner/props.js +4 -22
  51. package/components/basic/tile/index.js +73 -81
  52. package/components/basic/tile/props.js +0 -5
  53. package/components/basic/tree/Components/TreeNodeComponent.d.ts +1 -1
  54. package/components/basic/tree/Components/TreeNodeComponent.js +244 -170
  55. package/components/basic/tree/hooks/useTreePartialNodeApi.js +143 -135
  56. package/components/basic/tree/hooks/useTreePersistedState.d.ts +3 -0
  57. package/components/basic/tree/hooks/useTreePersistedState.js +38 -0
  58. package/components/basic/tree/index.d.ts +1 -0
  59. package/components/basic/tree/index.js +453 -454
  60. package/components/basic/tree/props.d.ts +18 -1
  61. package/components/basic/tree/props.js +0 -5
  62. package/components/basic/tree/utils.d.ts +16 -1
  63. package/components/basic/tree/utils.js +240 -185
  64. package/components/basic/video/index.js +161 -107
  65. package/components/basic/video/props.js +0 -5
  66. package/components/chart/index.js +42 -50
  67. package/components/chart/props.js +31 -37
  68. package/components/chart/src/ChartRenderer.js +172 -154
  69. package/components/chart/src/chart.js +391 -213
  70. package/components/chart/src/chartStyles.generated.js +6 -14
  71. package/components/chart/src/chartUtils.js +228 -272
  72. package/components/chart/src/constants.d.ts +13 -0
  73. package/components/chart/src/constants.js +316 -90
  74. package/components/chart/src/d3Setup.js +11 -30
  75. package/components/chart/src/dataUtils.js +363 -447
  76. package/components/chart/src/formatUtils.js +47 -38
  77. package/components/chart/src/index.js +11 -19
  78. package/components/chart/src/nvd3Source.generated.js +5 -13
  79. package/components/chart/src/pieDonutResponsiveLayout.d.ts +5 -0
  80. package/components/chart/src/pieDonutResponsiveLayout.js +76 -96
  81. package/components/chart/src/types.js +0 -5
  82. package/components/common/AppSpinner.js +17 -33
  83. package/components/common/app-spinner.js +11 -22
  84. package/components/common/customTemplate/index.d.ts +3 -0
  85. package/components/common/customTemplate/index.js +6 -0
  86. package/components/common/customTemplate/props.d.ts +20 -0
  87. package/components/common/customTemplate/props.js +0 -0
  88. package/components/common/customTemplate/template.d.ts +3 -0
  89. package/components/common/customTemplate/template.js +27 -0
  90. package/components/common/customTemplate/useCustomTemplate.d.ts +8 -0
  91. package/components/common/customTemplate/useCustomTemplate.js +17 -0
  92. package/components/common/customTemplate/utils.d.ts +6 -0
  93. package/components/common/customTemplate/utils.js +12 -0
  94. package/components/common/index.js +4 -12
  95. package/components/constants.js +81 -77
  96. package/components/container/accordion/accordion-pane/index.js +105 -118
  97. package/components/container/accordion/accordion-pane/props.js +5 -21
  98. package/components/container/accordion/index.js +225 -243
  99. package/components/container/accordion/props.js +5 -16
  100. package/components/container/index.js +214 -150
  101. package/components/container/layout-grid/grid-column/index.js +69 -43
  102. package/components/container/layout-grid/grid-column/props.js +0 -5
  103. package/components/container/layout-grid/grid-row/index.js +12 -29
  104. package/components/container/layout-grid/grid-row/props.js +0 -5
  105. package/components/container/layout-grid/index.js +53 -38
  106. package/components/container/layout-grid/props.js +0 -5
  107. package/components/container/linear-layout/index.js +56 -60
  108. package/components/container/linear-layout/linear-layout-item/index.js +43 -47
  109. package/components/container/linear-layout/linear-layout-item/props.js +0 -5
  110. package/components/container/linear-layout/props.js +0 -5
  111. package/components/container/panel/components/panel-content/index.js +7 -16
  112. package/components/container/panel/components/panel-header/index.js +166 -146
  113. package/components/container/panel/components/panel-header/props.js +0 -5
  114. package/components/container/panel/hooks.js +76 -102
  115. package/components/container/panel/index.js +289 -252
  116. package/components/container/panel/props.js +0 -5
  117. package/components/container/props.js +0 -5
  118. package/components/container/repeat-template/index.js +65 -44
  119. package/components/container/repeat-template/props.js +0 -5
  120. package/components/container/tabs/index.js +517 -526
  121. package/components/container/tabs/props.js +5 -28
  122. package/components/container/tabs/tab-pane/index.js +105 -100
  123. package/components/container/tabs/tab-pane/props.js +0 -5
  124. package/components/container/tabs/utils.js +30 -35
  125. package/components/container/wizard/WizardContext.js +9 -11
  126. package/components/container/wizard/components/StepComponents.js +76 -99
  127. package/components/container/wizard/components/WizardStep.js +107 -85
  128. package/components/container/wizard/index.js +791 -921
  129. package/components/container/wizard/props.js +0 -5
  130. package/components/container/wizard/utils.js +97 -131
  131. package/components/container/wizard/wizard-action/index.js +41 -81
  132. package/components/container/wizard/wizard-step/index.js +140 -120
  133. package/components/data/card/card-actions/index.js +13 -31
  134. package/components/data/card/card-content/index.js +27 -36
  135. package/components/data/card/card-footer/index.js +13 -31
  136. package/components/data/card/index.js +192 -199
  137. package/components/data/card/props.js +0 -5
  138. package/components/data/form/base-form/constant.js +5 -8
  139. package/components/data/form/base-form/hooks/index.js +26 -77
  140. package/components/data/form/base-form/hooks/useFormDataSync.js +106 -212
  141. package/components/data/form/base-form/hooks/useFormOperations.js +109 -161
  142. package/components/data/form/base-form/hooks/useFormSubmission.js +220 -280
  143. package/components/data/form/base-form/hooks/useFormValidation.js +119 -168
  144. package/components/data/form/base-form/hooks/useParentFormRelationship.js +67 -103
  145. package/components/data/form/base-form/index.js +534 -647
  146. package/components/data/form/base-form/props.js +74 -151
  147. package/components/data/form/base-form/utils.js +210 -323
  148. package/components/data/form/dynamic-fields/constant.js +43 -53
  149. package/components/data/form/dynamic-fields/index.js +135 -144
  150. package/components/data/form/dynamic-fields/props.js +0 -5
  151. package/components/data/form/dynamic-fields/utils.js +99 -158
  152. package/components/data/form/form-action/index.js +107 -85
  153. package/components/data/form/form-body/index.js +52 -26
  154. package/components/data/form/form-context.js +43 -59
  155. package/components/data/form/form-controller/hooks/index.js +43 -57
  156. package/components/data/form/form-controller/props.js +5 -8
  157. package/components/data/form/form-controller/utils.js +54 -49
  158. package/components/data/form/form-controller/validation-contrustor.js +203 -426
  159. package/components/data/form/form-controller/withFormController.js +320 -274
  160. package/components/data/form/form-dynamic-section/index.js +47 -41
  161. package/components/data/form/form-dynamic-section/props.js +0 -5
  162. package/components/data/form/form-field/base-field.js +97 -109
  163. package/components/data/form/form-field/index.js +91 -82
  164. package/components/data/form/form-field/props.js +0 -5
  165. package/components/data/form/form-footer/index.js +52 -25
  166. package/components/data/form/form-header/index.js +61 -58
  167. package/components/data/form/index.js +95 -74
  168. package/components/data/form/props.js +0 -5
  169. package/components/data/list/components/GroupHeader.js +34 -33
  170. package/components/data/list/components/GroupedListItems.js +108 -104
  171. package/components/data/list/components/ListContainer.js +22 -27
  172. package/components/data/list/components/ListDND.js +193 -185
  173. package/components/data/list/components/ListHeader.js +32 -49
  174. package/components/data/list/components/ListItem.js +153 -146
  175. package/components/data/list/components/ListItemWithTemplate.js +87 -105
  176. package/components/data/list/components/ListItems.js +180 -194
  177. package/components/data/list/components/ListPagination.js +127 -153
  178. package/components/data/list/components/LoadMoreButton.js +25 -33
  179. package/components/data/list/components/NoDataMessage.js +9 -22
  180. package/components/data/list/components/StandardListItems.js +79 -85
  181. package/components/data/list/components/index.js +31 -119
  182. package/components/data/list/components/props.js +0 -5
  183. package/components/data/list/hooks/index.js +22 -75
  184. package/components/data/list/hooks/props.js +0 -5
  185. package/components/data/list/hooks/useCurrentPageItems.js +20 -38
  186. package/components/data/list/hooks/useGroupedData.js +19 -33
  187. package/components/data/list/hooks/useListData.js +17 -47
  188. package/components/data/list/hooks/useListEffects.js +168 -237
  189. package/components/data/list/hooks/useListEventHandlers.js +301 -285
  190. package/components/data/list/hooks/useListPagination.js +90 -136
  191. package/components/data/list/hooks/useListState.js +49 -91
  192. package/components/data/list/hooks/useListStateManager.js +104 -159
  193. package/components/data/list/hooks/usePaginatedGroupedData.js +74 -110
  194. package/components/data/list/index.d.ts +1 -0
  195. package/components/data/list/index.js +579 -621
  196. package/components/data/list/props.d.ts +4 -0
  197. package/components/data/list/props.js +0 -5
  198. package/components/data/list/templates/media-template.js +29 -50
  199. package/components/data/list/utils/constants.js +20 -32
  200. package/components/data/list/utils/list-helpers.d.ts +2 -1
  201. package/components/data/list/utils/list-helpers.js +71 -115
  202. package/components/data/list/utils/list-widget-methods.js +56 -76
  203. package/components/data/list/utils/widget-instance-utils.js +20 -57
  204. package/components/data/live-filter/index.js +219 -271
  205. package/components/data/live-filter/props.js +5 -12
  206. package/components/data/live-form/index.js +68 -91
  207. package/components/data/live-form/props.js +5 -12
  208. package/components/data/pagination/components/BasicPagination.js +124 -104
  209. package/components/data/pagination/components/ClassicPagination.js +167 -190
  210. package/components/data/pagination/components/InlinePagination.js +97 -98
  211. package/components/data/pagination/components/LoadingComponent.js +17 -30
  212. package/components/data/pagination/components/PageSizeSelector.js +176 -169
  213. package/components/data/pagination/components/PagerNavigation.js +84 -105
  214. package/components/data/pagination/components/TotalRecords.js +48 -47
  215. package/components/data/pagination/components/index.js +14 -47
  216. package/components/data/pagination/components/props.js +0 -5
  217. package/components/data/pagination/hooks/index.js +6 -19
  218. package/components/data/pagination/hooks/props.js +0 -5
  219. package/components/data/pagination/hooks/useNavigationSize.js +12 -21
  220. package/components/data/pagination/hooks/usePagination.js +701 -905
  221. package/components/data/pagination/index.js +336 -389
  222. package/components/data/table/components/AddNewRow.js +122 -154
  223. package/components/data/table/components/EditableCell.js +68 -75
  224. package/components/data/table/components/FieldValidationError.js +19 -20
  225. package/components/data/table/components/RowCells.js +97 -80
  226. package/components/data/table/components/RowExpansionButton.js +43 -39
  227. package/components/data/table/components/SummaryCell.js +54 -88
  228. package/components/data/table/components/SummaryRow.js +45 -52
  229. package/components/data/table/components/SummaryRowFooter.js +35 -42
  230. package/components/data/table/components/TableBody.js +222 -218
  231. package/components/data/table/components/TableDataRow.js +113 -106
  232. package/components/data/table/components/TableFilters.js +391 -390
  233. package/components/data/table/components/TableFooterActions.js +25 -32
  234. package/components/data/table/components/TableHeader.js +460 -435
  235. package/components/data/table/components/TablePanelHeading.js +157 -181
  236. package/components/data/table/components/index.js +27 -95
  237. package/components/data/table/hooks/index.js +21 -230
  238. package/components/data/table/hooks/use-edited-rows.js +59 -94
  239. package/components/data/table/hooks/useCellState.js +58 -83
  240. package/components/data/table/hooks/useCustomExpressionColumns.js +65 -86
  241. package/components/data/table/hooks/useDynamicColumns.js +59 -92
  242. package/components/data/table/hooks/useEditingState.js +30 -41
  243. package/components/data/table/hooks/useFormWidget.js +163 -172
  244. package/components/data/table/hooks/usePaginationState.js +67 -77
  245. package/components/data/table/hooks/usePanelStructure.js +47 -41
  246. package/components/data/table/hooks/useResponsiveColumns.js +14 -20
  247. package/components/data/table/hooks/useRowExpansion.js +131 -127
  248. package/components/data/table/hooks/useRowHandlers.js +56 -69
  249. package/components/data/table/hooks/useRowSelection.js +249 -329
  250. package/components/data/table/hooks/useServerSideSorting.js +109 -175
  251. package/components/data/table/hooks/useTableColumns.js +322 -331
  252. package/components/data/table/hooks/useTableData.js +111 -166
  253. package/components/data/table/hooks/useTableEdit.js +526 -564
  254. package/components/data/table/hooks/useTableEffects.js +60 -107
  255. package/components/data/table/hooks/useTableFilter.js +244 -237
  256. package/components/data/table/hooks/useTableInitialization.js +44 -76
  257. package/components/data/table/hooks/useTableState.js +39 -61
  258. package/components/data/table/hooks/useTableStateManager.js +295 -468
  259. package/components/data/table/index.js +1556 -1713
  260. package/components/data/table/live-table/index.js +157 -219
  261. package/components/data/table/props.js +0 -5
  262. package/components/data/table/table-action/index.js +97 -75
  263. package/components/data/table/table-column/index.js +48 -42
  264. package/components/data/table/table-group/index.js +7 -25
  265. package/components/data/table/table-row/index.js +63 -55
  266. package/components/data/table/table-row-action/index.js +102 -77
  267. package/components/data/table/utils/buildSelectionColumns.js +86 -137
  268. package/components/data/table/utils/columnBuilder.d.ts +1 -1
  269. package/components/data/table/utils/columnBuilder.js +121 -160
  270. package/components/data/table/utils/columnProxy.js +48 -66
  271. package/components/data/table/utils/columnWidthDistribution.js +40 -64
  272. package/components/data/table/utils/constants.js +92 -40
  273. package/components/data/table/utils/crud-handlers.js +292 -473
  274. package/components/data/table/utils/dynamic-columns.js +99 -144
  275. package/components/data/table/utils/groupHeaderUtils.js +36 -61
  276. package/components/data/table/utils/index.d.ts +17 -13
  277. package/components/data/table/utils/index.js +483 -639
  278. package/components/data/table/utils/renderDisplayCell.js +127 -169
  279. package/components/data/table/utils/script-page-size-broadcast.js +17 -29
  280. package/components/data/table/utils/selectionUtils.js +59 -113
  281. package/components/data/table/utils/table-helpers.js +38 -74
  282. package/components/data/table/utils/validation.js +35 -78
  283. package/components/data/table/utils/widgetMapping.d.ts +5 -0
  284. package/components/data/table/utils/widgetMapping.js +41 -0
  285. package/components/data/types.js +112 -112
  286. package/components/data/utils/field-data-utils.js +38 -42
  287. package/components/data/utils/filter-field-util.js +42 -44
  288. package/components/data/utils/index.js +112 -111
  289. package/components/dialogs/alert-dialog/index.js +83 -78
  290. package/components/dialogs/alert-dialog/props.js +0 -5
  291. package/components/dialogs/confirm-dialog/index.js +102 -92
  292. package/components/dialogs/confirm-dialog/props.js +0 -5
  293. package/components/dialogs/dialog/index.js +93 -69
  294. package/components/dialogs/dialog/props.js +0 -5
  295. package/components/dialogs/dialog-actions/index.js +12 -26
  296. package/components/dialogs/dialog-actions/props.js +0 -5
  297. package/components/dialogs/dialog-body/index.js +13 -30
  298. package/components/dialogs/dialog-body/props.js +0 -5
  299. package/components/dialogs/dialog-content/index.js +48 -41
  300. package/components/dialogs/dialog-content/props.js +0 -5
  301. package/components/dialogs/dialog-header/index.js +88 -101
  302. package/components/dialogs/dialog-header/props.js +0 -5
  303. package/components/dialogs/iframe-dialog/index.js +136 -128
  304. package/components/dialogs/iframe-dialog/props.js +0 -5
  305. package/components/dialogs/index.js +104 -101
  306. package/components/dialogs/login-dialog/index.js +285 -347
  307. package/components/dialogs/login-dialog/props.js +0 -5
  308. package/components/dialogs/page-dialog/index.js +95 -86
  309. package/components/dialogs/page-dialog/props.js +0 -5
  310. package/components/dialogs/props.js +0 -5
  311. package/components/dialogs/withDialogWrapper.js +110 -83
  312. package/components/form/button/index.js +296 -245
  313. package/components/form/button/props.js +0 -5
  314. package/components/form/button-group/index.js +80 -69
  315. package/components/form/button-group/props.js +0 -5
  316. package/components/input/calendar/index.js +409 -362
  317. package/components/input/calendar/props.js +0 -5
  318. package/components/input/calendar/utils.js +164 -172
  319. package/components/input/chips/SortableChip/index.js +109 -100
  320. package/components/input/chips/SortableChip/props.js +0 -5
  321. package/components/input/chips/index.js +663 -570
  322. package/components/input/chips/props.js +0 -5
  323. package/components/input/chips/utils.js +131 -122
  324. package/components/input/color-picker/index.js +536 -594
  325. package/components/input/color-picker/props.js +0 -5
  326. package/components/input/composite/index.js +71 -110
  327. package/components/input/composite/props.js +0 -5
  328. package/components/input/currency/index.js +277 -224
  329. package/components/input/currency/props.js +0 -5
  330. package/components/input/default/checkbox/index.js +329 -250
  331. package/components/input/default/checkbox/props.js +0 -5
  332. package/components/input/default/checkboxset/index.d.ts +2 -0
  333. package/components/input/default/checkboxset/index.js +529 -446
  334. package/components/input/default/checkboxset/props.d.ts +4 -0
  335. package/components/input/default/checkboxset/props.js +0 -5
  336. package/components/input/default/checkboxset/utils.js +15 -25
  337. package/components/input/default/radioset/index.d.ts +2 -0
  338. package/components/input/default/radioset/index.js +409 -350
  339. package/components/input/default/radioset/props.d.ts +6 -0
  340. package/components/input/default/radioset/props.js +0 -5
  341. package/components/input/default/switch/index.js +494 -458
  342. package/components/input/default/switch/prop.js +0 -5
  343. package/components/input/epoch/date/components/DatePickerPopover.js +242 -193
  344. package/components/input/epoch/date/index.js +638 -518
  345. package/components/input/epoch/date/props.js +0 -5
  346. package/components/input/epoch/date/styled.js +61 -70
  347. package/components/input/epoch/date/utils.js +67 -115
  348. package/components/input/epoch/datetime/index.js +758 -695
  349. package/components/input/epoch/datetime/props.js +0 -5
  350. package/components/input/epoch/datetime/utils.js +121 -186
  351. package/components/input/epoch/time/index.js +441 -415
  352. package/components/input/epoch/time/props.js +0 -5
  353. package/components/input/epoch/time/utils.js +101 -112
  354. package/components/input/fileupload/Utils.js +70 -97
  355. package/components/input/fileupload/components/ListItems.js +132 -130
  356. package/components/input/fileupload/components/MultiUpload.js +80 -77
  357. package/components/input/fileupload/components/SingleUpload.js +57 -57
  358. package/components/input/fileupload/index.js +253 -178
  359. package/components/input/fileupload/props.js +0 -5
  360. package/components/input/fileupload/useFileUpload.js +209 -258
  361. package/components/input/number/index.js +434 -393
  362. package/components/input/number/props.js +0 -5
  363. package/components/input/rating/index.js +401 -394
  364. package/components/input/rating/props.js +0 -5
  365. package/components/input/select/index.js +408 -463
  366. package/components/input/select/props.js +0 -5
  367. package/components/input/slider/index.js +339 -332
  368. package/components/input/slider/props.js +0 -5
  369. package/components/input/text/index.d.ts +3 -3
  370. package/components/input/text/index.js +438 -475
  371. package/components/input/text/props.d.ts +1 -1
  372. package/components/input/text/props.js +0 -5
  373. package/components/input/text/util.js +82 -222
  374. package/components/input/textarea/index.js +322 -358
  375. package/components/input/textarea/props.js +0 -5
  376. package/components/input/upload/index.js +135 -131
  377. package/components/input/upload/props.js +0 -5
  378. package/components/input/util/index.js +9 -11
  379. package/components/layout/footer/index.js +12 -35
  380. package/components/layout/footer/props.js +0 -5
  381. package/components/layout/header/index.js +12 -38
  382. package/components/layout/header/props.js +0 -5
  383. package/components/layout/leftnav/index.js +57 -44
  384. package/components/layout/leftnav/props.d.ts +9 -0
  385. package/components/layout/leftnav/props.js +0 -5
  386. package/components/layout/leftnav/utils/page-class-util.d.ts +9 -0
  387. package/components/layout/leftnav/utils/page-class-util.js +28 -0
  388. package/components/layout/rightnav/index.js +12 -36
  389. package/components/layout/rightnav/props.js +0 -5
  390. package/components/layout/topnav/index.js +24 -38
  391. package/components/layout/topnav/props.js +0 -5
  392. package/components/navbar/index.js +119 -98
  393. package/components/navbar/nav/index.js +236 -232
  394. package/components/navbar/nav/props.js +0 -5
  395. package/components/navbar/nav-item/index.js +74 -65
  396. package/components/navbar/nav-item/props.js +0 -5
  397. package/components/navigation/breadcrumb/index.js +38 -61
  398. package/components/navigation/breadcrumb/props.js +0 -5
  399. package/components/navigation/menu/components/ListItems.js +76 -67
  400. package/components/navigation/menu/constants.js +27 -42
  401. package/components/navigation/menu/hooks/useHoverState.hook.js +20 -47
  402. package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +34 -28
  403. package/components/navigation/menu/hooks/useTransformedDataset.hook.js +21 -14
  404. package/components/navigation/menu/index.js +911 -846
  405. package/components/navigation/menu/props.js +0 -5
  406. package/components/navigation/menu/utils/action-task.js +6 -9
  407. package/components/navigation/menu/utils/role-filter.js +41 -56
  408. package/components/navigation/popover/index.js +192 -205
  409. package/components/navigation/popover/props.js +5 -8
  410. package/components/page/content/index.js +9 -31
  411. package/components/page/content/props.js +0 -5
  412. package/components/page/error-boundary/index.js +115 -105
  413. package/components/page/error-boundary/props.js +0 -5
  414. package/components/page/index.js +100 -102
  415. package/components/page/page-content/index.js +21 -30
  416. package/components/page/page-content/props.js +0 -5
  417. package/components/page/page-context.d.ts +4 -0
  418. package/components/page/page-context.js +5 -0
  419. package/components/page/partial/index.js +50 -45
  420. package/components/page/partial/props.js +0 -5
  421. package/components/page/partial-container/index.js +78 -107
  422. package/components/page/partial-container/props.d.ts +1 -1
  423. package/components/page/partial-container/props.js +0 -5
  424. package/components/page/props.js +0 -5
  425. package/components/page/toast-container/index.js +20 -41
  426. package/components/page/toast-container/props.js +0 -5
  427. package/components/prefab/container/index.js +60 -53
  428. package/components/prefab/container/props.js +0 -5
  429. package/components/prefab/index.js +76 -61
  430. package/components/prefab/props.js +0 -5
  431. package/context/AppContext.d.ts +1 -1
  432. package/context/AppContext.js +17 -18
  433. package/context/AppSpinnerProvider.js +19 -34
  434. package/context/LayoutProvider.js +54 -57
  435. package/context/LocalizationProvider.js +34 -49
  436. package/context/PrefabContext.js +68 -119
  437. package/context/WidgetProvider.js +160 -166
  438. package/core/app-config.js +0 -1
  439. package/core/app.service.js +200 -327
  440. package/core/appVariablesStore.js +10 -15
  441. package/core/appstore.js +37 -53
  442. package/core/constants/currency-constant.js +81 -83
  443. package/core/constants/events.js +34 -44
  444. package/core/constants/index.js +21 -31
  445. package/core/dialog.service.js +52 -72
  446. package/core/event-notifier.js +94 -131
  447. package/core/formatter/array-formatters.js +18 -32
  448. package/core/formatter/date-formatters.js +140 -204
  449. package/core/formatter/index.js +64 -117
  450. package/core/formatter/number-formatters.js +115 -159
  451. package/core/formatter/security-formatters.js +233 -283
  452. package/core/formatter/string-formatters.js +23 -45
  453. package/core/formatter/types.js +12 -18
  454. package/core/formatters.js +6 -24
  455. package/core/proxy-service.js +242 -306
  456. package/core/script-registry.js +87 -134
  457. package/core/security.service.js +8 -11
  458. package/core/util/compare.js +13 -25
  459. package/core/util/dom.js +32 -63
  460. package/core/util/index.d.ts +5 -0
  461. package/core/util/index.js +95 -95
  462. package/core/util/safe-is-equal.js +42 -94
  463. package/core/util/security.js +114 -153
  464. package/core/util/utils.d.ts +8 -1
  465. package/core/util/utils.js +124 -132
  466. package/core/widget-observer.js +34 -61
  467. package/higherOrder/BaseApp.js +328 -500
  468. package/higherOrder/BaseAppProps.d.ts +1 -0
  469. package/higherOrder/BaseAppProps.js +0 -5
  470. package/higherOrder/BaseDateTime.js +277 -231
  471. package/higherOrder/BasePage.js +474 -740
  472. package/higherOrder/BasePartial.js +87 -114
  473. package/higherOrder/BasePrefab.js +190 -206
  474. package/higherOrder/DataNav.js +287 -302
  475. package/higherOrder/helper.js +62 -48
  476. package/higherOrder/props.js +0 -5
  477. package/higherOrder/withBaseWrapper.js +123 -168
  478. package/higherOrder/withStandalone.js +28 -26
  479. package/hooks/useAccess.js +113 -289
  480. package/hooks/useAppConfig.js +15 -40
  481. package/hooks/useAuth.js +256 -495
  482. package/hooks/useDataSourceSubscription.d.ts +3 -3
  483. package/hooks/useDataSourceSubscription.js +99 -109
  484. package/hooks/useDebounce.js +28 -56
  485. package/hooks/useDeviceVisibility.js +14 -23
  486. package/hooks/useHttp.d.ts +1 -0
  487. package/hooks/useHttp.js +314 -493
  488. package/libs/index.js +4 -13
  489. package/libs/prefab/index.js +6 -20
  490. package/mui-config/theme-provider.js +9 -17
  491. package/mui-config/theme.js +6 -9
  492. package/package-lock.json +837 -3195
  493. package/package.json +3 -19
  494. package/providers/AppProviders.js +21 -24
  495. package/runtime-dynamic/App.js +65 -93
  496. package/runtime-dynamic/app-initializer.js +207 -400
  497. package/runtime-dynamic/components/ErrorBoundary.js +59 -76
  498. package/runtime-dynamic/components/PageWrapper.js +23 -35
  499. package/runtime-dynamic/components/PrefabPreview.js +40 -69
  500. package/runtime-dynamic/components/partial-content.d.ts +2 -3
  501. package/runtime-dynamic/components/partial-content.js +66 -48
  502. package/runtime-dynamic/components/prefab-content.js +37 -30
  503. package/runtime-dynamic/components/use-dynamic-component.js +55 -157
  504. package/runtime-dynamic/factories/build-base-page-like-component.d.ts +1 -1
  505. package/runtime-dynamic/factories/build-base-page-like-component.js +44 -58
  506. package/runtime-dynamic/factories/dynamic-component.d.ts +9 -0
  507. package/runtime-dynamic/factories/dynamic-component.js +91 -0
  508. package/runtime-dynamic/factories/prefab-factory.d.ts +1 -1
  509. package/runtime-dynamic/factories/prefab-factory.js +60 -81
  510. package/runtime-dynamic/factories/startup-info.js +12 -25
  511. package/runtime-dynamic/factories/utils.d.ts +2 -10
  512. package/runtime-dynamic/factories/utils.js +47 -130
  513. package/runtime-dynamic/index.js +56 -191
  514. package/runtime-dynamic/main.js +42 -70
  515. package/runtime-dynamic/preview-mode.js +14 -29
  516. package/runtime-dynamic/preview-navigation.js +21 -30
  517. package/runtime-dynamic/preview-path.d.ts +5 -0
  518. package/runtime-dynamic/preview-path.js +13 -0
  519. package/runtime-dynamic/preview-resource-base.js +15 -31
  520. package/runtime-dynamic/registry/component-registry.js +269 -334
  521. package/runtime-dynamic/registry/custom-widget-registry.js +11 -15
  522. package/runtime-dynamic/registry/index.js +24 -63
  523. package/runtime-dynamic/registry/store.d.ts +1 -0
  524. package/runtime-dynamic/registry/store.js +18 -23
  525. package/runtime-dynamic/routes.js +53 -81
  526. package/runtime-dynamic/services/app-extension-provider.js +17 -44
  527. package/runtime-dynamic/services/autolayout-inject.d.ts +4 -0
  528. package/runtime-dynamic/services/autolayout-inject.js +27 -0
  529. package/runtime-dynamic/services/compile-render.d.ts +9 -0
  530. package/runtime-dynamic/services/compile-render.js +142 -0
  531. package/runtime-dynamic/services/component-ref-provider.d.ts +18 -3
  532. package/runtime-dynamic/services/component-ref-provider.js +52 -129
  533. package/runtime-dynamic/services/css-scoping.js +27 -28
  534. package/runtime-dynamic/services/fragment-url.js +37 -50
  535. package/runtime-dynamic/services/index.d.ts +2 -3
  536. package/runtime-dynamic/services/index.js +31 -152
  537. package/runtime-dynamic/services/markup-transpiler.d.ts +2 -2
  538. package/runtime-dynamic/services/markup-transpiler.js +39 -231
  539. package/runtime-dynamic/services/prefab-resources.js +42 -130
  540. package/runtime-dynamic/services/resource-manager.d.ts +2 -2
  541. package/runtime-dynamic/services/resource-manager.js +24 -65
  542. package/runtime-dynamic/services/script-executor.js +46 -63
  543. package/runtime-dynamic/services/variable-factory.js +141 -184
  544. package/runtime-dynamic/services/variable-registry.js +65 -115
  545. package/runtime-dynamic/services/variable-transpiler.js +73 -103
  546. package/runtime-dynamic/shims/next-image.js +79 -50
  547. package/runtime-dynamic/shims/next-link.js +58 -32
  548. package/runtime-dynamic/shims/next-navigation.js +17 -34
  549. package/runtime-dynamic/utils/index.d.ts +2 -0
  550. package/runtime-dynamic/utils/index.js +22 -24
  551. package/store/bindActions/i18nActions.js +16 -18
  552. package/store/index.js +29 -35
  553. package/store/middleware/navigationMiddleware.js +25 -45
  554. package/store/middleware/pendingTabNavigationIntentMiddleware.js +20 -25
  555. package/store/slices/appConfigSlice.js +65 -94
  556. package/store/slices/authSlice.js +317 -471
  557. package/store/slices/i18nSlice.js +169 -168
  558. package/store/slices/navigationSlice.js +22 -20
  559. package/store/util/resolve-path.d.ts +1 -0
  560. package/store/util/resolve-path.js +7 -0
  561. package/store/viewport.service.js +150 -194
  562. package/types/index.js +10 -15
  563. package/utils/attr.js +191 -41
  564. package/utils/custom-expression/index.js +58 -151
  565. package/utils/custom-expression/parser.js +108 -182
  566. package/utils/dataset-util.js +113 -154
  567. package/utils/eval-expression.js +10 -19
  568. package/utils/form-state.util.js +60 -118
  569. package/utils/form-utils.js +49 -190
  570. package/utils/format-util.js +113 -184
  571. package/utils/layoutsize-util.js +11 -17
  572. package/utils/lib-error-skipper.js +54 -52
  573. package/utils/page-params-util.js +50 -40
  574. package/utils/pending-tab-navigation-intent.js +7 -17
  575. package/utils/resource-url.js +8 -19
  576. package/utils/state-persistance.d.ts +1 -1
  577. package/utils/state-persistance.js +136 -253
  578. package/utils/style-utils.d.ts +2 -0
  579. package/utils/style-utils.js +25 -74
  580. package/utils/transformedDataset-utils.js +353 -381
  581. package/utils/widget-cleanup-util.js +42 -74
  582. package/utils/widgets.js +19 -31
  583. package/variables/base-variable.js +117 -166
  584. package/variables/constants.js +5 -8
  585. package/variables/crud-variable.js +150 -181
  586. package/variables/live-variable.d.ts +1 -1
  587. package/variables/live-variable.js +140 -174
  588. package/variables/metadata.service.js +74 -116
  589. package/variables/model-variable.js +68 -78
  590. package/variables/service-variable.js +171 -285
  591. package/wm-namespace.js +11 -14
  592. package/components/chart/src/css.d.js +0 -1
  593. package/runtime-dynamic/services/cache.d.ts +0 -29
  594. package/runtime-dynamic/services/cache.js +0 -57
  595. package/tsconfig.declaration.tsbuildinfo +0 -1
  596. package/types/global.d.js +0 -3
@@ -1,27 +1,25 @@
1
- "use strict";
2
-
3
- var _typeof = require("@babel/runtime/helpers/typeof");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.TableFilterRow = exports.GlobalSearchFilter = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _material = require("@mui/material");
10
- var _lodashEs = require("lodash-es");
11
- var _utils = require("@wavemaker-ai/react-runtime/components/data/utils");
12
- 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); }
13
- var __jsx = _react["default"].createElement;
14
- // Constants
15
- var ACTION_COLUMN_IDS = ["actions", "row-operations", "multiSelect", "radioSelect", "row-index"];
16
- var DEFAULT_MATCH_MODE = "anywhereignorecase";
17
- var DATA_TYPES = {
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { memo, useState, useEffect, useRef, useMemo, useCallback } from "react";
3
+ import { Box, Input, Menu } from "@mui/material";
4
+ import { filter, map, includes, get, isEmpty, defaultTo } from "lodash-es";
5
+ import {
6
+ getMatchModeTypesMap,
7
+ getMatchModeMsgs
8
+ } from "../../utils";
9
+ const ACTION_COLUMN_IDS = [
10
+ "actions",
11
+ "row-operations",
12
+ "multiSelect",
13
+ "radioSelect",
14
+ "row-index"
15
+ ];
16
+ const DEFAULT_MATCH_MODE = "anywhereignorecase";
17
+ const DATA_TYPES = {
18
18
  NUMBER: "number",
19
19
  DATE: "date",
20
20
  STRING: "string"
21
21
  };
22
-
23
- // Menu popup styles for Bootstrap dropdown compatibility
24
- var MENU_POPUP_STYLES = {
22
+ const MENU_POPUP_STYLES = {
25
23
  paper: {
26
24
  style: {
27
25
  zIndex: 1040,
@@ -31,32 +29,23 @@ var MENU_POPUP_STYLES = {
31
29
  }
32
30
  }
33
31
  };
34
- var MENU_LIST_STYLES = {
35
- style: {
36
- padding: 0
37
- }
32
+ const MENU_LIST_STYLES = {
33
+ style: { padding: 0 }
38
34
  };
39
-
40
- // Utility: Get data type from widget configuration
41
- var getDataType = function getDataType(widgetType, editInputType) {
42
- // Check edit input type first
35
+ const getDataType = (widgetType, editInputType) => {
43
36
  if (editInputType === DATA_TYPES.NUMBER) return DATA_TYPES.NUMBER;
44
- if ((0, _lodashEs.includes)(["date", "datetime-local", "time"], editInputType)) {
37
+ if (includes(["date", "datetime-local", "time"], editInputType)) {
45
38
  return DATA_TYPES.DATE;
46
39
  }
47
-
48
- // Check widget type
49
- if ((0, _lodashEs.includes)(["number", "currency", "integer"], widgetType)) {
40
+ if (includes(["number", "currency", "integer"], widgetType)) {
50
41
  return DATA_TYPES.NUMBER;
51
42
  }
52
- if ((0, _lodashEs.includes)(["date", "datetime", "time", "timestamp"], widgetType)) {
43
+ if (includes(["date", "datetime", "time", "timestamp"], widgetType)) {
53
44
  return DATA_TYPES.DATE;
54
45
  }
55
46
  return DATA_TYPES.STRING;
56
47
  };
57
-
58
- // Utility: Get input group CSS class based on data type
59
- var getInputGroupClass = function getInputGroupClass(dataType) {
48
+ const getInputGroupClass = (dataType) => {
60
49
  switch (dataType) {
61
50
  case DATA_TYPES.NUMBER:
62
51
  return "input-group number input-group-sm";
@@ -66,364 +55,376 @@ var getInputGroupClass = function getInputGroupClass(dataType) {
66
55
  return "input-group text input-group-sm";
67
56
  }
68
57
  };
69
-
70
- // Utility: Check if column should be filtered
71
- var isFilterableColumn = function isFilterableColumn(column) {
72
- var columnId = (0, _lodashEs.defaultTo)(column.id, column.accessorKey);
73
- var isActionColumn = (0, _lodashEs.includes)(ACTION_COLUMN_IDS, columnId) || column.isRowIndex;
74
- return !isActionColumn && column.enableColumnFilter !== false && !(0, _lodashEs.isEmpty)(column.accessorKey);
58
+ const isFilterableColumn = (column) => {
59
+ const columnId = defaultTo(column.id, column.accessorKey);
60
+ const isActionColumn = includes(ACTION_COLUMN_IDS, columnId) || column.isRowIndex;
61
+ return !isActionColumn && column.enableColumnFilter !== false && !isEmpty(column.accessorKey);
75
62
  };
76
-
77
- // Utility: Shallow comparison helper for memo
78
- var shallowEqual = function shallowEqual(prev, next, keys) {
79
- return keys.every(function (key) {
80
- return prev[key] === next[key];
81
- });
63
+ const shallowEqual = (prev, next, keys) => {
64
+ return keys.every((key) => prev[key] === next[key]);
82
65
  };
83
- var GlobalSearchFilter = exports.GlobalSearchFilter = /*#__PURE__*/(0, _react.memo)(function (_ref) {
84
- var value = _ref.value,
85
- onChange = _ref.onChange,
86
- selectedColumn = _ref.selectedColumn,
87
- onColumnChange = _ref.onColumnChange,
88
- columns = _ref.columns,
89
- _ref$searchLabel = _ref.searchLabel,
90
- searchLabel = _ref$searchLabel === void 0 ? "Search" : _ref$searchLabel,
91
- name = _ref.name,
92
- _ref$filteronkeypress = _ref.filteronkeypress,
93
- filteronkeypress = _ref$filteronkeypress === void 0 ? false : _ref$filteronkeypress,
94
- listener = _ref.listener;
95
- // Local state for input value
96
- var _useState = (0, _react.useState)(value),
97
- inputValue = _useState[0],
98
- setInputValue = _useState[1];
99
- // Local state for selected column to prevent immediate API calls
100
- var _useState2 = (0, _react.useState)(selectedColumn),
101
- localSelectedColumn = _useState2[0],
102
- setLocalSelectedColumn = _useState2[1];
103
-
104
- // Update local value when prop changes
105
- (0, _react.useEffect)(function () {
106
- setInputValue(value);
107
- }, [value]);
108
-
109
- // Update local column when prop changes
110
- (0, _react.useEffect)(function () {
111
- setLocalSelectedColumn(selectedColumn);
112
- }, [selectedColumn]);
113
- var clearLocalSearchControls = (0, _react.useCallback)(function () {
114
- setInputValue("");
115
- setLocalSelectedColumn("");
116
- }, []);
117
- (0, _react.useEffect)(function () {
118
- if (listener !== null && listener !== void 0 && listener.onChange && name) {
119
- listener.onChange(name, {
120
- clearFilter: clearLocalSearchControls
121
- });
122
- }
123
- }, [clearLocalSearchControls, name]);
124
-
125
- // Filter searchable columns - memoize to prevent recalculation
126
- var searchableColumns = (0, _react.useMemo)(function () {
127
- return (0, _lodashEs.filter)((0, _lodashEs.defaultTo)(columns, []), function (col) {
128
- return !(0, _lodashEs.isEmpty)(col === null || col === void 0 ? void 0 : col.accessorKey) && !(0, _lodashEs.includes)(ACTION_COLUMN_IDS, col === null || col === void 0 ? void 0 : col.id);
129
- });
130
- }, [columns]);
131
-
132
- // Apply filter with current column selection
133
- var applyFilter = (0, _react.useCallback)(function (value) {
134
- onChange(value);
135
- if (localSelectedColumn !== selectedColumn) {
136
- onColumnChange(localSelectedColumn);
137
- }
138
- }, [onChange, onColumnChange, localSelectedColumn, selectedColumn]);
139
- var handleColumnChange = (0, _react.useCallback)(function (e) {
140
- var newColumn = e.target.value;
141
- setLocalSelectedColumn(newColumn);
142
-
143
- // If filteronkeypress is true, apply filter immediately when column changes
144
- if (filteronkeypress && inputValue) {
145
- onColumnChange(newColumn);
146
- onChange(inputValue);
147
- }
148
- }, [filteronkeypress, inputValue, onColumnChange, onChange]);
149
- var handleSearch = (0, _react.useCallback)(function () {
150
- applyFilter(inputValue);
151
- }, [applyFilter, inputValue]);
152
- var handleInputChange = (0, _react.useCallback)(function (e) {
153
- var newValue = e.target.value;
154
- setInputValue(newValue);
155
-
156
- // If filteronkeypress is true, apply filter on every keystroke
157
- if (filteronkeypress) {
158
- applyFilter(newValue);
159
- }
160
- }, [filteronkeypress, applyFilter]);
161
- var handleKeyDown = (0, _react.useCallback)(function (e) {
162
- if (e.key === "Enter") {
163
- e.preventDefault();
164
- // Only trigger search manually if filteronkeypress is false
165
- if (!filteronkeypress) {
166
- handleSearch();
167
- }
168
- }
169
- }, [filteronkeypress, handleSearch]);
170
- return __jsx(_material.Box, {
171
- component: "form",
172
- className: "form-search form-inline",
173
- onSubmit: function onSubmit(e) {
174
- return e.preventDefault();
175
- }
176
- }, __jsx(_material.Box, {
177
- className: "form-group form-group-sm"
178
- }, __jsx(_material.Input, {
179
- type: "text",
180
- className: "form-control app-textbox",
181
- placeholder: searchLabel,
182
- value: inputValue,
183
- onChange: handleInputChange,
184
- onKeyDown: handleKeyDown,
185
- size: "small",
186
- sx: {
187
- "& input::placeholder": {
188
- color: "text.secondary",
189
- opacity: 0.7,
190
- fontWeight: "normal"
66
+ const GlobalSearchFilter = memo(
67
+ ({
68
+ value,
69
+ onChange,
70
+ selectedColumn,
71
+ onColumnChange,
72
+ columns,
73
+ searchLabel = "Search",
74
+ name,
75
+ filteronkeypress = false,
76
+ listener
77
+ }) => {
78
+ const [inputValue, setInputValue] = useState(value);
79
+ const [localSelectedColumn, setLocalSelectedColumn] = useState(selectedColumn);
80
+ useEffect(() => {
81
+ setInputValue(value);
82
+ }, [value]);
83
+ useEffect(() => {
84
+ setLocalSelectedColumn(selectedColumn);
85
+ }, [selectedColumn]);
86
+ const clearLocalSearchControls = useCallback(() => {
87
+ setInputValue("");
88
+ setLocalSelectedColumn("");
89
+ }, []);
90
+ useEffect(() => {
91
+ if ((listener == null ? void 0 : listener.onChange) && name) {
92
+ listener.onChange(name, { clearFilter: clearLocalSearchControls });
191
93
  }
192
- }
193
- })), __jsx(_material.Box, {
194
- className: "input-append input-group input-group-sm",
195
- component: "div"
196
- }, __jsx(_material.Box, {
197
- component: "select",
198
- name: "wm-datatable",
199
- "data-element": "dgFilterValue",
200
- className: "form-control app-select input-sm",
201
- value: localSelectedColumn,
202
- onChange: handleColumnChange
203
- }, __jsx("option", {
204
- value: "",
205
- className: "placeholder"
206
- }, "Select Field"), (0, _lodashEs.map)(searchableColumns, function (column, index) {
207
- return __jsx("option", {
208
- key: (0, _lodashEs.defaultTo)(column.id, column.accessorKey),
209
- value: column.accessorKey,
210
- "data-coldef-index": index
211
- }, column.header);
212
- })), __jsx(_material.Box, {
213
- component: "span",
214
- className: "input-group-addon"
215
- }, __jsx(_material.Box, {
216
- component: "button",
217
- type: "button",
218
- "data-element": "dgSearchButton",
219
- className: "app-search-button",
220
- title: searchLabel,
221
- onClick: handleSearch
222
- }, __jsx(_material.Box, {
223
- component: "i",
224
- className: "wi wi-search"
225
- })))));
226
- }, function (prevProps, nextProps) {
227
- return shallowEqual(prevProps, nextProps, ["value", "selectedColumn", "columns", "searchLabel", "name", "filteronkeypress", "onChange", "onColumnChange"]);
228
- });
94
+ }, [clearLocalSearchControls, name]);
95
+ const searchableColumns = useMemo(
96
+ () => filter(
97
+ defaultTo(columns, []),
98
+ (col) => !isEmpty(col == null ? void 0 : col.accessorKey) && !includes(ACTION_COLUMN_IDS, col == null ? void 0 : col.id)
99
+ ),
100
+ [columns]
101
+ );
102
+ const applyFilter = useCallback(
103
+ (value2) => {
104
+ onChange(value2);
105
+ if (localSelectedColumn !== selectedColumn) {
106
+ onColumnChange(localSelectedColumn);
107
+ }
108
+ },
109
+ [onChange, onColumnChange, localSelectedColumn, selectedColumn]
110
+ );
111
+ const handleColumnChange = useCallback(
112
+ (e) => {
113
+ const newColumn = e.target.value;
114
+ setLocalSelectedColumn(newColumn);
115
+ if (filteronkeypress && inputValue) {
116
+ onColumnChange(newColumn);
117
+ onChange(inputValue);
118
+ }
119
+ },
120
+ [filteronkeypress, inputValue, onColumnChange, onChange]
121
+ );
122
+ const handleSearch = useCallback(() => {
123
+ applyFilter(inputValue);
124
+ }, [applyFilter, inputValue]);
125
+ const handleInputChange = useCallback(
126
+ (e) => {
127
+ const newValue = e.target.value;
128
+ setInputValue(newValue);
129
+ if (filteronkeypress) {
130
+ applyFilter(newValue);
131
+ }
132
+ },
133
+ [filteronkeypress, applyFilter]
134
+ );
135
+ const handleKeyDown = useCallback(
136
+ (e) => {
137
+ if (e.key === "Enter") {
138
+ e.preventDefault();
139
+ if (!filteronkeypress) {
140
+ handleSearch();
141
+ }
142
+ }
143
+ },
144
+ [filteronkeypress, handleSearch]
145
+ );
146
+ return /* @__PURE__ */ jsxs(Box, { component: "form", className: "form-search form-inline", onSubmit: (e) => e.preventDefault(), children: [
147
+ /* @__PURE__ */ jsx(Box, { className: "form-group form-group-sm", children: /* @__PURE__ */ jsx(
148
+ Input,
149
+ {
150
+ type: "text",
151
+ className: "form-control app-textbox",
152
+ placeholder: searchLabel,
153
+ value: inputValue,
154
+ onChange: handleInputChange,
155
+ onKeyDown: handleKeyDown,
156
+ size: "small",
157
+ sx: {
158
+ "& input::placeholder": {
159
+ color: "text.secondary",
160
+ opacity: 0.7,
161
+ fontWeight: "normal"
162
+ }
163
+ }
164
+ }
165
+ ) }),
166
+ /* @__PURE__ */ jsxs(Box, { className: "input-append input-group input-group-sm", component: "div", children: [
167
+ /* @__PURE__ */ jsxs(
168
+ Box,
169
+ {
170
+ component: "select",
171
+ name: "wm-datatable",
172
+ "data-element": "dgFilterValue",
173
+ className: "form-control app-select input-sm",
174
+ value: localSelectedColumn,
175
+ onChange: handleColumnChange,
176
+ children: [
177
+ /* @__PURE__ */ jsx("option", { value: "", className: "placeholder", children: "Select Field" }),
178
+ map(searchableColumns, (column, index) => /* @__PURE__ */ jsx(
179
+ "option",
180
+ {
181
+ value: column.accessorKey,
182
+ "data-coldef-index": index,
183
+ children: column.header
184
+ },
185
+ defaultTo(column.id, column.accessorKey)
186
+ ))
187
+ ]
188
+ }
189
+ ),
190
+ /* @__PURE__ */ jsx(Box, { component: "span", className: "input-group-addon", children: /* @__PURE__ */ jsx(
191
+ Box,
192
+ {
193
+ component: "button",
194
+ type: "button",
195
+ "data-element": "dgSearchButton",
196
+ className: "app-search-button",
197
+ title: searchLabel,
198
+ onClick: handleSearch,
199
+ children: /* @__PURE__ */ jsx(Box, { component: "i", className: "wi wi-search" })
200
+ }
201
+ ) })
202
+ ] })
203
+ ] });
204
+ },
205
+ (prevProps, nextProps) => shallowEqual(prevProps, nextProps, [
206
+ "value",
207
+ "selectedColumn",
208
+ "columns",
209
+ "searchLabel",
210
+ "name",
211
+ "filteronkeypress",
212
+ "onChange",
213
+ "onColumnChange"
214
+ ])
215
+ );
229
216
  GlobalSearchFilter.displayName = "GlobalSearchFilter";
230
- // Component to handle individual column filter with local state
231
- var ColumnFilterCell = /*#__PURE__*/(0, _react.memo)(function (_ref2) {
232
- var columnId = _ref2.columnId,
233
- value = _ref2.value,
234
- onChange = _ref2.onChange,
235
- widgetType = _ref2.widgetType,
236
- columnMeta = _ref2.columnMeta,
237
- columnAccessorKey = _ref2.columnAccessorKey,
238
- listener = _ref2.listener,
239
- renderFormWidget = _ref2.renderFormWidget,
240
- onMatchModeChange = _ref2.onMatchModeChange;
241
- var _useState3 = (0, _react.useState)(value),
242
- localValue = _useState3[0],
243
- setLocalValue = _useState3[1];
244
- var _useState4 = (0, _react.useState)(null),
245
- anchorEl = _useState4[0],
246
- setAnchorEl = _useState4[1];
247
- var _useState5 = (0, _react.useState)(DEFAULT_MATCH_MODE),
248
- selectedMatchMode = _useState5[0],
249
- setSelectedMatchMode = _useState5[1];
250
- var filterButtonRef = (0, _react.useRef)(null);
251
-
252
- // Sync local value with prop changes
253
- (0, _react.useEffect)(function () {
254
- setLocalValue(value);
255
- }, [value]);
256
-
257
- // Memoize data type, match modes, and CSS classes
258
- var dataType = (0, _react.useMemo)(function () {
259
- return getDataType(widgetType, columnMeta.editinputtype);
260
- }, [widgetType, columnMeta.editinputtype]);
261
- var matchModes = (0, _react.useMemo)(function () {
262
- var matchModeMap = (0, _utils.getMatchModeTypesMap)();
263
- return (0, _lodashEs.get)(matchModeMap, dataType, (0, _lodashEs.get)(matchModeMap, "default", []));
264
- }, [dataType]);
265
- var matchModeMessages = (0, _react.useMemo)(function () {
266
- return (0, _utils.getMatchModeMsgs)(listener === null || listener === void 0 ? void 0 : listener.appLocale);
267
- }, [listener === null || listener === void 0 ? void 0 : listener.appLocale]);
268
- var inputGroupClass = (0, _react.useMemo)(function () {
269
- return getInputGroupClass(dataType);
270
- }, [dataType]);
271
-
272
- // Event handlers
273
- var handleApplyFilter = (0, _react.useCallback)(function (e) {
274
- var inputValue = (0, _lodashEs.defaultTo)(e.target.value, localValue);
275
- if (inputValue !== value) {
276
- onChange(columnId, inputValue, selectedMatchMode);
277
- }
278
- }, [localValue, value, columnId, selectedMatchMode, onChange]);
279
- var handleKeyDown = (0, _react.useCallback)(function (e) {
280
- if (e.key === "Enter") {
281
- e.preventDefault();
282
- handleApplyFilter(e);
283
- }
284
- e.stopPropagation();
285
- }, [handleApplyFilter]);
286
- var handleFilterIconClick = (0, _react.useCallback)(function (e) {
287
- e.stopPropagation();
288
- setAnchorEl(filterButtonRef.current);
289
- }, []);
290
- var handleClosePopover = (0, _react.useCallback)(function () {
291
- setAnchorEl(null);
292
- }, []);
293
- var handleMatchModeSelect = (0, _react.useCallback)(function (matchMode) {
294
- setSelectedMatchMode(matchMode);
295
- onMatchModeChange === null || onMatchModeChange === void 0 || onMatchModeChange(columnId, matchMode);
296
- if (localValue) {
297
- onChange(columnId, localValue, matchMode);
298
- }
299
- handleClosePopover();
300
- }, [columnId, localValue, onChange, onMatchModeChange, handleClosePopover]);
301
- var handleClearFilterIconClick = (0, _react.useCallback)(function () {
302
- onChange(columnId, "", selectedMatchMode);
303
- setLocalValue("");
304
- }, [columnId, selectedMatchMode, onChange]);
305
- var handleLocalValueChange = (0, _react.useCallback)(function (value) {
306
- setLocalValue(value);
307
- }, []);
308
- return __jsx("div", {
309
- "data-col-identifier": columnAccessorKey,
310
- className: inputGroupClass
311
- }, __jsx(_material.Box, {
312
- component: "div",
313
- tabIndex: 0,
314
- onBlur: handleApplyFilter,
315
- onKeyDown: handleKeyDown,
316
- onClick: function onClick(e) {
317
- return e.stopPropagation();
318
- }
319
- }, renderFormWidget(columnId, widgetType, localValue, handleLocalValueChange, {
320
- placeholder: "",
321
- sessionKey: "filter_".concat(columnId),
322
- column: columnMeta
323
- })), __jsx("span", {
324
- className: "input-group-addon filter-clear-icon"
325
- }, __jsx(_material.Box, {
326
- hidden: (0, _lodashEs.isEmpty)(localValue),
327
- component: "button",
328
- type: "button",
329
- className: "btn-transparent btn app-button",
330
- "aria-haspopup": "true",
331
- "aria-expanded": Boolean(anchorEl),
332
- onClick: handleClearFilterIconClick
333
- }, __jsx("i", {
334
- className: "app-icon wi wi-clear"
335
- }))), __jsx(_material.Box, {
336
- component: "span",
337
- className: "input-group-addon"
338
- }, __jsx(_material.Box, {
339
- ref: filterButtonRef,
340
- component: "button",
341
- type: "button",
342
- className: "btn-transparent btn app-button",
343
- "aria-haspopup": "true",
344
- "aria-expanded": Boolean(anchorEl),
345
- onClick: handleFilterIconClick
346
- }, __jsx(_material.Box, {
347
- component: "i",
348
- className: "app-icon wi wi-filter-list"
349
- })), __jsx(_material.Menu, {
350
- anchorEl: anchorEl,
351
- open: Boolean(anchorEl),
352
- onClose: handleClosePopover,
353
- anchorOrigin: {
354
- vertical: "bottom",
355
- horizontal: "right"
356
- },
357
- transformOrigin: {
358
- vertical: "top",
359
- horizontal: "right"
360
- },
361
- slotProps: MENU_POPUP_STYLES,
362
- MenuListProps: MENU_LIST_STYLES
363
- }, __jsx(_material.Box, {
364
- className: "dropdown open show"
365
- }, __jsx(_material.Box, {
366
- component: "ul",
367
- className: "matchmode-dropdown dropdown-menu"
368
- }, (0, _lodashEs.map)(matchModes, function (mode) {
369
- return __jsx(_material.Box, {
370
- key: mode,
371
- component: "li",
372
- className: selectedMatchMode === mode ? "active" : ""
373
- }, __jsx(_material.Box, {
374
- component: "a",
375
- href: "javascript:void(0);",
376
- onClick: function onClick() {
377
- return handleMatchModeSelect(mode);
217
+ const ColumnFilterCell = memo(
218
+ ({
219
+ columnId,
220
+ value,
221
+ onChange,
222
+ widgetType,
223
+ columnMeta,
224
+ columnAccessorKey,
225
+ listener,
226
+ renderFormWidget,
227
+ onMatchModeChange
228
+ }) => {
229
+ const [localValue, setLocalValue] = useState(value);
230
+ const [anchorEl, setAnchorEl] = useState(null);
231
+ const [selectedMatchMode, setSelectedMatchMode] = useState(DEFAULT_MATCH_MODE);
232
+ const filterButtonRef = useRef(null);
233
+ useEffect(() => {
234
+ setLocalValue(value);
235
+ }, [value]);
236
+ const dataType = useMemo(
237
+ () => getDataType(widgetType, columnMeta.editinputtype),
238
+ [widgetType, columnMeta.editinputtype]
239
+ );
240
+ const matchModes = useMemo(() => {
241
+ const matchModeMap = getMatchModeTypesMap();
242
+ return get(matchModeMap, dataType, get(matchModeMap, "default", []));
243
+ }, [dataType]);
244
+ const matchModeMessages = useMemo(
245
+ () => getMatchModeMsgs(listener == null ? void 0 : listener.appLocale),
246
+ [listener == null ? void 0 : listener.appLocale]
247
+ );
248
+ const inputGroupClass = useMemo(() => getInputGroupClass(dataType), [dataType]);
249
+ const handleApplyFilter = useCallback(
250
+ (e) => {
251
+ const inputValue = defaultTo(e.target.value, localValue);
252
+ if (inputValue !== value) {
253
+ onChange(columnId, inputValue, selectedMatchMode);
254
+ }
378
255
  },
379
- sx: {
380
- cursor: "pointer",
381
- textDecoration: "none"
382
- }
383
- }, (0, _lodashEs.get)(matchModeMessages, mode, mode)));
384
- }))))));
385
- }, function (prevProps, nextProps) {
386
- return shallowEqual(prevProps, nextProps, ["columnId", "value", "widgetType", "columnMeta", "columnAccessorKey", "onChange", "renderFormWidget", "onMatchModeChange"]);
387
- });
256
+ [localValue, value, columnId, selectedMatchMode, onChange]
257
+ );
258
+ const handleKeyDown = useCallback(
259
+ (e) => {
260
+ if (e.key === "Enter") {
261
+ e.preventDefault();
262
+ handleApplyFilter(e);
263
+ }
264
+ e.stopPropagation();
265
+ },
266
+ [handleApplyFilter]
267
+ );
268
+ const handleFilterIconClick = useCallback((e) => {
269
+ e.stopPropagation();
270
+ setAnchorEl(filterButtonRef.current);
271
+ }, []);
272
+ const handleClosePopover = useCallback(() => {
273
+ setAnchorEl(null);
274
+ }, []);
275
+ const handleMatchModeSelect = useCallback(
276
+ (matchMode) => {
277
+ setSelectedMatchMode(matchMode);
278
+ onMatchModeChange == null ? void 0 : onMatchModeChange(columnId, matchMode);
279
+ if (localValue) {
280
+ onChange(columnId, localValue, matchMode);
281
+ }
282
+ handleClosePopover();
283
+ },
284
+ [columnId, localValue, onChange, onMatchModeChange, handleClosePopover]
285
+ );
286
+ const handleClearFilterIconClick = useCallback(() => {
287
+ onChange(columnId, "", selectedMatchMode);
288
+ setLocalValue("");
289
+ }, [columnId, selectedMatchMode, onChange]);
290
+ const handleLocalValueChange = useCallback((value2) => {
291
+ setLocalValue(value2);
292
+ }, []);
293
+ return /* @__PURE__ */ jsxs("div", { "data-col-identifier": columnAccessorKey, className: inputGroupClass, children: [
294
+ /* @__PURE__ */ jsx(
295
+ Box,
296
+ {
297
+ component: "div",
298
+ tabIndex: 0,
299
+ onBlur: handleApplyFilter,
300
+ onKeyDown: handleKeyDown,
301
+ onClick: (e) => e.stopPropagation(),
302
+ children: renderFormWidget(columnId, widgetType, localValue, handleLocalValueChange, {
303
+ placeholder: "",
304
+ sessionKey: `filter_${columnId}`,
305
+ column: columnMeta
306
+ })
307
+ }
308
+ ),
309
+ /* @__PURE__ */ jsx("span", { className: "input-group-addon filter-clear-icon", children: /* @__PURE__ */ jsx(
310
+ Box,
311
+ {
312
+ hidden: isEmpty(localValue),
313
+ component: "button",
314
+ type: "button",
315
+ className: "btn-transparent btn app-button",
316
+ "aria-haspopup": "true",
317
+ "aria-expanded": Boolean(anchorEl),
318
+ onClick: handleClearFilterIconClick,
319
+ children: /* @__PURE__ */ jsx("i", { className: "app-icon wi wi-clear" })
320
+ }
321
+ ) }),
322
+ /* @__PURE__ */ jsxs(Box, { component: "span", className: "input-group-addon", children: [
323
+ /* @__PURE__ */ jsx(
324
+ Box,
325
+ {
326
+ ref: filterButtonRef,
327
+ component: "button",
328
+ type: "button",
329
+ className: "btn-transparent btn app-button",
330
+ "aria-haspopup": "true",
331
+ "aria-expanded": Boolean(anchorEl),
332
+ onClick: handleFilterIconClick,
333
+ children: /* @__PURE__ */ jsx(Box, { component: "i", className: "app-icon wi wi-filter-list" })
334
+ }
335
+ ),
336
+ /* @__PURE__ */ jsx(
337
+ Menu,
338
+ {
339
+ anchorEl,
340
+ open: Boolean(anchorEl),
341
+ onClose: handleClosePopover,
342
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
343
+ transformOrigin: { vertical: "top", horizontal: "right" },
344
+ slotProps: MENU_POPUP_STYLES,
345
+ MenuListProps: MENU_LIST_STYLES,
346
+ children: /* @__PURE__ */ jsx(Box, { className: "dropdown open show", children: /* @__PURE__ */ jsx(Box, { component: "ul", className: "matchmode-dropdown dropdown-menu", children: map(matchModes, (mode) => /* @__PURE__ */ jsx(
347
+ Box,
348
+ {
349
+ component: "li",
350
+ className: selectedMatchMode === mode ? "active" : "",
351
+ children: /* @__PURE__ */ jsx(
352
+ Box,
353
+ {
354
+ component: "a",
355
+ href: "javascript:void(0);",
356
+ onClick: () => handleMatchModeSelect(mode),
357
+ sx: { cursor: "pointer", textDecoration: "none" },
358
+ children: get(matchModeMessages, mode, mode)
359
+ }
360
+ )
361
+ },
362
+ mode
363
+ )) }) })
364
+ }
365
+ )
366
+ ] })
367
+ ] });
368
+ },
369
+ (prevProps, nextProps) => shallowEqual(prevProps, nextProps, [
370
+ "columnId",
371
+ "value",
372
+ "widgetType",
373
+ "columnMeta",
374
+ "columnAccessorKey",
375
+ "onChange",
376
+ "renderFormWidget",
377
+ "onMatchModeChange"
378
+ ])
379
+ );
388
380
  ColumnFilterCell.displayName = "ColumnFilterCell";
389
- var TableFilterRow = exports.TableFilterRow = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
390
- var columns = _ref3.columns,
391
- columnFilters = _ref3.columnFilters,
392
- onColumnFilterChange = _ref3.onColumnFilterChange,
393
- filterMode = _ref3.filterMode,
394
- renderFormWidget = _ref3.renderFormWidget,
395
- listener = _ref3.listener;
396
- if (filterMode !== "multicolumn") {
397
- return null;
398
- }
399
- return __jsx("tr", {
400
- className: "table-filter-row"
401
- }, (0, _lodashEs.map)(columns, function (column, index) {
402
- var columnId = (0, _lodashEs.defaultTo)(column.id, column.accessorKey);
403
-
404
- // Skip non-filterable columns
405
- if (!isFilterableColumn(column)) {
406
- return __jsx("th", {
407
- key: columnId
408
- });
381
+ const TableFilterRow = memo(
382
+ ({
383
+ columns,
384
+ columnFilters,
385
+ onColumnFilterChange,
386
+ filterMode,
387
+ renderFormWidget,
388
+ listener
389
+ }) => {
390
+ if (filterMode !== "multicolumn") {
391
+ return null;
409
392
  }
410
- var columnMeta = (0, _lodashEs.defaultTo)(column.meta, {});
411
- var widgetType = (0, _lodashEs.defaultTo)(columnMeta.editWidgetType, (0, _lodashEs.defaultTo)(columnMeta.widgetType, "text"));
412
- return __jsx("th", {
413
- key: columnId,
414
- "data-col-id": index + 1
415
- }, __jsx(ColumnFilterCell, {
416
- columnId: columnId,
417
- value: (0, _lodashEs.get)(columnFilters, [columnId, "value"], ""),
418
- onChange: onColumnFilterChange,
419
- widgetType: widgetType,
420
- columnMeta: columnMeta,
421
- columnAccessorKey: column.accessorKey,
422
- renderFormWidget: renderFormWidget,
423
- listener: listener
424
- }));
425
- }));
426
- }, function (prevProps, nextProps) {
427
- return shallowEqual(prevProps, nextProps, ["columns", "columnFilters", "filterMode", "onColumnFilterChange", "renderFormWidget"]);
428
- });
429
- TableFilterRow.displayName = "TableFilterRow";
393
+ return /* @__PURE__ */ jsx("tr", { className: "table-filter-row", children: map(columns, (column, index) => {
394
+ const columnId = defaultTo(column.id, column.accessorKey);
395
+ if (!isFilterableColumn(column)) {
396
+ return /* @__PURE__ */ jsx("th", {}, columnId);
397
+ }
398
+ const columnMeta = defaultTo(column.meta, {});
399
+ const widgetType = defaultTo(
400
+ columnMeta.editWidgetType,
401
+ defaultTo(columnMeta.widgetType, "text")
402
+ );
403
+ return /* @__PURE__ */ jsx("th", { "data-col-id": index + 1, children: /* @__PURE__ */ jsx(
404
+ ColumnFilterCell,
405
+ {
406
+ columnId,
407
+ value: get(columnFilters, [columnId, "value"], ""),
408
+ onChange: onColumnFilterChange,
409
+ widgetType,
410
+ columnMeta,
411
+ columnAccessorKey: column.accessorKey,
412
+ renderFormWidget,
413
+ listener
414
+ }
415
+ ) }, columnId);
416
+ }) });
417
+ },
418
+ (prevProps, nextProps) => shallowEqual(prevProps, nextProps, [
419
+ "columns",
420
+ "columnFilters",
421
+ "filterMode",
422
+ "onColumnFilterChange",
423
+ "renderFormWidget"
424
+ ])
425
+ );
426
+ TableFilterRow.displayName = "TableFilterRow";
427
+ export {
428
+ GlobalSearchFilter,
429
+ TableFilterRow
430
+ };