@wavemaker-ai/react-runtime 1.0.0-rc.312 → 1.0.0-rc.317

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 (593) 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 +210 -155
  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.js +92 -98
  461. package/core/util/safe-is-equal.js +42 -94
  462. package/core/util/security.js +114 -153
  463. package/core/util/utils.d.ts +4 -1
  464. package/core/util/utils.js +88 -159
  465. package/core/widget-observer.js +34 -61
  466. package/higherOrder/BaseApp.js +328 -502
  467. package/higherOrder/BaseAppProps.d.ts +1 -0
  468. package/higherOrder/BaseAppProps.js +0 -5
  469. package/higherOrder/BaseDateTime.js +277 -231
  470. package/higherOrder/BasePage.js +474 -740
  471. package/higherOrder/BasePartial.js +87 -114
  472. package/higherOrder/BasePrefab.js +190 -206
  473. package/higherOrder/DataNav.js +287 -302
  474. package/higherOrder/helper.js +62 -48
  475. package/higherOrder/props.js +0 -5
  476. package/higherOrder/withBaseWrapper.js +123 -168
  477. package/higherOrder/withStandalone.js +28 -26
  478. package/hooks/useAccess.js +113 -289
  479. package/hooks/useAppConfig.js +15 -40
  480. package/hooks/useAuth.js +256 -495
  481. package/hooks/useDataSourceSubscription.d.ts +3 -3
  482. package/hooks/useDataSourceSubscription.js +99 -109
  483. package/hooks/useDebounce.js +28 -56
  484. package/hooks/useDeviceVisibility.js +14 -23
  485. package/hooks/useHttp.d.ts +1 -0
  486. package/hooks/useHttp.js +314 -493
  487. package/libs/index.js +4 -13
  488. package/libs/prefab/index.js +6 -20
  489. package/mui-config/theme-provider.js +9 -17
  490. package/mui-config/theme.js +6 -9
  491. package/package-lock.json +816 -3207
  492. package/package.json +3 -19
  493. package/providers/AppProviders.js +21 -24
  494. package/runtime-dynamic/App.js +65 -93
  495. package/runtime-dynamic/app-initializer.js +193 -411
  496. package/runtime-dynamic/components/ErrorBoundary.js +59 -76
  497. package/runtime-dynamic/components/PageWrapper.js +23 -35
  498. package/runtime-dynamic/components/PrefabPreview.js +40 -69
  499. package/runtime-dynamic/components/partial-content.d.ts +2 -3
  500. package/runtime-dynamic/components/partial-content.js +66 -45
  501. package/runtime-dynamic/components/prefab-content.js +37 -30
  502. package/runtime-dynamic/components/use-dynamic-component.js +55 -157
  503. package/runtime-dynamic/factories/build-base-page-like-component.d.ts +1 -1
  504. package/runtime-dynamic/factories/build-base-page-like-component.js +44 -58
  505. package/runtime-dynamic/factories/dynamic-component.d.ts +9 -0
  506. package/runtime-dynamic/factories/dynamic-component.js +91 -0
  507. package/runtime-dynamic/factories/prefab-factory.d.ts +1 -1
  508. package/runtime-dynamic/factories/prefab-factory.js +60 -81
  509. package/runtime-dynamic/factories/startup-info.js +12 -25
  510. package/runtime-dynamic/factories/utils.d.ts +2 -10
  511. package/runtime-dynamic/factories/utils.js +47 -129
  512. package/runtime-dynamic/index.js +56 -191
  513. package/runtime-dynamic/main.js +42 -70
  514. package/runtime-dynamic/preview-mode.js +14 -29
  515. package/runtime-dynamic/preview-navigation.js +21 -30
  516. package/runtime-dynamic/preview-path.d.ts +5 -0
  517. package/runtime-dynamic/preview-path.js +13 -0
  518. package/runtime-dynamic/preview-resource-base.js +15 -31
  519. package/runtime-dynamic/registry/component-registry.js +269 -334
  520. package/runtime-dynamic/registry/custom-widget-registry.js +11 -15
  521. package/runtime-dynamic/registry/index.js +24 -63
  522. package/runtime-dynamic/registry/store.d.ts +1 -0
  523. package/runtime-dynamic/registry/store.js +18 -23
  524. package/runtime-dynamic/routes.js +53 -81
  525. package/runtime-dynamic/services/app-extension-provider.js +17 -44
  526. package/runtime-dynamic/services/autolayout-inject.d.ts +4 -0
  527. package/runtime-dynamic/services/autolayout-inject.js +27 -0
  528. package/runtime-dynamic/services/compile-render.d.ts +9 -0
  529. package/runtime-dynamic/services/compile-render.js +142 -0
  530. package/runtime-dynamic/services/component-ref-provider.d.ts +18 -3
  531. package/runtime-dynamic/services/component-ref-provider.js +52 -129
  532. package/runtime-dynamic/services/css-scoping.js +23 -28
  533. package/runtime-dynamic/services/fragment-url.js +37 -50
  534. package/runtime-dynamic/services/index.d.ts +2 -3
  535. package/runtime-dynamic/services/index.js +31 -152
  536. package/runtime-dynamic/services/markup-transpiler.d.ts +2 -2
  537. package/runtime-dynamic/services/markup-transpiler.js +39 -231
  538. package/runtime-dynamic/services/prefab-resources.js +40 -118
  539. package/runtime-dynamic/services/resource-manager.d.ts +2 -2
  540. package/runtime-dynamic/services/resource-manager.js +24 -65
  541. package/runtime-dynamic/services/script-executor.js +46 -63
  542. package/runtime-dynamic/services/variable-factory.js +141 -184
  543. package/runtime-dynamic/services/variable-registry.js +65 -115
  544. package/runtime-dynamic/services/variable-transpiler.js +73 -103
  545. package/runtime-dynamic/shims/next-image.js +79 -50
  546. package/runtime-dynamic/shims/next-link.js +58 -32
  547. package/runtime-dynamic/shims/next-navigation.js +17 -34
  548. package/runtime-dynamic/utils/index.js +15 -30
  549. package/store/bindActions/i18nActions.js +16 -18
  550. package/store/index.js +29 -35
  551. package/store/middleware/navigationMiddleware.js +25 -45
  552. package/store/middleware/pendingTabNavigationIntentMiddleware.js +20 -25
  553. package/store/slices/appConfigSlice.js +65 -94
  554. package/store/slices/authSlice.js +317 -471
  555. package/store/slices/i18nSlice.js +169 -168
  556. package/store/slices/navigationSlice.js +22 -20
  557. package/store/util/resolve-path.d.ts +1 -0
  558. package/store/util/resolve-path.js +7 -0
  559. package/store/viewport.service.js +150 -194
  560. package/types/index.js +10 -15
  561. package/utils/attr.js +191 -41
  562. package/utils/custom-expression/index.js +58 -151
  563. package/utils/custom-expression/parser.js +108 -182
  564. package/utils/dataset-util.js +113 -154
  565. package/utils/eval-expression.js +10 -19
  566. package/utils/form-state.util.js +60 -118
  567. package/utils/form-utils.js +49 -190
  568. package/utils/format-util.js +113 -184
  569. package/utils/layoutsize-util.js +11 -17
  570. package/utils/lib-error-skipper.js +54 -52
  571. package/utils/page-params-util.js +50 -40
  572. package/utils/pending-tab-navigation-intent.js +7 -17
  573. package/utils/resource-url.js +8 -19
  574. package/utils/state-persistance.d.ts +1 -1
  575. package/utils/state-persistance.js +136 -253
  576. package/utils/style-utils.js +24 -78
  577. package/utils/transformedDataset-utils.js +353 -381
  578. package/utils/widget-cleanup-util.js +42 -74
  579. package/utils/widgets.js +19 -31
  580. package/variables/base-variable.js +117 -166
  581. package/variables/constants.js +5 -8
  582. package/variables/crud-variable.js +150 -181
  583. package/variables/live-variable.d.ts +1 -1
  584. package/variables/live-variable.js +140 -174
  585. package/variables/metadata.service.js +74 -116
  586. package/variables/model-variable.js +68 -78
  587. package/variables/service-variable.js +171 -285
  588. package/wm-namespace.js +11 -14
  589. package/components/chart/src/css.d.js +0 -1
  590. package/runtime-dynamic/services/cache.d.ts +0 -29
  591. package/runtime-dynamic/services/cache.js +0 -57
  592. package/tsconfig.declaration.tsbuildinfo +0 -1
  593. package/types/global.d.js +0 -3
@@ -1,583 +1,676 @@
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.WmChips = void 0;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
- var _react = _interopRequireWildcard(require("react"));
15
- var _material = require("@mui/material");
16
- var _core = require("@dnd-kit/core");
17
- var _sortable = require("@dnd-kit/sortable");
18
- var _modifiers = require("@dnd-kit/modifiers");
19
- var _clsx = _interopRequireDefault(require("clsx"));
20
- var _lodash = require("lodash");
21
- var _search = require("@wavemaker-ai/react-runtime/components/basic/search");
22
- var _withBaseWrapper = require("@wavemaker-ai/react-runtime/higherOrder/withBaseWrapper");
23
- var _SortableChip = _interopRequireDefault(require("./SortableChip"));
24
- var _utils = require("./utils");
25
- var _withFormController = _interopRequireDefault(require("@wavemaker-ai/react-runtime/components/data/form/form-controller/withFormController"));
26
- var _constants = require("@wavemaker-ai/react-runtime/components/constants");
27
- var _withStandalone = _interopRequireDefault(require("@wavemaker-ai/react-runtime/higherOrder/withStandalone"));
28
- 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); }
29
- var __jsx = _react["default"].createElement;
30
- 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; }
31
- 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; }
32
- var DEFAULT_CLASS = "app-chips nav nav-pills list-inline";
33
- var WmChips = /*#__PURE__*/_react["default"].memo(function (props) {
34
- var _props$hidden;
35
- var _props$allowonlyselec = props.allowonlyselect,
36
- allowonlyselect = _props$allowonlyselec === void 0 ? false : _props$allowonlyselec,
37
- _props$autofocus = props.autofocus,
38
- autofocus = _props$autofocus === void 0 ? false : _props$autofocus,
39
- _props$chipclass = props.chipclass,
40
- chipclass = _props$chipclass === void 0 ? "" : _props$chipclass,
41
- _props$className = props.className,
42
- className = _props$className === void 0 ? "" : _props$className,
43
- _props$datafield = props.datafield,
44
- datafield = _props$datafield === void 0 ? "All Fields" : _props$datafield,
45
- _props$dataset = props.dataset,
46
- dataset = _props$dataset === void 0 ? _constants.DEFAULT_CHIPS_DATASET : _props$dataset,
47
- datavalue = props.datavalue,
48
- dateformat = props.dateformat,
49
- _props$disabled = props.disabled,
50
- disabled = _props$disabled === void 0 ? false : _props$disabled,
51
- displayexpression = props.displayexpression,
52
- displayfield = props.displayfield,
53
- displayimagesrc = props.displayimagesrc,
54
- _props$enablereorder = props.enablereorder,
55
- enablereorder = _props$enablereorder === void 0 ? false : _props$enablereorder,
56
- groupby = props.groupby,
57
- _props$inputposition = props.inputposition,
58
- inputposition = _props$inputposition === void 0 ? "last" : _props$inputposition,
59
- _props$inputwidth = props.inputwidth,
60
- inputwidth = _props$inputwidth === void 0 ? "default" : _props$inputwidth,
61
- limit = props.limit,
62
- match = props.match,
63
- _props$matchmode = props.matchmode,
64
- matchmode = _props$matchmode === void 0 ? "contains" : _props$matchmode,
65
- maxsize = props.maxsize,
66
- _props$minchars = props.minchars,
67
- minchars = _props$minchars === void 0 ? 1 : _props$minchars,
68
- name = props.name,
69
- orderby = props.orderby,
70
- _props$placeholder = props.placeholder,
71
- placeholder = _props$placeholder === void 0 ? "Type here.." : _props$placeholder,
72
- _props$readonly = props.readonly,
73
- readonly = _props$readonly === void 0 ? false : _props$readonly,
74
- searchkey = props.searchkey,
75
- _props$showsearchicon = props.showsearchicon,
76
- showsearchicon = _props$showsearchicon === void 0 ? false : _props$showsearchicon,
77
- _props$tabindex = props.tabindex,
78
- tabindex = _props$tabindex === void 0 ? 0 : _props$tabindex,
79
- _props$type = props.type,
80
- type = _props$type === void 0 ? "search" : _props$type,
81
- _props$debouncetime = props.debouncetime,
82
- debouncetime = _props$debouncetime === void 0 ? 250 : _props$debouncetime,
83
- _props$datacompletems = props.datacompletemsg,
84
- datacompletemsg = _props$datacompletems === void 0 ? "No more data to load" : _props$datacompletems,
85
- width = props.width,
86
- height = props.height,
87
- _props$styles = props.styles,
88
- styles = _props$styles === void 0 ? {} : _props$styles,
89
- listener = props.listener,
90
- onAdd = props.onAdd,
91
- onBeforeadd = props.onBeforeadd,
92
- onBeforeremove = props.onBeforeremove,
93
- onBeforereorder = props.onBeforereorder,
94
- onBeforeservicecall = props.onBeforeservicecall,
95
- onChipclick = props.onChipclick,
96
- onChipselect = props.onChipselect,
97
- onChange = props.onChange,
98
- onRemove = props.onRemove,
99
- onReorder = props.onReorder,
100
- dataPath = props.dataPath,
101
- _props$standalone = props.standalone,
102
- standalone = _props$standalone === void 0 ? false : _props$standalone;
103
-
104
- // State management
105
- var _useState = (0, _react.useState)([]),
106
- chipsList = _useState[0],
107
- setChipsList = _useState[1];
108
- var _useState2 = (0, _react.useState)(false),
109
- saturate = _useState2[0],
110
- setSaturate = _useState2[1];
111
- var _useState3 = (0, _react.useState)(""),
112
- searchQuery = _useState3[0],
113
- setSearchQuery = _useState3[1];
114
- var _useState4 = (0, _react.useState)([]),
115
- modelByValue = _useState4[0],
116
- setModelByValue = _useState4[1];
117
- var _useState5 = (0, _react.useState)([]),
118
- datasetItems = _useState5[0],
119
- setDatasetItems = _useState5[1];
120
- var _useState6 = (0, _react.useState)(0),
121
- uniqueKeyCounter = _useState6[0],
122
- setUniqueKeyCounter = _useState6[1];
123
- var _useState7 = (0, _react.useState)(false),
124
- isInitialized = _useState7[0],
125
- setIsInitialized = _useState7[1];
126
- var backspaceArmedRef = (0, _react.useRef)(false);
127
-
128
- // Computed values
129
- var maxSizeReached = "Max size reached";
130
- var isFullWidth = inputwidth === "full";
131
-
132
- // Generate stable unique key that doesn't change on re-renders
133
- var generateStableKeyCb = (0, _react.useCallback)(function (item, index) {
134
- return (0, _utils.generateStableKey)(item, index, datafield);
135
- }, [datafield]);
136
-
137
- // Generate unique key for new chips (only when adding new items)
138
- var generateUniqueKey = (0, _react.useCallback)(function () {
139
- var key = "chip_new_".concat(uniqueKeyCounter);
140
- setUniqueKeyCounter(function (prev) {
141
- return prev + 1;
142
- });
143
- return key;
144
- }, [uniqueKeyCounter]);
145
- var processDatasetCb = (0, _react.useCallback)(function (data) {
146
- return (0, _utils.processDataset)(data, displayfield || "label", displayexpression, displayimagesrc, datafield, generateStableKeyCb);
147
- }, [displayfield, displayexpression, displayimagesrc, datafield, generateStableKeyCb]);
148
-
149
- /** Standalone: `dataset` may be a function; evaluate once for chip model + inner WmSearch. */
150
- var datasetForSearchAndChips = (0, _react.useMemo)(function () {
151
- if (typeof dataset === "function") {
152
- try {
153
- var _ref;
154
- return (_ref = dataset()) !== null && _ref !== void 0 ? _ref : [];
155
- } catch (_unused) {
156
- return [];
157
- }
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
158
16
  }
159
- return dataset;
160
- }, [standalone, dataset]);
161
- (0, _react.useEffect)(function () {
162
- var items = processDatasetCb(datasetForSearchAndChips);
163
- setDatasetItems(items);
164
- setIsInitialized(true);
165
- }, [datasetForSearchAndChips, processDatasetCb]);
166
- var createCustomDataModel = (0, _react.useCallback)(function (val) {
167
- var fieldKey = displayfield || "label";
168
- var customObj = {};
169
- customObj[fieldKey] = val;
170
- customObj._uniqueKey = generateUniqueKey();
171
- return customObj;
172
- }, [displayfield, generateUniqueKey]);
173
- var updateMaxSize = (0, _react.useCallback)(function (currentLength) {
174
- var length = currentLength !== undefined ? currentLength : chipsList.length;
175
- setSaturate((maxsize || 0) > 0 && length === maxsize);
176
- }, [maxsize, chipsList.length]);
177
- var updateQueryModel = (0, _react.useCallback)(/*#__PURE__*/function () {
178
- var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(data) {
179
- var dataValue, newChipsList, searchQuery;
180
- return _regenerator["default"].wrap(function _callee$(_context) {
181
- while (1) switch (_context.prev = _context.next) {
182
- case 0:
183
- if (!(!data || !isInitialized)) {
184
- _context.next = 4;
185
- break;
186
- }
187
- setChipsList([]);
188
- setModelByValue([]);
189
- return _context.abrupt("return");
190
- case 4:
191
- if (typeof data === "string") {
192
- dataValue = data.split(",");
193
- } else if (Array.isArray(data)) {
194
- dataValue = (0, _toConsumableArray2["default"])(data);
195
- } else {
196
- dataValue = [data];
197
- }
198
- setChipsList([]);
199
- if (maxsize && dataValue.length > maxsize) {
200
- dataValue = (0, _lodash.slice)(dataValue, 0, maxsize);
201
- }
202
- newChipsList = [];
203
- searchQuery = [];
204
- dataValue.forEach(function (val, i) {
205
- var itemFound = (0, _lodash.find)(datasetItems, function (item) {
206
- var value_obj = val.dataObject ? val.dataObject : val;
207
- return (0, _lodash.isEqual)(item.value, value_obj);
208
- });
209
- if (itemFound) {
210
- newChipsList.push(_objectSpread(_objectSpread({}, itemFound), {}, {
211
- key: generateStableKeyCb(itemFound.value, i),
212
- // Use stable key for dataset items
213
- active: false,
214
- isDuplicate: false,
215
- imgSrc: itemFound.displayImage,
216
- iscustom: false
217
- }));
218
- } else if (datafield === "All Fields") {
219
- var dataObj = val;
220
- var isCustom = false;
221
- if (!(0, _lodash.isEqual)(val, dataObj)) {
222
- dataObj = createCustomDataModel(val);
223
- isCustom = true;
224
- if (dataObj) {
225
- dataValue[i] = dataObj;
226
- }
227
- }
228
- var finalDataObj = dataObj || val;
229
- var chipObj = {
230
- key: generateStableKeyCb(finalDataObj, i),
231
- value: finalDataObj,
232
- label: isCustom || typeof finalDataObj == "string" ? val : finalDataObj[displayfield || "label" || Object.keys(finalDataObj)[0]] || "",
233
- displayValue: isCustom || typeof finalDataObj == "string" ? val : finalDataObj[displayfield || Object.keys(finalDataObj)[0]] || "",
234
- displayImage: null,
235
- dataObject: finalDataObj,
236
- active: false,
237
- isDuplicate: false,
238
- imgSrc: null,
239
- iscustom: isCustom
240
- };
241
- newChipsList.push(chipObj);
242
- } else {
243
- searchQuery.push(val);
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { jsx, jsxs } from "react/jsx-runtime";
21
+ import React, { useEffect, useRef, useState, useCallback, useMemo } from "react";
22
+ import { Box } from "@mui/material";
23
+ import { DndContext, closestCenter, PointerSensor, useSensor, useSensors } from "@dnd-kit/core";
24
+ import { arrayMove, SortableContext, horizontalListSortingStrategy } from "@dnd-kit/sortable";
25
+ import { restrictToParentElement } from "@dnd-kit/modifiers";
26
+ import clsx from "clsx";
27
+ import { debounce, isEqual, trim, find, slice } from "lodash";
28
+ import { WmSearch } from "../../basic/search";
29
+ import { withBaseWrapper } from "../../../higherOrder/withBaseWrapper";
30
+ import SortableChip from "./SortableChip";
31
+ import { generateStableKey, processDataset, performAddItem, performRemoveItem } from "./utils";
32
+ import withFormController from "../../data/form/form-controller/withFormController";
33
+ import { DEFAULT_CHIPS_DATASET } from "../../constants";
34
+ import withStandalone from "../../../higherOrder/withStandalone";
35
+ const DEFAULT_CLASS = "app-chips nav nav-pills list-inline";
36
+ const WmChips = React.memo(
37
+ (props) => {
38
+ var _a;
39
+ const {
40
+ allowonlyselect = false,
41
+ autofocus = false,
42
+ chipclass = "",
43
+ className = "",
44
+ datafield = "All Fields",
45
+ dataset = DEFAULT_CHIPS_DATASET,
46
+ datavalue,
47
+ dateformat,
48
+ disabled = false,
49
+ displayexpression,
50
+ displayfield,
51
+ displayimagesrc,
52
+ enablereorder = false,
53
+ groupby,
54
+ inputposition = "last",
55
+ inputwidth = "default",
56
+ limit,
57
+ match,
58
+ matchmode = "contains",
59
+ maxsize,
60
+ minchars = 1,
61
+ name,
62
+ orderby,
63
+ placeholder = "Type here..",
64
+ readonly = false,
65
+ searchkey,
66
+ showsearchicon = false,
67
+ tabindex = 0,
68
+ type = "search",
69
+ debouncetime = 250,
70
+ datacompletemsg = "No more data to load",
71
+ width,
72
+ height,
73
+ styles = {},
74
+ listener,
75
+ // Event handlers
76
+ onAdd,
77
+ onBeforeadd,
78
+ onBeforeremove,
79
+ onBeforereorder,
80
+ onBeforeservicecall,
81
+ onChipclick,
82
+ onChipselect,
83
+ onChange,
84
+ onRemove,
85
+ onReorder,
86
+ dataPath,
87
+ standalone = false
88
+ } = props;
89
+ const [chipsList, setChipsList] = useState([]);
90
+ const [saturate, setSaturate] = useState(false);
91
+ const [searchQuery, setSearchQuery] = useState("");
92
+ const [modelByValue, setModelByValue] = useState([]);
93
+ const [datasetItems, setDatasetItems] = useState([]);
94
+ const [uniqueKeyCounter, setUniqueKeyCounter] = useState(0);
95
+ const [isInitialized, setIsInitialized] = useState(false);
96
+ const backspaceArmedRef = useRef(false);
97
+ const maxSizeReached = "Max size reached";
98
+ const isFullWidth = inputwidth === "full";
99
+ const generateStableKeyCb = useCallback(
100
+ (item, index) => {
101
+ return generateStableKey(item, index, datafield);
102
+ },
103
+ [datafield]
104
+ );
105
+ const generateUniqueKey = useCallback(() => {
106
+ const key = `chip_new_${uniqueKeyCounter}`;
107
+ setUniqueKeyCounter((prev) => prev + 1);
108
+ return key;
109
+ }, [uniqueKeyCounter]);
110
+ const processDatasetCb = useCallback(
111
+ (data) => {
112
+ return processDataset(
113
+ data,
114
+ displayfield || "label",
115
+ displayexpression,
116
+ displayimagesrc,
117
+ datafield,
118
+ generateStableKeyCb
119
+ );
120
+ },
121
+ [displayfield, displayexpression, displayimagesrc, datafield, generateStableKeyCb]
122
+ );
123
+ const datasetForSearchAndChips = useMemo(() => {
124
+ var _a2;
125
+ if (typeof dataset === "function") {
126
+ try {
127
+ return (_a2 = dataset()) != null ? _a2 : [];
128
+ } catch (e) {
129
+ return [];
130
+ }
131
+ }
132
+ return dataset;
133
+ }, [standalone, dataset]);
134
+ useEffect(() => {
135
+ const items = processDatasetCb(datasetForSearchAndChips);
136
+ setDatasetItems(items);
137
+ setIsInitialized(true);
138
+ }, [datasetForSearchAndChips, processDatasetCb]);
139
+ const createCustomDataModel = useCallback(
140
+ (val) => {
141
+ const fieldKey = displayfield || "label";
142
+ const customObj = {};
143
+ customObj[fieldKey] = val;
144
+ customObj._uniqueKey = generateUniqueKey();
145
+ return customObj;
146
+ },
147
+ [displayfield, generateUniqueKey]
148
+ );
149
+ const updateMaxSize = useCallback(
150
+ (currentLength) => {
151
+ const length = currentLength !== void 0 ? currentLength : chipsList.length;
152
+ setSaturate((maxsize || 0) > 0 && length === maxsize);
153
+ },
154
+ [maxsize, chipsList.length]
155
+ );
156
+ const updateQueryModel = useCallback(
157
+ async (data) => {
158
+ if (!data || !isInitialized) {
159
+ setChipsList([]);
160
+ setModelByValue([]);
161
+ return;
162
+ }
163
+ let dataValue;
164
+ if (typeof data === "string") {
165
+ dataValue = data.split(",");
166
+ } else if (Array.isArray(data)) {
167
+ dataValue = [...data];
168
+ } else {
169
+ dataValue = [data];
170
+ }
171
+ setChipsList([]);
172
+ if (maxsize && dataValue.length > maxsize) {
173
+ dataValue = slice(dataValue, 0, maxsize);
174
+ }
175
+ const newChipsList = [];
176
+ const searchQuery2 = [];
177
+ dataValue.forEach((val, i) => {
178
+ const itemFound = find(datasetItems, (item) => {
179
+ const value_obj = val.dataObject ? val.dataObject : val;
180
+ return isEqual(item.value, value_obj);
181
+ });
182
+ if (itemFound) {
183
+ newChipsList.push(__spreadProps(__spreadValues({}, itemFound), {
184
+ key: generateStableKeyCb(itemFound.value, i),
185
+ // Use stable key for dataset items
186
+ active: false,
187
+ isDuplicate: false,
188
+ imgSrc: itemFound.displayImage,
189
+ iscustom: false
190
+ }));
191
+ } else if (datafield === "All Fields") {
192
+ let dataObj = val;
193
+ let isCustom = false;
194
+ if (!isEqual(val, dataObj)) {
195
+ dataObj = createCustomDataModel(val);
196
+ isCustom = true;
197
+ if (dataObj) {
198
+ dataValue[i] = dataObj;
244
199
  }
245
- });
246
- if (searchQuery.length && datafield !== "All Fields") {
247
- searchQuery.forEach(function (val, searchIndex) {
248
- var chipObj = {
249
- key: generateStableKeyCb(val, newChipsList.length + searchIndex),
250
- value: val,
251
- label: String(val),
252
- displayValue: String(val),
253
- displayImage: null,
254
- dataObject: val,
255
- active: false,
256
- isDuplicate: false,
257
- imgSrc: null,
258
- iscustom: true
259
- };
260
- newChipsList.push(chipObj);
261
- });
262
200
  }
263
- setChipsList(newChipsList);
264
- setModelByValue(dataValue);
265
- updateMaxSize(newChipsList.length);
266
- case 14:
267
- case "end":
268
- return _context.stop();
201
+ const finalDataObj = dataObj || val;
202
+ const chipObj = {
203
+ key: generateStableKeyCb(finalDataObj, i),
204
+ value: finalDataObj,
205
+ label: isCustom || typeof finalDataObj == "string" ? val : finalDataObj[displayfield || "label"] || "",
206
+ displayValue: isCustom || typeof finalDataObj == "string" ? val : finalDataObj[displayfield || Object.keys(finalDataObj)[0]] || "",
207
+ displayImage: null,
208
+ dataObject: finalDataObj,
209
+ active: false,
210
+ isDuplicate: false,
211
+ imgSrc: null,
212
+ iscustom: isCustom
213
+ };
214
+ newChipsList.push(chipObj);
215
+ } else {
216
+ searchQuery2.push(val);
217
+ }
218
+ });
219
+ if (searchQuery2.length && datafield !== "All Fields") {
220
+ searchQuery2.forEach((val, searchIndex) => {
221
+ const chipObj = {
222
+ key: generateStableKeyCb(val, newChipsList.length + searchIndex),
223
+ value: val,
224
+ label: String(val),
225
+ displayValue: String(val),
226
+ displayImage: null,
227
+ dataObject: val,
228
+ active: false,
229
+ isDuplicate: false,
230
+ imgSrc: null,
231
+ iscustom: true
232
+ };
233
+ newChipsList.push(chipObj);
234
+ });
269
235
  }
270
- }, _callee);
271
- }));
272
- return function (_x) {
273
- return _ref2.apply(this, arguments);
274
- };
275
- }(), [datasetItems, maxsize, datafield, displayfield, generateStableKeyCb, isInitialized]);
276
- var debouncedUpdateQueryModel = (0, _react.useMemo)(function () {
277
- return (0, _lodash.debounce)(updateQueryModel, 150);
278
- }, [updateQueryModel]);
279
- (0, _react.useEffect)(function () {
280
- if (isInitialized && datavalue !== undefined) {
281
- debouncedUpdateQueryModel(datavalue);
282
- } else if (datavalue == undefined || datavalue.length == 0) {
283
- setChipsList([]);
284
- setSearchQuery(undefined);
285
- setModelByValue([]);
286
- updateMaxSize(0);
287
- }
288
- }, [datavalue, debouncedUpdateQueryModel]);
289
- var addItem = (0, _react.useCallback)(function (newItem) {
290
- (0, _utils.performAddItem)(newItem, chipsList, modelByValue, setChipsList, setModelByValue, setSearchQuery, updateMaxSize, listener, name, datafield, displayfield || "label", createCustomDataModel, generateUniqueKey, maxsize || 0, onBeforeadd, onChange, onAdd, props);
291
- }, [chipsList, modelByValue, updateMaxSize, onChange, onAdd, onBeforeadd, name, datafield, displayfield, createCustomDataModel, generateUniqueKey, maxsize, props]);
292
- var removeItem = (0, _react.useCallback)(function (event, item, index) {
293
- (0, _utils.performRemoveItem)(event, item, index, chipsList, modelByValue, setChipsList, setModelByValue, updateMaxSize, listener, name, onBeforeremove, onChange, onRemove, props);
294
- }, [chipsList, modelByValue, updateMaxSize, onChange, onRemove, onBeforeremove, name, props]);
295
- var handleChipClick = (0, _react.useCallback)(function (event, chip, index) {
296
- if (readonly) return;
297
- if (onChipclick && listener !== null && listener !== void 0 && listener.Widgets && name && name in listener.Widgets) {
298
- onChipclick(event.nativeEvent, listener.Widgets[name], chip);
299
- }
300
- }, [readonly, onChipclick, name]);
301
- var handleChipSelect = (0, _react.useCallback)(function (chip, index) {
302
- if (readonly) return;
303
- var newChipsList = chipsList.map(function (item, i) {
304
- return _objectSpread(_objectSpread({}, item), {}, {
305
- active: i === index
306
- });
307
- });
308
- setChipsList(newChipsList);
309
- if (onChipselect && listener !== null && listener !== void 0 && listener.Widgets && name && name in listener.Widgets) {
310
- onChipselect(new Event("focus"), listener.Widgets[name], chip);
311
- }
312
- }, [readonly, chipsList, onChipselect, name]);
313
- var handleKeyDown = (0, _react.useCallback)(function (event, index) {
314
- if (readonly) return;
315
- if ((event.key == "Backspace" || event.key == "Delete") && index !== undefined) {
316
- removeItem(event, chipsList[index], index);
317
- }
318
- }, [readonly, chipsList, removeItem]);
319
- var handleSearchSelect = (0, _react.useCallback)(function (event, widget, selectedValue) {
320
- if (selectedValue) {
321
- addItem(selectedValue.dataObject ? selectedValue.dataObject : selectedValue);
322
- setSearchQuery("");
236
+ setChipsList(newChipsList);
237
+ setModelByValue(dataValue);
238
+ updateMaxSize(newChipsList.length);
239
+ },
240
+ [datasetItems, maxsize, datafield, displayfield, generateStableKeyCb, isInitialized]
241
+ );
242
+ const debouncedUpdateQueryModel = useMemo(() => {
243
+ return debounce(updateQueryModel, 150);
244
+ }, [updateQueryModel]);
245
+ useEffect(() => {
246
+ if (isInitialized && datavalue !== void 0) {
247
+ debouncedUpdateQueryModel(datavalue);
248
+ } else if (datavalue == void 0 || datavalue.length == 0) {
249
+ setChipsList([]);
250
+ setSearchQuery(void 0);
251
+ setModelByValue([]);
252
+ updateMaxSize(0);
253
+ }
254
+ }, [datavalue, debouncedUpdateQueryModel]);
255
+ const addItem = useCallback(
256
+ (newItem) => {
257
+ performAddItem(
258
+ newItem,
259
+ chipsList,
260
+ modelByValue,
261
+ setChipsList,
262
+ setModelByValue,
263
+ setSearchQuery,
264
+ updateMaxSize,
265
+ listener,
266
+ name,
267
+ datafield,
268
+ displayfield || "label",
269
+ createCustomDataModel,
270
+ generateUniqueKey,
271
+ maxsize || 0,
272
+ onBeforeadd,
273
+ onChange,
274
+ onAdd,
275
+ props
276
+ );
277
+ },
278
+ [
279
+ chipsList,
280
+ modelByValue,
281
+ updateMaxSize,
282
+ onChange,
283
+ onAdd,
284
+ onBeforeadd,
285
+ name,
286
+ datafield,
287
+ displayfield,
288
+ createCustomDataModel,
289
+ generateUniqueKey,
290
+ maxsize,
291
+ props
292
+ ]
293
+ );
294
+ const removeItem = useCallback(
295
+ (event, item, index) => {
296
+ performRemoveItem(
297
+ event,
298
+ item,
299
+ index,
300
+ chipsList,
301
+ modelByValue,
302
+ setChipsList,
303
+ setModelByValue,
304
+ updateMaxSize,
305
+ listener,
306
+ name,
307
+ onBeforeremove,
308
+ onChange,
309
+ onRemove,
310
+ props
311
+ );
312
+ },
313
+ [chipsList, modelByValue, updateMaxSize, onChange, onRemove, onBeforeremove, name, props]
314
+ );
315
+ const handleChipClick = useCallback(
316
+ (event, chip, index) => {
317
+ if (readonly) return;
318
+ if (onChipclick && (listener == null ? void 0 : listener.Widgets) && name && name in listener.Widgets) {
319
+ onChipclick(event.nativeEvent, listener.Widgets[name], chip);
320
+ }
321
+ },
322
+ [readonly, onChipclick, name]
323
+ );
324
+ const handleChipSelect = useCallback(
325
+ (chip, index) => {
326
+ if (readonly) return;
327
+ const newChipsList = chipsList.map((item, i) => __spreadProps(__spreadValues({}, item), {
328
+ active: i === index
329
+ }));
330
+ setChipsList(newChipsList);
331
+ if (onChipselect && (listener == null ? void 0 : listener.Widgets) && name && name in listener.Widgets) {
332
+ onChipselect(new Event("focus"), listener.Widgets[name], chip);
333
+ }
334
+ },
335
+ [readonly, chipsList, onChipselect, name]
336
+ );
337
+ const handleKeyDown = useCallback(
338
+ (event, index) => {
339
+ if (readonly) return;
340
+ if ((event.key == "Backspace" || event.key == "Delete") && index !== void 0) {
341
+ removeItem(event, chipsList[index], index);
342
+ }
343
+ },
344
+ [readonly, chipsList, removeItem]
345
+ );
346
+ const handleSearchSelect = useCallback(
347
+ (event, widget, selectedValue) => {
348
+ if (selectedValue) {
349
+ addItem(selectedValue.dataObject ? selectedValue.dataObject : selectedValue);
350
+ setSearchQuery("");
351
+ backspaceArmedRef.current = false;
352
+ }
353
+ },
354
+ [addItem]
355
+ );
356
+ const handleSearchSubmit = useCallback(
357
+ (event, widget) => {
358
+ const currentQuery = (widget == null ? void 0 : widget.query) || searchQuery;
359
+ const trimmedQuery = trim(currentQuery);
360
+ if (!trimmedQuery) return;
361
+ if (allowonlyselect) return;
362
+ if (maxsize && chipsList.length >= maxsize) return;
363
+ addItem(trimmedQuery);
364
+ setSearchQuery("");
365
+ backspaceArmedRef.current = false;
366
+ },
367
+ [searchQuery, allowonlyselect, addItem, maxsize, chipsList.length]
368
+ );
369
+ const handleSearchChange = useCallback((event, widget, newValue) => {
370
+ setSearchQuery(newValue || "");
323
371
  backspaceArmedRef.current = false;
324
- }
325
- }, [addItem]);
326
- var handleSearchSubmit = (0, _react.useCallback)(function (event, widget) {
327
- var currentQuery = (widget === null || widget === void 0 ? void 0 : widget.query) || searchQuery;
328
- var trimmedQuery = (0, _lodash.trim)(currentQuery);
329
- if (!trimmedQuery) return;
330
- if (allowonlyselect) return;
331
- if (maxsize && chipsList.length >= maxsize) return;
332
- addItem(trimmedQuery);
333
- setSearchQuery("");
334
- backspaceArmedRef.current = false;
335
- }, [searchQuery, allowonlyselect, addItem, maxsize, chipsList.length]);
336
- var handleSearchChange = (0, _react.useCallback)(function (event, widget, newValue) {
337
- setSearchQuery(newValue || "");
338
- // Any typing disarms backspace-delete
339
- backspaceArmedRef.current = false;
340
- }, []);
341
- var handleSearchAction = (0, _react.useCallback)(function (event, widget) {
342
- var currentQuery = (widget === null || widget === void 0 ? void 0 : widget.query) || searchQuery;
343
- var trimmedQuery = (0, _lodash.trim)(currentQuery);
344
- if (!trimmedQuery) return;
345
- if (allowonlyselect) return;
346
- if (maxsize && chipsList.length >= maxsize) return;
347
- addItem(trimmedQuery);
348
- }, [searchQuery, allowonlyselect, addItem, maxsize, chipsList.length]);
349
- var handleSearchKeyDown = (0, _react.useCallback)(function (event) {
350
- // Two-step backspace: first focuses last chip, second deletes it
351
- if (event.key === "Backspace") {
352
- var _ref3, _inputElement$value;
353
- var inputElement = event.target;
354
- var currentQuery = ((_ref3 = (_inputElement$value = inputElement === null || inputElement === void 0 ? void 0 : inputElement.value) !== null && _inputElement$value !== void 0 ? _inputElement$value : searchQuery) !== null && _ref3 !== void 0 ? _ref3 : "").trim();
355
- if (!readonly && !disabled && currentQuery === "" && chipsList.length > 0) {
356
- if (!backspaceArmedRef.current) {
357
- // Mark last chip active and move focus to it
358
- setChipsList(function (prev) {
359
- return prev.map(function (c, i) {
360
- return _objectSpread(_objectSpread({}, c), {}, {
361
- active: i === prev.length - 1
362
- });
363
- });
364
- });
365
- event.preventDefault();
366
- backspaceArmedRef.current = true;
367
- return;
368
- } else {
372
+ }, []);
373
+ const handleSearchAction = useCallback(
374
+ (event, widget) => {
375
+ const currentQuery = (widget == null ? void 0 : widget.query) || searchQuery;
376
+ const trimmedQuery = trim(currentQuery);
377
+ if (!trimmedQuery) return;
378
+ if (allowonlyselect) return;
379
+ if (maxsize && chipsList.length >= maxsize) return;
380
+ addItem(trimmedQuery);
381
+ },
382
+ [searchQuery, allowonlyselect, addItem, maxsize, chipsList.length]
383
+ );
384
+ const handleSearchKeyDown = useCallback(
385
+ (event) => {
386
+ var _a2, _b;
387
+ if (event.key === "Backspace") {
388
+ const inputElement = event.target;
389
+ const currentQuery = ((_b = (_a2 = inputElement == null ? void 0 : inputElement.value) != null ? _a2 : searchQuery) != null ? _b : "").trim();
390
+ if (!readonly && !disabled && currentQuery === "" && chipsList.length > 0) {
391
+ if (!backspaceArmedRef.current) {
392
+ setChipsList(
393
+ (prev) => prev.map((c, i) => __spreadProps(__spreadValues({}, c), {
394
+ active: i === prev.length - 1
395
+ }))
396
+ );
397
+ event.preventDefault();
398
+ backspaceArmedRef.current = true;
399
+ return;
400
+ } else {
401
+ event.preventDefault();
402
+ const lastIndex = chipsList.length - 1;
403
+ removeItem(event, chipsList[lastIndex], lastIndex);
404
+ backspaceArmedRef.current = false;
405
+ return;
406
+ }
407
+ }
408
+ }
409
+ if (event.key === "Enter") {
369
410
  event.preventDefault();
370
- var lastIndex = chipsList.length - 1;
371
- removeItem(event, chipsList[lastIndex], lastIndex);
411
+ const inputElement = event.target;
412
+ const currentQuery = (inputElement == null ? void 0 : inputElement.value) || searchQuery || "";
413
+ const trimmedQuery = trim(currentQuery);
414
+ if (!trimmedQuery) {
415
+ return;
416
+ }
417
+ if (allowonlyselect) {
418
+ return;
419
+ }
420
+ if (maxsize && chipsList.length >= maxsize) {
421
+ return;
422
+ }
423
+ }
424
+ if (event.key !== "Backspace") {
372
425
  backspaceArmedRef.current = false;
373
- return;
374
426
  }
375
- }
376
- }
377
- if (event.key === "Enter") {
378
- event.preventDefault();
379
- var _inputElement = event.target;
380
- var _currentQuery = (_inputElement === null || _inputElement === void 0 ? void 0 : _inputElement.value) || searchQuery || "";
381
- var trimmedQuery = (0, _lodash.trim)(_currentQuery);
382
- if (!trimmedQuery) {
383
- return;
384
- }
385
- if (allowonlyselect) {
386
- return;
387
- }
388
- if (maxsize && chipsList.length >= maxsize) {
389
- return;
390
- }
391
- }
392
- // Any other key disarms backspace-delete
393
- if (event.key !== "Backspace") {
394
- backspaceArmedRef.current = false;
395
- }
396
- }, [searchQuery, readonly, disabled, chipsList, removeItem, allowonlyselect, maxsize]);
397
-
398
- // Clear search input when the parent form emits a reset
399
- var rootRef = (0, _react.useRef)(null);
400
- (0, _react.useEffect)(function () {
401
- // since this seach widget inside the form is not in control to make in control getting a dispatched event.
402
- var container = rootRef.current;
403
- var formEl = container === null || container === void 0 ? void 0 : container.closest("form");
404
- if (!formEl) return;
405
- var handleFormReset = function handleFormReset() {
406
- setSearchQuery(undefined);
407
- backspaceArmedRef.current = false;
408
- };
409
- formEl.addEventListener("wmformreset", handleFormReset);
410
- return function () {
411
- formEl.removeEventListener("wmformreset", handleFormReset);
412
- };
413
- }, []);
414
- var renderChipsList = function renderChipsList() {
415
- var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor, {
416
- activationConstraint: {
417
- distance: 5
418
- }
419
- }));
420
- var handleDndEnd = function handleDndEnd(event) {
421
- var active = event.active,
422
- over = event.over;
423
- if (!over || !enablereorder) return;
424
- if (active.id === over.id) return;
425
- var oldIndex = chipsList.findIndex(function (chip) {
426
- return chip.key === active.id;
427
- });
428
- var newIndex = chipsList.findIndex(function (chip) {
429
- return chip.key === over.id;
430
- });
431
- if (oldIndex === -1 || newIndex === -1) return;
432
- var newChipsList = (0, _sortable.arrayMove)(chipsList, oldIndex, newIndex);
433
- var changedItem = {
434
- oldIndex: oldIndex,
435
- newIndex: newIndex,
436
- item: newChipsList[newIndex]
427
+ },
428
+ [searchQuery, readonly, disabled, chipsList, removeItem, allowonlyselect, maxsize]
429
+ );
430
+ const rootRef = useRef(null);
431
+ useEffect(() => {
432
+ const container = rootRef.current;
433
+ const formEl = container == null ? void 0 : container.closest("form");
434
+ if (!formEl) return;
435
+ const handleFormReset = () => {
436
+ setSearchQuery(void 0);
437
+ backspaceArmedRef.current = false;
437
438
  };
438
- if (onBeforereorder && listener !== null && listener !== void 0 && listener.Widgets && name && name in listener.Widgets) {
439
- var allowReorder = onBeforereorder(new MouseEvent("dragend"), listener.Widgets[name], newChipsList, changedItem);
440
- if (allowReorder === false) {
441
- return;
439
+ formEl.addEventListener("wmformreset", handleFormReset);
440
+ return () => {
441
+ formEl.removeEventListener("wmformreset", handleFormReset);
442
+ };
443
+ }, []);
444
+ const renderChipsList = () => {
445
+ const sensors = useSensors(
446
+ useSensor(PointerSensor, {
447
+ activationConstraint: { distance: 5 }
448
+ })
449
+ );
450
+ const handleDndEnd = (event) => {
451
+ const { active, over } = event;
452
+ if (!over || !enablereorder) return;
453
+ if (active.id === over.id) return;
454
+ const oldIndex = chipsList.findIndex((chip) => chip.key === active.id);
455
+ const newIndex = chipsList.findIndex((chip) => chip.key === over.id);
456
+ if (oldIndex === -1 || newIndex === -1) return;
457
+ const newChipsList = arrayMove(chipsList, oldIndex, newIndex);
458
+ const changedItem = { oldIndex, newIndex, item: newChipsList[newIndex] };
459
+ if (onBeforereorder && (listener == null ? void 0 : listener.Widgets) && name && name in listener.Widgets) {
460
+ const allowReorder = onBeforereorder(
461
+ new MouseEvent("dragend"),
462
+ listener.Widgets[name],
463
+ newChipsList,
464
+ changedItem
465
+ );
466
+ if (allowReorder === false) {
467
+ return;
468
+ }
442
469
  }
470
+ const newModelByValue = arrayMove(modelByValue, oldIndex, newIndex);
471
+ setChipsList(newChipsList);
472
+ setModelByValue(newModelByValue);
473
+ if (onChange && (listener == null ? void 0 : listener.Widgets) && name && name in listener.Widgets) {
474
+ onChange(
475
+ new MouseEvent("dragend"),
476
+ listener.Widgets[name],
477
+ newModelByValue,
478
+ modelByValue
479
+ );
480
+ }
481
+ if (onReorder && (listener == null ? void 0 : listener.Widgets) && name && name in listener.Widgets) {
482
+ onReorder(
483
+ new MouseEvent("dragend"),
484
+ listener.Widgets[name],
485
+ newChipsList,
486
+ changedItem
487
+ );
488
+ }
489
+ };
490
+ if (enablereorder && !readonly && !disabled) {
491
+ return /* @__PURE__ */ jsx(
492
+ DndContext,
493
+ {
494
+ sensors,
495
+ collisionDetection: closestCenter,
496
+ onDragEnd: handleDndEnd,
497
+ modifiers: [restrictToParentElement],
498
+ children: /* @__PURE__ */ jsx(
499
+ SortableContext,
500
+ {
501
+ items: chipsList.map((chip) => chip.key),
502
+ strategy: horizontalListSortingStrategy,
503
+ children: /* @__PURE__ */ jsxs(
504
+ Box,
505
+ {
506
+ component: "ul",
507
+ className: clsx(DEFAULT_CLASS, "wm-chips-list", className),
508
+ name,
509
+ children: [
510
+ inputposition === "first" && renderSearchInput(),
511
+ chipsList.map((chip, index) => /* @__PURE__ */ jsx(
512
+ SortableChip,
513
+ {
514
+ chip,
515
+ index,
516
+ readonly,
517
+ disabled,
518
+ chipclass,
519
+ enablereorder,
520
+ handleChipClick,
521
+ handleChipSelect,
522
+ handleKeyDown,
523
+ removeItem,
524
+ chipsList,
525
+ setChipsList
526
+ },
527
+ chip.key
528
+ )),
529
+ inputposition === "last" && renderSearchInput()
530
+ ]
531
+ }
532
+ )
533
+ }
534
+ )
535
+ }
536
+ );
443
537
  }
444
- var newModelByValue = (0, _sortable.arrayMove)(modelByValue, oldIndex, newIndex);
445
- setChipsList(newChipsList);
446
- setModelByValue(newModelByValue);
447
- if (onChange && listener !== null && listener !== void 0 && listener.Widgets && name && name in listener.Widgets) {
448
- onChange(new MouseEvent("dragend"), listener.Widgets[name], newModelByValue, modelByValue);
449
- }
450
- if (onReorder && listener !== null && listener !== void 0 && listener.Widgets && name && name in listener.Widgets) {
451
- onReorder(new MouseEvent("dragend"), listener.Widgets[name], newChipsList, changedItem);
452
- }
538
+ return /* @__PURE__ */ jsxs(
539
+ Box,
540
+ {
541
+ component: "ul",
542
+ className: clsx(DEFAULT_CLASS, "wm-chips-list", className),
543
+ "aria-readonly": readonly,
544
+ name,
545
+ children: [
546
+ inputposition === "first" && renderSearchInput(),
547
+ chipsList.map((chip, index) => /* @__PURE__ */ jsx(
548
+ SortableChip,
549
+ {
550
+ chip,
551
+ index,
552
+ readonly,
553
+ disabled,
554
+ chipclass,
555
+ enablereorder: false,
556
+ handleChipClick,
557
+ handleChipSelect,
558
+ handleKeyDown,
559
+ removeItem,
560
+ chipsList,
561
+ setChipsList
562
+ },
563
+ chip.key
564
+ )),
565
+ inputposition === "last" && renderSearchInput()
566
+ ]
567
+ }
568
+ );
453
569
  };
454
- if (enablereorder && !readonly && !disabled) {
455
- return __jsx(_core.DndContext, {
456
- sensors: sensors,
457
- collisionDetection: _core.closestCenter,
458
- onDragEnd: handleDndEnd,
459
- modifiers: [_modifiers.restrictToParentElement]
460
- }, __jsx(_sortable.SortableContext, {
461
- items: chipsList.map(function (chip) {
462
- return chip.key;
463
- }),
464
- strategy: _sortable.horizontalListSortingStrategy
465
- }, __jsx(_material.Box, {
466
- component: "ul",
467
- className: (0, _clsx["default"])(DEFAULT_CLASS, "wm-chips-list", className),
468
- name: name
469
- }, inputposition === "first" && renderSearchInput(), chipsList.map(function (chip, index) {
470
- return __jsx(_SortableChip["default"], {
471
- key: chip.key,
472
- chip: chip,
473
- index: index,
474
- readonly: readonly,
475
- disabled: disabled,
476
- chipclass: chipclass,
477
- enablereorder: enablereorder,
478
- handleChipClick: handleChipClick,
479
- handleChipSelect: handleChipSelect,
480
- handleKeyDown: handleKeyDown,
481
- removeItem: removeItem,
482
- chipsList: chipsList,
483
- setChipsList: setChipsList
484
- });
485
- }), inputposition === "last" && renderSearchInput())));
486
- }
487
- return __jsx(_material.Box, {
488
- component: "ul",
489
- className: (0, _clsx["default"])(DEFAULT_CLASS, "wm-chips-list", className),
490
- "aria-readonly": readonly,
491
- name: name
492
- }, inputposition === "first" && renderSearchInput(), chipsList.map(function (chip, index) {
493
- return __jsx(_SortableChip["default"], {
494
- key: chip.key,
495
- chip: chip,
496
- index: index,
497
- readonly: readonly,
498
- disabled: disabled,
499
- chipclass: chipclass,
500
- enablereorder: false,
501
- handleChipClick: handleChipClick,
502
- handleChipSelect: handleChipSelect,
503
- handleKeyDown: handleKeyDown,
504
- removeItem: removeItem,
505
- chipsList: chipsList,
506
- setChipsList: setChipsList
507
- });
508
- }), inputposition === "last" && renderSearchInput());
509
- };
510
- var renderSearchInput = function renderSearchInput() {
511
- return __jsx(_material.Box, {
512
- component: "li",
513
- className: (0, _clsx["default"])("app-chip-search", {
514
- "full-width": isFullWidth
515
- })
516
- }, __jsx(_search.WmSearch, (0, _extends2["default"])({}, props, {
517
- name: "".concat(name, "_app-chip-search"),
518
- disabled: disabled || saturate,
519
- readonly: readonly,
520
- datafield: datafield,
521
- searchkey: searchkey,
522
- orderby: orderby,
523
- placeholder: saturate ? maxSizeReached : placeholder,
524
- showsearchicon: showsearchicon,
525
- tabindex: tabindex,
526
- minchars: minchars,
527
- debouncetime: debouncetime,
528
- matchmode: matchmode,
529
- datacompletemsg: datacompletemsg,
530
- groupby: groupby,
531
- match: match,
532
- dateformat: dateformat,
533
- dataset: datasetForSearchAndChips,
534
- displayfield: displayfield,
535
- displayexpression: displayexpression,
536
- displayimagesrc: displayimagesrc,
537
- type: type,
538
- limit: limit,
539
- datavalue: searchQuery,
540
- onSelect: handleSearchSelect,
541
- onSubmit: handleSearchSubmit,
542
- onSearch: handleSearchAction,
543
- onChange: handleSearchChange,
544
- onKeyDown: handleSearchKeyDown,
545
- onBeforeservicecall: onBeforeservicecall,
546
- listener: listener,
547
- className: "app-chip-input",
548
- width: isFullWidth ? "100%" : undefined,
549
- autofocus: autofocus,
550
- isSearchInChips: true,
551
- dataPath: dataPath,
552
- ignoreInForm: true
553
- })));
554
- };
555
- return __jsx(_material.Box, {
556
- hidden: (_props$hidden = props.hidden) !== null && _props$hidden !== void 0 ? _props$hidden : false,
557
- component: "div",
558
- className: "wm-chips-root",
559
- ref: rootRef,
560
- style: _objectSpread({
561
- width: width,
562
- height: height
563
- }, styles)
564
- }, renderChipsList());
565
- }, function (prev, next) {
566
- var keys = ["allowonlyselect", "autofocus", "chipclass", "className", "datafield", "dataset", "datavalue", "dateformat", "disabled", "displayexpression", "displayfield", "displayimagesrc", "enablereorder", "groupby", "inputposition", "inputwidth", "limit", "match", "matchmode", "maxsize", "minchars", "name", "orderby", "placeholder", "readonly", "searchkey", "showsearchicon", "tabindex", "type", "debouncetime", "datacompletemsg", "width", "height", "styles", "dataPath", "hidden"];
567
- return keys.every(function (key) {
568
- return (0, _lodash.isEqual)(prev[key], next[key]);
569
- });
570
- });
570
+ const renderSearchInput = () => {
571
+ return /* @__PURE__ */ jsx(Box, { component: "li", className: clsx("app-chip-search", { "full-width": isFullWidth }), children: /* @__PURE__ */ jsx(
572
+ WmSearch,
573
+ __spreadProps(__spreadValues({}, props), {
574
+ name: `${name}_app-chip-search`,
575
+ disabled: disabled || saturate,
576
+ readonly,
577
+ datafield,
578
+ searchkey,
579
+ orderby,
580
+ placeholder: saturate ? maxSizeReached : placeholder,
581
+ showsearchicon,
582
+ tabindex,
583
+ minchars,
584
+ debouncetime,
585
+ matchmode,
586
+ datacompletemsg,
587
+ groupby,
588
+ match,
589
+ dateformat,
590
+ dataset: datasetForSearchAndChips,
591
+ displayfield,
592
+ displayexpression,
593
+ displayimagesrc,
594
+ type,
595
+ limit,
596
+ datavalue: searchQuery,
597
+ onSelect: handleSearchSelect,
598
+ onSubmit: handleSearchSubmit,
599
+ onSearch: handleSearchAction,
600
+ onChange: handleSearchChange,
601
+ onKeyDown: handleSearchKeyDown,
602
+ onBeforeservicecall,
603
+ listener,
604
+ className: "app-chip-input",
605
+ width: isFullWidth ? "100%" : void 0,
606
+ autofocus,
607
+ isSearchInChips: true,
608
+ dataPath,
609
+ ignoreInForm: true
610
+ })
611
+ ) });
612
+ };
613
+ return /* @__PURE__ */ jsx(
614
+ Box,
615
+ {
616
+ hidden: (_a = props.hidden) != null ? _a : false,
617
+ component: "div",
618
+ className: "wm-chips-root",
619
+ ref: rootRef,
620
+ style: __spreadValues({ width, height }, styles),
621
+ children: renderChipsList()
622
+ }
623
+ );
624
+ },
625
+ (prev, next) => {
626
+ const keys = [
627
+ "allowonlyselect",
628
+ "autofocus",
629
+ "chipclass",
630
+ "className",
631
+ "datafield",
632
+ "dataset",
633
+ "datavalue",
634
+ "dateformat",
635
+ "disabled",
636
+ "displayexpression",
637
+ "displayfield",
638
+ "displayimagesrc",
639
+ "enablereorder",
640
+ "groupby",
641
+ "inputposition",
642
+ "inputwidth",
643
+ "limit",
644
+ "match",
645
+ "matchmode",
646
+ "maxsize",
647
+ "minchars",
648
+ "name",
649
+ "orderby",
650
+ "placeholder",
651
+ "readonly",
652
+ "searchkey",
653
+ "showsearchicon",
654
+ "tabindex",
655
+ "type",
656
+ "debouncetime",
657
+ "datacompletemsg",
658
+ "width",
659
+ "height",
660
+ "styles",
661
+ "dataPath",
662
+ "hidden"
663
+ ];
664
+ return keys.every((key) => {
665
+ return isEqual(prev[key], next[key]);
666
+ });
667
+ }
668
+ );
571
669
  WmChips.displayName = "WmChips";
572
- var WithFormController = (0, _withFormController["default"])(WmChips);
573
- var WmChipsStandalone = exports.WmChips = (0, _withStandalone["default"])(WithFormController);
574
- /**
575
- * The WmChips component provides a chip/tag input with autocomplete, reorder, and search support.
576
- *
577
- * - [Playground](https://react-components.wavemaker.ai/?path=/story/input-chips--showcase)
578
- *
579
- * - [Docs](https://react-components.wavemaker.ai/?path=/story/input-chips--docs)
580
- *
581
- * @param props - {@link WmChipsProps}
582
- */
583
- var _default = exports["default"] = (0, _withBaseWrapper.withBaseWrapper)(WithFormController);
670
+ const WithFormController = withFormController(WmChips);
671
+ const WmChipsStandalone = withStandalone(WithFormController);
672
+ var chips_default = withBaseWrapper(WithFormController);
673
+ export {
674
+ WmChipsStandalone as WmChips,
675
+ chips_default as default
676
+ };