@wavemaker/app-ng-runtime 11.8.0-next.24904 → 11.8.0-next.27301

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 (346) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +5 -5
  2. app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
  3. app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
  4. app-ng-runtime/build-task/fesm2022/index.mjs +2 -1
  5. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  6. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +5 -5
  7. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
  8. app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +1 -1
  9. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +2 -1
  10. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  11. app-ng-runtime/components/advanced/login/bundles/index.umd.js +6 -6
  12. app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +4 -3
  13. app-ng-runtime/components/advanced/login/fesm2022/index.mjs +3 -2
  14. app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
  15. app-ng-runtime/components/base/bundles/index.umd.js +203 -171
  16. app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +1 -1
  17. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +12 -11
  18. app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
  19. app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
  20. app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +47 -41
  21. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
  22. app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
  23. app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +4 -3
  24. app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +24 -21
  25. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +12 -11
  26. app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +40 -14
  27. app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
  28. app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -2
  29. app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +1 -1
  30. app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
  31. app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +3 -2
  32. app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +6 -5
  33. app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
  34. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
  35. app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
  36. app-ng-runtime/components/base/fesm2022/index.mjs +206 -173
  37. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  38. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  39. app-ng-runtime/components/base/utils/data-utils.d.ts +0 -1
  40. app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
  41. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  42. app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  43. app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -10
  44. app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +4 -3
  45. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +6 -5
  46. app-ng-runtime/components/basic/default/fesm2022/index.mjs +7 -6
  47. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  48. app-ng-runtime/components/basic/progress/bundles/index.umd.js +13 -13
  49. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +5 -4
  50. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +6 -5
  51. app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
  52. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +10 -9
  53. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  54. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +15 -10
  55. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +14 -8
  56. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +13 -7
  57. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  58. app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
  59. app-ng-runtime/components/basic/search/bundles/index.umd.js +67 -65
  60. app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
  61. app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
  62. app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
  63. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +31 -30
  64. app-ng-runtime/components/basic/search/fesm2022/index.mjs +66 -63
  65. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  66. app-ng-runtime/components/basic/tree/bundles/index.umd.js +9 -9
  67. app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +7 -6
  68. app-ng-runtime/components/basic/tree/fesm2022/index.mjs +6 -5
  69. app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
  70. app-ng-runtime/components/chart/bundles/index.umd.js +72 -63
  71. app-ng-runtime/components/chart/chart.component.d.ts +1 -1
  72. app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
  73. app-ng-runtime/components/chart/esm2022/chart.component.mjs +58 -48
  74. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
  75. app-ng-runtime/components/chart/fesm2022/index.mjs +69 -59
  76. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +16 -16
  78. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +14 -13
  79. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +13 -12
  80. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  81. app-ng-runtime/components/containers/panel/bundles/index.umd.js +5 -5
  82. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +3 -2
  83. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +2 -1
  84. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  85. app-ng-runtime/components/containers/panel/panel.component.d.ts +1 -1
  86. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +17 -17
  87. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +15 -14
  88. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +14 -13
  89. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  90. app-ng-runtime/components/data/form/bundles/index.umd.js +75 -75
  91. app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
  92. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +10 -9
  93. app-ng-runtime/components/data/form/esm2022/form.component.mjs +54 -53
  94. app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
  95. app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +11 -10
  96. app-ng-runtime/components/data/form/fesm2022/index.mjs +77 -76
  97. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  98. app-ng-runtime/components/data/form/form.component.d.ts +2 -2
  99. app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
  100. app-ng-runtime/components/data/list/bundles/index.umd.js +692 -687
  101. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +1 -1
  102. app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
  103. app-ng-runtime/components/data/list/esm2022/list.component.mjs +687 -682
  104. app-ng-runtime/components/data/list/fesm2022/index.mjs +690 -684
  105. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  106. app-ng-runtime/components/data/list/list.component.d.ts +53 -53
  107. app-ng-runtime/components/data/live-table/bundles/index.umd.js +1 -1
  108. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +2 -2
  109. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +1 -1
  110. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/data/pagination/bundles/index.umd.js +14 -14
  112. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +12 -11
  113. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +11 -10
  114. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  115. app-ng-runtime/components/data/table/bundles/index.umd.js +175 -172
  116. app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
  117. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +19 -18
  118. app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +7 -6
  119. app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +53 -55
  120. app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
  121. app-ng-runtime/components/data/table/esm2022/table.component.mjs +98 -91
  122. app-ng-runtime/components/data/table/fesm2022/index.mjs +172 -168
  123. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +6 -6
  125. app-ng-runtime/components/data/table/table.component.d.ts +2 -2
  126. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +2 -2
  127. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
  128. app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +1 -1
  129. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +1 -1
  130. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  131. app-ng-runtime/components/input/calendar/bundles/index.umd.js +33 -31
  132. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +31 -28
  133. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +30 -27
  134. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/input/chips/bundles/index.umd.js +29 -28
  136. app-ng-runtime/components/input/chips/chips.component.d.ts +1 -1
  137. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +27 -25
  138. app-ng-runtime/components/input/chips/fesm2022/index.mjs +26 -24
  139. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  140. app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
  141. app-ng-runtime/components/input/default/bundles/index.umd.js +75 -62
  142. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  143. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
  144. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +14 -8
  145. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +3 -2
  146. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +2 -2
  147. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +6 -4
  148. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +29 -23
  149. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +4 -3
  150. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +4 -3
  151. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  152. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -3
  153. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +20 -18
  154. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +2 -2
  155. app-ng-runtime/components/input/default/fesm2022/index.mjs +75 -62
  156. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  157. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -1
  158. app-ng-runtime/components/input/epoch/bundles/index.umd.js +53 -51
  159. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +34 -31
  160. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +5 -4
  161. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +5 -4
  162. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -6
  163. app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +1 -1
  164. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +6 -5
  165. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +48 -45
  166. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +15 -15
  168. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +13 -12
  169. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +12 -11
  170. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  171. app-ng-runtime/components/input/rating/bundles/index.umd.js +12 -12
  172. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +10 -9
  173. app-ng-runtime/components/input/rating/fesm2022/index.mjs +9 -8
  174. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  175. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +1 -1
  176. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +2 -2
  177. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +1 -1
  178. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  179. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +23 -22
  180. app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +3 -2
  181. app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +6 -5
  182. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  183. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +10 -8
  184. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +20 -18
  185. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  186. app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
  187. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +1 -1
  188. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  189. app-ng-runtime/components/prefab/bundles/index.umd.js +6 -6
  190. app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
  191. app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +3 -2
  192. app-ng-runtime/components/prefab/fesm2022/index.mjs +3 -2
  193. app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
  194. app-ng-runtime/core/bundles/index.umd.js +119 -130
  195. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  196. app-ng-runtime/core/esm2022/services/field-type.service.mjs +3 -2
  197. app-ng-runtime/core/esm2022/services/field-widget.service.mjs +3 -2
  198. app-ng-runtime/core/esm2022/services/pagination.service.mjs +7 -6
  199. app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +17 -16
  200. app-ng-runtime/core/esm2022/services/utils.service.mjs +3 -2
  201. app-ng-runtime/core/esm2022/services/viewport.service.mjs +3 -2
  202. app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
  203. app-ng-runtime/core/esm2022/utils/expression-parser.mjs +5 -4
  204. app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
  205. app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
  206. app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
  207. app-ng-runtime/core/fesm2022/index.mjs +117 -123
  208. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  209. app-ng-runtime/core/public_api.d.ts +1 -1
  210. app-ng-runtime/core/services/pagination.service.d.ts +1 -1
  211. app-ng-runtime/core/utils/utils.d.ts +5 -9
  212. app-ng-runtime/http/bundles/index.umd.js +7 -7
  213. app-ng-runtime/http/esm2022/http.service.mjs +5 -4
  214. app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
  215. app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
  216. app-ng-runtime/http/fesm2022/index.mjs +4 -3
  217. app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
  218. app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +24 -20
  219. app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +5 -4
  220. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +12 -8
  221. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +5 -3
  222. app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +3 -2
  223. app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +5 -4
  224. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +21 -16
  225. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
  226. app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +7 -7
  227. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +2 -2
  228. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +4 -3
  229. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +4 -3
  230. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
  231. app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +8 -8
  232. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +4 -3
  233. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +3 -2
  234. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
  235. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +5 -5
  236. app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +3 -2
  237. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +2 -1
  238. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
  239. app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +9 -9
  240. app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +7 -6
  241. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +6 -5
  242. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
  243. app-ng-runtime/mobile/core/bundles/index.umd.js +25 -25
  244. app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +5 -4
  245. app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +3 -2
  246. app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +4 -3
  247. app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +6 -5
  248. app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +3 -2
  249. app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +5 -4
  250. app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +9 -8
  251. app-ng-runtime/mobile/core/fesm2022/index.mjs +22 -21
  252. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  253. app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
  254. app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
  255. app-ng-runtime/mobile/offline/bundles/index.umd.js +161 -144
  256. app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
  257. app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +7 -6
  258. app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +37 -35
  259. app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +54 -45
  260. app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +5 -4
  261. app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
  262. app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
  263. app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
  264. app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
  265. app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
  266. app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
  267. app-ng-runtime/mobile/offline/fesm2022/index.mjs +156 -138
  268. app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/mobile/runtime/bundles/index.umd.js +11 -8
  270. app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +3 -2
  271. app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +6 -2
  272. app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +4 -3
  273. app-ng-runtime/mobile/runtime/fesm2022/index.mjs +8 -4
  274. app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
  275. app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +2 -2
  276. app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +3 -3
  277. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +2 -2
  278. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  279. app-ng-runtime/mobile/variables/bundles/index.umd.js +23 -16
  280. app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +2 -2
  281. app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
  282. app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
  283. app-ng-runtime/mobile/variables/fesm2022/index.mjs +19 -11
  284. app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/oAuth/bundles/index.umd.js +12 -12
  286. app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +4 -3
  287. app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
  288. app-ng-runtime/oAuth/fesm2022/index.mjs +9 -8
  289. app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
  290. app-ng-runtime/package.json +1 -1
  291. app-ng-runtime/runtime/base/bundles/index.umd.js +121 -120
  292. app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +4 -3
  293. app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +14 -13
  294. app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +13 -12
  295. app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +15 -14
  296. app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +14 -13
  297. app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +6 -5
  298. app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -10
  299. app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +1 -1
  300. app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +3 -2
  301. app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +1 -1
  302. app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +17 -14
  303. app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +7 -6
  304. app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +3 -2
  305. app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +4 -3
  306. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +12 -10
  307. app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +8 -7
  308. app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +3 -2
  309. app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +7 -6
  310. app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +6 -5
  311. app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +6 -7
  312. app-ng-runtime/runtime/base/fesm2022/index.mjs +119 -117
  313. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  314. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  315. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +7 -7
  316. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -3
  317. app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
  318. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +4 -3
  319. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  320. app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
  321. app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
  322. app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
  323. app-ng-runtime/security/bundles/index.umd.js +14 -14
  324. app-ng-runtime/security/esm2022/security.service.mjs +12 -11
  325. app-ng-runtime/security/fesm2022/index.mjs +11 -10
  326. app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
  327. app-ng-runtime/security/security.service.d.ts +1 -1
  328. app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
  329. app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
  330. app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
  331. app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
  332. app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
  333. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  334. app-ng-runtime/variables/bundles/index.umd.js +155 -145
  335. app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
  336. app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
  337. app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
  338. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
  339. app-ng-runtime/variables/esm2022/service/variables.service.mjs +7 -6
  340. app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
  341. app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
  342. app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
  343. app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
  344. app-ng-runtime/variables/fesm2022/index.mjs +169 -158
  345. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  346. app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
@@ -23,6 +23,7 @@ import * as i2 from '@wm/core';
23
23
  import { isDefined, getClonedObject, closePopover, $unwatch, $watch, $appDigest, triggerFn, DataSource, isDataSourceEqual, isMobile, $invokeWatchers, getValidJSON, extendProto, getDatasourceFromExpr, $parseEvent, extractCurrentItemExpr, isNumberType, DataType, adjustContainerRightEdges, FormWidgetType, isDateTimeType, getDisplayDateTimeFormat } from '@wm/core';
24
24
  import { Subject } from 'rxjs';
25
25
  import { debounceTime } from 'rxjs/operators';
26
+ import { isEmpty, floor, debounce, get, set, some, findIndex, isEqual, pullAllWith, remove, extend, isNaN, isUndefined, forEach, isArray, isObject, indexOf, keys, find, toNumber, includes, split, startsWith, omitBy, values, parseInt as parseInt$1, map, last, toString, isNull, range, filter, endsWith, toLower, head, orderBy, sum, mean, round, min, max, cloneDeep } from 'lodash-es';
26
27
 
27
28
  const registerProps$5 = () => {
28
29
  register('wm-table', new Map([
@@ -228,7 +229,7 @@ class TableComponent extends StylableComponent {
228
229
  set gridData(newValue) {
229
230
  this.isDataLoading = false;
230
231
  // Fix for [WMS-24012]: hide no datafound msg when variableInflight is true and dataset is empty
231
- if (this.variableInflight && _.isEmpty(newValue)) {
232
+ if (this.variableInflight && isEmpty(newValue)) {
232
233
  return;
233
234
  }
234
235
  this.variableInflight = false;
@@ -244,7 +245,7 @@ class TableComponent extends StylableComponent {
244
245
  [this._gridData, this.currentPage] = this.paginationService.updateFieldsOnPagination(this, newValue);
245
246
  // When edit action is performed on previous page, update the _gridData field with the modified row data
246
247
  if (this.gridOptions.lastActionPerformed === this.gridOptions.ACTIONS.EDIT) {
247
- const rowIndex = _.floor(this.actionRowIndex % this.pagesize);
248
+ const rowIndex = floor(this.actionRowIndex % this.pagesize);
248
249
  this._gridData.splice(this.actionRowIndex, 1, newValue[rowIndex]);
249
250
  }
250
251
  this.setDataGridOption('isLastPage', !!(this.dataNavigator.isDisableNext));
@@ -282,7 +283,7 @@ class TableComponent extends StylableComponent {
282
283
  this.setDataGridOption('colDefs', getClonedObject(this.fieldDefs));
283
284
  }
284
285
  // If data and colDefs are present, call on before data render event
285
- if (!this.isdynamictable && !_.isEmpty(newValue) && gridOptions.colDefs.length) {
286
+ if (!this.isdynamictable && !isEmpty(newValue) && gridOptions.colDefs.length) {
286
287
  this.invokeEventCallback('beforedatarender', { $data: this._gridData, $columns: this.columns, data: this._gridData, columns: this.columns });
287
288
  }
288
289
  this.setDataGridOption('data', getClonedObject(this._gridData));
@@ -295,7 +296,7 @@ class TableComponent extends StylableComponent {
295
296
  if (this.multiselect) {
296
297
  return getClonedObject(this.items);
297
298
  }
298
- if (_.isEmpty(this.items)) {
299
+ if (isEmpty(this.items)) {
299
300
  return {};
300
301
  }
301
302
  return getClonedObject(this.items[0]);
@@ -361,8 +362,8 @@ class TableComponent extends StylableComponent {
361
362
  this.fullFieldDefs = [];
362
363
  this.variableInflight = true;
363
364
  this.applyProps = new Map();
364
- this.redraw = _.debounce(this._redraw, 150);
365
- this.debouncedHandleLoading = _.debounce(this.handleLoading, 350);
365
+ this.redraw = debounce(this._redraw, 150);
366
+ this.debouncedHandleLoading = debounce(this.handleLoading, 350);
366
367
  // Filter and Sort Methods
367
368
  this.rowFilter = {};
368
369
  this._searchSortHandler = noop;
@@ -427,11 +428,11 @@ class TableComponent extends StylableComponent {
427
428
  isLastPage: false,
428
429
  // get the current page number
429
430
  getCurrentPage: () => {
430
- return _.get(this.dataNavigator, 'dn.currentPage') || 1;
431
+ return get(this.dataNavigator, 'dn.currentPage') || 1;
431
432
  },
432
433
  // set the page number
433
434
  setCurrentPage: (pageNum) => {
434
- _.set(this.dataNavigator, 'dn.currentPage', pageNum || 1);
435
+ set(this.dataNavigator, 'dn.currentPage', pageNum || 1);
435
436
  },
436
437
  getDataSource: () => {
437
438
  return this.datasource;
@@ -503,8 +504,8 @@ class TableComponent extends StylableComponent {
503
504
  if (this.selectedItems.length && rowData.$index && this.getConfiguredState() !== 'none' && this.dataNavigator && unsupportedStatePersistenceTypes.indexOf(this.navigation) < 0) {
504
505
  const obj = { page: this.dataNavigator.dn.currentPage, index: rowData.$index - 1 };
505
506
  const widgetState = this.statePersistence.getWidgetState(this);
506
- if (_.get(widgetState, 'selectedItem') && this.multiselect) {
507
- if (!_.some(widgetState.selectedItem, obj)) {
507
+ if (get(widgetState, 'selectedItem') && this.multiselect) {
508
+ if (!some(widgetState.selectedItem, obj)) {
508
509
  widgetState.selectedItem.push(obj);
509
510
  }
510
511
  this.statePersistence.setWidgetState(this, { 'selectedItem': widgetState.selectedItem });
@@ -528,7 +529,7 @@ class TableComponent extends StylableComponent {
528
529
  */
529
530
  if (this.multiselect) {
530
531
  //Fix for [WMS-25110]: Add row to items list only if the row is selected
531
- if (_.findIndex(this.items, row) === -1 && (rowInfo?._selected === undefined || rowInfo?._selected == true || (this.gridfirstrowselect && rowInfo?.rowId == 0 && !this.showFirstRow))) {
532
+ if (findIndex(this.items, row) === -1 && (rowInfo?._selected === undefined || rowInfo?._selected == true || (this.gridfirstrowselect && rowInfo?.rowId == 0 && !this.showFirstRow))) {
532
533
  this.items.push(row);
533
534
  if (rowInfo?.rowId == 0) {
534
535
  this.showFirstRow = true;
@@ -548,16 +549,16 @@ class TableComponent extends StylableComponent {
548
549
  onRowDeselect: (row, e) => {
549
550
  if (this.multiselect) {
550
551
  this.ngZone.run(() => {
551
- this.items = _.pullAllWith(this.items, [row], _.isEqual);
552
+ this.items = pullAllWith(this.items, [row], isEqual);
552
553
  this.selectedItems = this.callDataGridMethod('getSelectedRows');
553
554
  this.invokeEventCallback('rowdeselect', { $data: row, $event: e, row });
554
555
  const rowData = this.addRowIndex(row);
555
556
  if (this.getConfiguredState() !== 'none' && unsupportedStatePersistenceTypes.indexOf(this.navigation) < 0) {
556
557
  const obj = { page: this.dataNavigator.dn.currentPage, index: rowData.$index - 1 };
557
558
  const widgetState = this.statePersistence.getWidgetState(this);
558
- if (_.get(widgetState, 'selectedItem')) {
559
- _.remove(widgetState.selectedItem, function (selectedItem) {
560
- return _.isEqual(selectedItem, obj);
559
+ if (get(widgetState, 'selectedItem')) {
560
+ remove(widgetState.selectedItem, function (selectedItem) {
561
+ return isEqual(selectedItem, obj);
561
562
  });
562
563
  this.statePersistence.removeWidgetState(this, 'selectedItem');
563
564
  if (widgetState.selectedItem.length > 0) {
@@ -600,11 +601,16 @@ class TableComponent extends StylableComponent {
600
601
  },
601
602
  onRowDelete: (row, cancelRowDeleteCallback, e, callBack, options) => {
602
603
  this.ngZone.run(() => {
603
- this.deleteRecord(_.extend({}, options, { row, 'cancelRowDeleteCallback': cancelRowDeleteCallback, 'evt': e, 'callBack': callBack }));
604
+ this.deleteRecord(extend({}, options, {
605
+ row,
606
+ 'cancelRowDeleteCallback': cancelRowDeleteCallback,
607
+ 'evt': e,
608
+ 'callBack': callBack
609
+ }));
604
610
  });
605
611
  },
606
612
  onRowInsert: (row, e, callBack, options) => {
607
- this.insertRecord(_.extend({}, options, { row, event: e, 'callBack': callBack }));
613
+ this.insertRecord(extend({}, options, { row, event: e, 'callBack': callBack }));
608
614
  },
609
615
  beforeRowUpdate: (row, eventName) => {
610
616
  if (this._liveTableParent) {
@@ -613,7 +619,7 @@ class TableComponent extends StylableComponent {
613
619
  this.prevData = getClonedObject(row);
614
620
  },
615
621
  afterRowUpdate: (row, e, callBack, options) => {
616
- this.updateRecord(_.extend({}, options, { row, 'prevData': this.prevData, 'event': e, 'callBack': callBack }));
622
+ this.updateRecord(extend({}, options, { row, 'prevData': this.prevData, 'event': e, 'callBack': callBack }));
617
623
  },
618
624
  onBeforeRowUpdate: (row, e, options) => {
619
625
  return this.invokeEventCallback('beforerowupdate', { $event: e, $data: row, row, options: options });
@@ -694,7 +700,7 @@ class TableComponent extends StylableComponent {
694
700
  const customExprView = this.customExprViewRef.createEmbeddedView(tmpl, context);
695
701
  const rootNode = customExprView.rootNodes[0];
696
702
  const fieldName = rootNode.getAttribute('data-col-identifier');
697
- _.extend(colDef, this.columns[fieldName]);
703
+ extend(colDef, this.columns[fieldName]);
698
704
  if (!summaryRow) {
699
705
  this.customExprCompiledTl[fieldName + index] = rootNode;
700
706
  }
@@ -922,7 +928,7 @@ class TableComponent extends StylableComponent {
922
928
  if (this.gridOptions.isNavTypeScrollOrOndemand()) {
923
929
  this.actionRowIndex = parseInt(val);
924
930
  this.setDataGridOption('actionRowIndex', this.actionRowIndex);
925
- if (!_.isNaN(this.actionRowIndex)) {
931
+ if (!isNaN(this.actionRowIndex)) {
926
932
  this.actionRowPage = Math.floor(this.actionRowIndex / this.pagesize) + 1;
927
933
  this.setDataGridOption('actionRowPage', this.actionRowPage || this.gridOptions.actionRowPage);
928
934
  }
@@ -964,7 +970,7 @@ class TableComponent extends StylableComponent {
964
970
  clearForm: this.clearForm.bind(this),
965
971
  callLoadInlineWidgetData: () => {
966
972
  this.fullFieldDefs.forEach(col => {
967
- if (_.isUndefined(col.isDataSetBound)) {
973
+ if (isUndefined(col.isDataSetBound)) {
968
974
  triggerFn(col.loadInlineWidgetData && col.loadInlineWidgetData.bind(col));
969
975
  }
970
976
  });
@@ -1001,12 +1007,12 @@ class TableComponent extends StylableComponent {
1001
1007
  const listenersToRemove = [
1002
1008
  // Updates pagination, filter, sort etc options for service and crud variables
1003
1009
  this.app.subscribe('check-state-persistence-options', options => {
1004
- let dataSourceName = _.get(this.datasource, 'name');
1010
+ let dataSourceName = get(this.datasource, 'name');
1005
1011
  // in Prefabs, this.datasource is not resolved at the time of variable invocation, so additional check is required.
1006
1012
  if (!dataSourceName) {
1007
1013
  dataSourceName = extractDataSourceName(this.binddatasource);
1008
1014
  }
1009
- if (_.get(options, 'variable.name') !== dataSourceName) {
1015
+ if (get(options, 'variable.name') !== dataSourceName) {
1010
1016
  return;
1011
1017
  }
1012
1018
  if (this._pageLoad && this.getConfiguredState() !== 'none') {
@@ -1053,7 +1059,7 @@ class TableComponent extends StylableComponent {
1053
1059
  ngAfterContentInit() {
1054
1060
  super.ngAfterContentInit();
1055
1061
  this.headerConfig = this.headerConfig.filter(this.filterEmptyValues.bind(this));
1056
- _.remove(this.fieldDefs, f => f === undefined);
1062
+ remove(this.fieldDefs, f => f === undefined);
1057
1063
  const runModeInitialProperties = {
1058
1064
  showrowindex: 'showRowIndex',
1059
1065
  multiselect: 'multiselect',
@@ -1101,7 +1107,7 @@ class TableComponent extends StylableComponent {
1101
1107
  this.gridOptions.loadingdatamsg = this.loadingdatamsg;
1102
1108
  // When loadondemand property is enabled(deferload="true") and show is true, only the column titles of the datatable are rendered, the data(body of the datatable) is not at all rendered.
1103
1109
  // Because the griddata is setting before the datatable dom is rendered but we are sending empty data to the datatable.
1104
- if (!_.isEmpty(this.gridData)) {
1110
+ if (!isEmpty(this.gridData)) {
1105
1111
  this.gridOptions.data = getClonedObject(this.gridData);
1106
1112
  }
1107
1113
  this.gridOptions.messages = {
@@ -1110,7 +1116,7 @@ class TableComponent extends StylableComponent {
1110
1116
  this.datagridElement = $(this._tableElement.nativeElement);
1111
1117
  this.gridElement = this.$element;
1112
1118
  this.$element.css({ 'position': 'relative' });
1113
- _.forEach(runModeInitialProperties, (value, key) => {
1119
+ forEach(runModeInitialProperties, (value, key) => {
1114
1120
  if (isDefined(this[key])) {
1115
1121
  this.gridOptions[value] = (this[key] === 'true' || this[key] === true);
1116
1122
  }
@@ -1138,17 +1144,17 @@ class TableComponent extends StylableComponent {
1138
1144
  return mode && mode.toLowerCase();
1139
1145
  }
1140
1146
  handleStateParams(widgetState, options) {
1141
- if (_.get(widgetState, 'selectedItem')) {
1147
+ if (get(widgetState, 'selectedItem')) {
1142
1148
  this._selectedItemsExist = true;
1143
1149
  }
1144
1150
  options.options = options.options || {};
1145
- if (_.get(widgetState, 'pagination')) {
1151
+ if (get(widgetState, 'pagination')) {
1146
1152
  options.options.page = widgetState.pagination;
1147
- if (_.get(widgetState, 'sort')) {
1153
+ if (get(widgetState, 'sort')) {
1148
1154
  this.sortStateHandler(widgetState);
1149
- options.options.orderBy = _.get(widgetState, 'sort.field') + ' ' + _.get(widgetState, 'sort.direction');
1155
+ options.options.orderBy = get(widgetState, 'sort.field') + ' ' + get(widgetState, 'sort.direction');
1150
1156
  }
1151
- if (_.get(widgetState, 'search')) {
1157
+ if (get(widgetState, 'search')) {
1152
1158
  setTimeout(() => {
1153
1159
  this.searchStateHandler(widgetState);
1154
1160
  }, 500);
@@ -1157,15 +1163,15 @@ class TableComponent extends StylableComponent {
1157
1163
  }
1158
1164
  else {
1159
1165
  options.options.page = 1;
1160
- if (_.get(widgetState, 'search')) {
1166
+ if (get(widgetState, 'search')) {
1161
1167
  setTimeout(() => {
1162
1168
  this.searchStateHandler(widgetState);
1163
1169
  }, 500);
1164
1170
  options.options.filterFields = this.getFilterFields(widgetState.search);
1165
1171
  }
1166
- if (_.get(widgetState, 'sort')) {
1172
+ if (get(widgetState, 'sort')) {
1167
1173
  this.sortStateHandler(widgetState);
1168
- options.options.orderBy = _.get(widgetState, 'sort.field') + ' ' + _.get(widgetState, 'sort.direction');
1174
+ options.options.orderBy = get(widgetState, 'sort.field') + ' ' + get(widgetState, 'sort.direction');
1169
1175
  }
1170
1176
  }
1171
1177
  return options;
@@ -1179,17 +1185,17 @@ class TableComponent extends StylableComponent {
1179
1185
  }
1180
1186
  sortStateHandler(widgetState) {
1181
1187
  const $gridElement = this.datagridElement;
1182
- const $sortIcon = $gridElement.find('th[data-col-field="' + _.get(widgetState, 'sort.field') + '"] .sort-icon');
1183
- if (_.get(widgetState, 'sort.direction') === 'asc' && $sortIcon.length) {
1188
+ const $sortIcon = $gridElement.find('th[data-col-field="' + get(widgetState, 'sort.field') + '"] .sort-icon');
1189
+ if (get(widgetState, 'sort.direction') === 'asc' && $sortIcon.length) {
1184
1190
  $sortIcon.addClass('asc wi wi-long-arrow-up');
1185
1191
  }
1186
- else if (_.get(widgetState, 'sort.direction') === 'desc' && $sortIcon.length) {
1192
+ else if (get(widgetState, 'sort.direction') === 'desc' && $sortIcon.length) {
1187
1193
  $sortIcon.addClass('desc wi wi-long-arrow-down');
1188
1194
  }
1189
1195
  }
1190
1196
  searchStateHandler(widgetState) {
1191
- if (_.isArray(widgetState.search)) {
1192
- _.forEach(widgetState.search, (filterObj) => {
1197
+ if (isArray(widgetState.search)) {
1198
+ forEach(widgetState.search, (filterObj) => {
1193
1199
  if (this.rowFilter[filterObj.field]) {
1194
1200
  this.rowFilter[filterObj.field].value = filterObj.value;
1195
1201
  this.rowFilter[filterObj.field].matchMode = filterObj.matchMode;
@@ -1216,11 +1222,11 @@ class TableComponent extends StylableComponent {
1216
1222
  }
1217
1223
  // Compares the prevFilterCriteria Rules with the new rules
1218
1224
  compareFilterExpressions(prevFilters, newFilters) {
1219
- return !!((prevFilters.length === newFilters.length) && (_.isEqual(prevFilters, newFilters)));
1225
+ return !!((prevFilters.length === newFilters.length) && (isEqual(prevFilters, newFilters)));
1220
1226
  }
1221
1227
  // Set the table lastActionPerformed to Filter Criteria and maintain the prevFilterExpression
1222
1228
  setLastActionToFilterCriteria() {
1223
- this.prevFilterExpression = _.get(this.datasource, 'filterExpressions.rules') ? getClonedObject(this.datasource.filterExpressions.rules) : getClonedObject([].concat(this.datasource.dataBinding));
1229
+ this.prevFilterExpression = get(this.datasource, 'filterExpressions.rules') ? getClonedObject(this.datasource.filterExpressions.rules) : getClonedObject([].concat(this.datasource.dataBinding));
1224
1230
  this.gridOptions.setLastActionPerformed(this.gridOptions.ACTIONS.FILTER_CRITERIA);
1225
1231
  this.gridOptions.setIsSearchTrigerred(true);
1226
1232
  }
@@ -1234,8 +1240,8 @@ class TableComponent extends StylableComponent {
1234
1240
  }
1235
1241
  // Update the lastActionPerformed to Filter_Criteria, when there is change in the Variable filter criteria rules
1236
1242
  checkIfVarFiltersApplied() {
1237
- if (!_.isEmpty(_.get(this.datasource, 'filterExpressions.rules')) || !_.isEmpty(_.get(this.datasource, 'dataBinding'))) {
1238
- const currentFilterExpr = _.get(this.datasource, 'filterExpressions.rules') ? this.datasource.filterExpressions.rules : [].concat(this.datasource.dataBinding);
1243
+ if (!isEmpty(get(this.datasource, 'filterExpressions.rules')) || !isEmpty(get(this.datasource, 'dataBinding'))) {
1244
+ const currentFilterExpr = get(this.datasource, 'filterExpressions.rules') ? this.datasource.filterExpressions.rules : [].concat(this.datasource.dataBinding);
1239
1245
  const isEqual = this.compareFilterExpressions(this.prevFilterExpression, currentFilterExpr);
1240
1246
  if (!isEqual) {
1241
1247
  this.setLastActionToFilterCriteria();
@@ -1249,29 +1255,29 @@ class TableComponent extends StylableComponent {
1249
1255
  this.checkIfVarFiltersApplied();
1250
1256
  }
1251
1257
  // State handling for static variables
1252
- if (_.get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') {
1258
+ if (get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') {
1253
1259
  const widgetState = this.statePersistence.getWidgetState(this);
1254
1260
  this._pageLoad = false;
1255
- if (_.get(widgetState, 'selectedItem')) {
1261
+ if (get(widgetState, 'selectedItem')) {
1256
1262
  this._selectedItemsExist = true;
1257
1263
  }
1258
1264
  else {
1259
1265
  this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
1260
1266
  }
1261
- if (_.get(widgetState, 'search')) {
1267
+ if (get(widgetState, 'search')) {
1262
1268
  this.searchStateHandler(widgetState);
1263
1269
  this.searchSortHandler(widgetState.search, undefined, 'search', true);
1264
1270
  }
1265
- if (_.get(widgetState, 'sort')) {
1271
+ if (get(widgetState, 'sort')) {
1266
1272
  this.searchSortHandler(widgetState.sort, undefined, 'sort', true);
1267
1273
  this.sortStateHandler(widgetState);
1268
1274
  }
1269
- if (_.get(widgetState, 'pagination')) {
1275
+ if (get(widgetState, 'pagination')) {
1270
1276
  this.dataNavigator.pageChanged({ page: widgetState.pagination }, true);
1271
1277
  }
1272
1278
  }
1273
1279
  // After the setting the watch on navigator, dataset is triggered with undefined. In this case, return here.
1274
- if (this.dataNavigatorWatched && _.isUndefined(newVal) && this.__fullData) {
1280
+ if (this.dataNavigatorWatched && isUndefined(newVal) && this.__fullData) {
1275
1281
  return;
1276
1282
  }
1277
1283
  // If variable is in loading state, show loading icon
@@ -1305,7 +1311,7 @@ class TableComponent extends StylableComponent {
1305
1311
  else {
1306
1312
  this.resetPageNavigation();
1307
1313
  // If the dataset is undefined or empty or table is bound to static variable then set variableInflight to false inorder to update the status
1308
- if (newVal === '' || newVal === undefined || _.get(this.datasource, 'category') === 'wm.Variable') {
1314
+ if (newVal === '' || newVal === undefined || get(this.datasource, 'category') === 'wm.Variable') {
1309
1315
  this.variableInflight = false;
1310
1316
  }
1311
1317
  /*for run mode, disabling the loader and showing no data found message if dataset is not valid*/
@@ -1317,7 +1323,8 @@ class TableComponent extends StylableComponent {
1317
1323
  if (!this.isNavigationEnabled() && newVal) {
1318
1324
  this.checkFiltersApplied(this.getSortExpr());
1319
1325
  }
1320
- if (!_.isObject(newVal) || newVal === '' || (newVal && newVal.dataValue === '')) {
1326
+ // @ts-ignore
1327
+ if (!isObject(newVal) || newVal === '' || (newVal && newVal.dataValue === '')) {
1321
1328
  if (!this.variableInflight) {
1322
1329
  // If variable has finished loading and resultSet is empty, ender empty data
1323
1330
  this.setGridData([]);
@@ -1340,7 +1347,7 @@ class TableComponent extends StylableComponent {
1340
1347
  }
1341
1348
  addRowIndex(row) {
1342
1349
  const rowData = getClonedObject(row);
1343
- const rowIndex = _.indexOf(this.gridOptions.data, row);
1350
+ const rowIndex = indexOf(this.gridOptions.data, row);
1344
1351
  if (rowIndex < 0) {
1345
1352
  return row;
1346
1353
  }
@@ -1366,7 +1373,7 @@ class TableComponent extends StylableComponent {
1366
1373
  getClonedRowObject(rowData) {
1367
1374
  const row = getClonedObject(rowData);
1368
1375
  row.getProperty = field => {
1369
- return _.get(row, field);
1376
+ return get(row, field);
1370
1377
  };
1371
1378
  row.$isFirst = row.$index === 1;
1372
1379
  row.$isLast = this.gridData.length === row.$index;
@@ -1382,7 +1389,7 @@ class TableComponent extends StylableComponent {
1382
1389
  }
1383
1390
  else {
1384
1391
  // If grid is in edit mode or grid has data, dont show the no data message
1385
- if (!this.isGridEditMode && _.isEmpty(this.dataset)) {
1392
+ if (!this.isGridEditMode && isEmpty(this.dataset)) {
1386
1393
  this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
1387
1394
  }
1388
1395
  else {
@@ -1401,7 +1408,7 @@ class TableComponent extends StylableComponent {
1401
1408
  }
1402
1409
  clearForm(newRow) {
1403
1410
  const ctrls = this.ngform.controls;
1404
- _.keys(this.ngform.controls).forEach(key => {
1411
+ keys(this.ngform.controls).forEach(key => {
1405
1412
  // If new row, clear the controls in the new row. Else, clear the controls in edit row
1406
1413
  if (!key.endsWith('_filter') && ((key.endsWith('_new') && newRow) || (!key.endsWith('_new') && !newRow))) {
1407
1414
  ctrls[key].setValue('');
@@ -1453,7 +1460,7 @@ class TableComponent extends StylableComponent {
1453
1460
  const data = this.filternullrecords ? this.removeEmptyRecords(serverData) : serverData;
1454
1461
  // fix for [WMS-24012] set variableinflight flag to false for static variables
1455
1462
  // If the table is bound to some widget and not bound to any variable (ex: Table1.selectedItem) then set variableInflight to false
1456
- if (_.get(this.datasource, 'category') === 'wm.Variable' || _.get(this.datasource, 'category') === undefined) {
1463
+ if (get(this.datasource, 'category') === 'wm.Variable' || get(this.datasource, 'category') === undefined) {
1457
1464
  this.variableInflight = false;
1458
1465
  }
1459
1466
  if (!this.variableInflight) {
@@ -1471,7 +1478,7 @@ class TableComponent extends StylableComponent {
1471
1478
  return;
1472
1479
  }
1473
1480
  const option = {};
1474
- if (isDefined && (!_.isEqual(newVal, this.gridOptions[optionName]) || forceSet)) {
1481
+ if (isDefined && (!isEqual(newVal, this.gridOptions[optionName]) || forceSet)) {
1475
1482
  option[optionName] = newVal;
1476
1483
  this.datagridElement.datatable('option', option);
1477
1484
  this.gridOptions[optionName] = newVal;
@@ -1495,13 +1502,13 @@ class TableComponent extends StylableComponent {
1495
1502
  if (!this.fieldDefs.length) {
1496
1503
  return;
1497
1504
  }
1498
- rowActionCol = _.find(this.fullFieldDefs, { 'field': ROW_OPS_FIELD, type: 'custom' }); // Check if column is fetched from markup
1499
- _.remove(this.fieldDefs, { type: 'custom', field: ROW_OPS_FIELD }); // Removing operations column
1500
- _.remove(this.headerConfig, { field: rowOperationsColumn.field });
1505
+ rowActionCol = find(this.fullFieldDefs, { 'field': ROW_OPS_FIELD, type: 'custom' }); // Check if column is fetched from markup
1506
+ remove(this.fieldDefs, { type: 'custom', field: ROW_OPS_FIELD }); // Removing operations column
1507
+ remove(this.headerConfig, { field: rowOperationsColumn.field });
1501
1508
  /*Add the column for row operations only if at-least one operation has been enabled.*/
1502
1509
  if (this.rowActions.length) {
1503
1510
  if (rowActionCol) { // If column is present in markup, push the column or push the default column
1504
- insertPosition = rowActionCol.rowactionsposition ? _.toNumber(rowActionCol.rowactionsposition) : this.fieldDefs.length;
1511
+ insertPosition = rowActionCol.rowactionsposition ? toNumber(rowActionCol.rowactionsposition) : this.fieldDefs.length;
1505
1512
  this.fieldDefs.splice(insertPosition, 0, rowActionCol);
1506
1513
  if (insertPosition === 0) {
1507
1514
  this.headerConfig.unshift(config);
@@ -1530,15 +1537,15 @@ class TableComponent extends StylableComponent {
1530
1537
  if (isDefined(newVal)) {
1531
1538
  // Watch will not be triggered if dataset and new value are equal. So trigger the property change handler manually
1532
1539
  // This happens in case, if dataset is directly updated.
1533
- if (_.isEqual(this.dataset, newVal)) {
1540
+ if (isEqual(this.dataset, newVal)) {
1534
1541
  this.watchVariableDataSet(newVal);
1535
1542
  }
1536
1543
  else {
1537
- if (_.isArray(newVal)) {
1544
+ if (isArray(newVal)) {
1538
1545
  this.widget.dataset = [].concat(newVal);
1539
1546
  }
1540
- else if (_.isObject(newVal)) {
1541
- this.widget.dataset = _.extend({}, newVal);
1547
+ else if (isObject(newVal)) {
1548
+ this.widget.dataset = extend({}, newVal);
1542
1549
  }
1543
1550
  else {
1544
1551
  this.widget.dataset = newVal;
@@ -1618,7 +1625,7 @@ class TableComponent extends StylableComponent {
1618
1625
  if (this.getConfiguredState() !== 'none' && this._selectedItemsExist && serviceData.length) {
1619
1626
  const widgetState = this.statePersistence.getWidgetState(this);
1620
1627
  let currentPageItems;
1621
- if (_.get(widgetState, 'selectedItem')) {
1628
+ if (get(widgetState, 'selectedItem')) {
1622
1629
  currentPageItems = widgetState.selectedItem.filter(val => {
1623
1630
  return val.page === this.dataNavigator.dn.currentPage;
1624
1631
  });
@@ -1626,7 +1633,7 @@ class TableComponent extends StylableComponent {
1626
1633
  // if an item is already selected, don't trigger onSelect event for it again
1627
1634
  if (currentPageItems.length && this.selecteditem.length !== widgetState.selectedItem.length) {
1628
1635
  // don't reassign this.selecteditem if selected items already exist.
1629
- if (_.isArray(this.selecteditem)) {
1636
+ if (isArray(this.selecteditem)) {
1630
1637
  currentPageItems.forEach((item) => {
1631
1638
  this.selectItem(item.index, undefined);
1632
1639
  });
@@ -1643,15 +1650,15 @@ class TableComponent extends StylableComponent {
1643
1650
  this.fieldDefs = []; // empty the form fields
1644
1651
  // empty the filter field template refs.
1645
1652
  this.filterTmpl._results = [];
1646
- if (_.isEmpty(columns)) {
1653
+ if (isEmpty(columns)) {
1647
1654
  return;
1648
1655
  }
1649
1656
  let tmpl = '';
1650
1657
  columns.forEach(col => {
1651
1658
  let attrsTmpl = '';
1652
1659
  let customTmpl = '';
1653
- _.forEach(col, (val, key) => {
1654
- if (!_.isUndefined(val) && val !== '') {
1660
+ forEach(col, (val, key) => {
1661
+ if (!isUndefined(val) && val !== '') {
1655
1662
  // If custom expression is present, keep it inside table column. Else, keep as attribute
1656
1663
  if (key === 'customExpression') {
1657
1664
  customTmpl = val;
@@ -1690,7 +1697,7 @@ class TableComponent extends StylableComponent {
1690
1697
  /*call utility function to prepare fieldDefs for grid against given data (A MAX OF 10 COLUMNS ONLY)*/
1691
1698
  defaultFieldDefs = prepareFieldDefs(properties);
1692
1699
  /*append additional properties*/
1693
- _.forEach(defaultFieldDefs, columnDef => {
1700
+ forEach(defaultFieldDefs, columnDef => {
1694
1701
  columnDef.binding = columnDef.field;
1695
1702
  columnDef.caption = columnDef.displayName;
1696
1703
  columnDef.pcDisplay = true;
@@ -1712,7 +1719,7 @@ class TableComponent extends StylableComponent {
1712
1719
  this.invokeEventCallback('beforedatarender', { $data: data, $columns: this.columns, data: data, columns: this.columns });
1713
1720
  defaultFieldDefs = [];
1714
1721
  // Apply the changes made by the user
1715
- _.forEach(this.columns, val => {
1722
+ forEach(this.columns, val => {
1716
1723
  defaultFieldDefs.push(val);
1717
1724
  });
1718
1725
  this.generateDynamicColumns(defaultFieldDefs);
@@ -1722,11 +1729,11 @@ class TableComponent extends StylableComponent {
1722
1729
  /* check whether data is valid or not */
1723
1730
  const dataValid = data && !data.error;
1724
1731
  /*if the data is type json object, make it an array of the object*/
1725
- if (dataValid && !_.isArray(data)) {
1732
+ if (dataValid && !isArray(data)) {
1726
1733
  data = [data];
1727
1734
  }
1728
1735
  /* if the data is empty, show nodatamessage */
1729
- if (_.isEmpty(data)) {
1736
+ if (isEmpty(data)) {
1730
1737
  this.setGridData(data);
1731
1738
  return;
1732
1739
  }
@@ -1743,7 +1750,7 @@ class TableComponent extends StylableComponent {
1743
1750
  let pagingOptions;
1744
1751
  if (this.datasource && this.datasource.execute(DataSource.Operation.IS_PAGEABLE)) {
1745
1752
  pagingOptions = this.datasource.execute(DataSource.Operation.GET_PAGING_OPTIONS);
1746
- sortExp = _.isEmpty(pagingOptions) ? '' : getOrderByExpr(pagingOptions.sort);
1753
+ sortExp = isEmpty(pagingOptions) ? '' : getOrderByExpr(pagingOptions.sort);
1747
1754
  }
1748
1755
  return sortExp || '';
1749
1756
  }
@@ -1769,7 +1776,7 @@ class TableComponent extends StylableComponent {
1769
1776
  }
1770
1777
  // if table is inside list then table dataset will be set as "item.XXX" and there is no datasource.
1771
1778
  // So extracting datasource from the datset bound expression.
1772
- if (this.parentList && !this.datasource && _.startsWith(this.binddataset, 'item')) {
1779
+ if (this.parentList && !this.datasource && startsWith(this.binddataset, 'item')) {
1773
1780
  this.datasource = getDatasourceFromExpr(this.widget.$attrs.get('datasetboundexpr'), this);
1774
1781
  }
1775
1782
  if (this.gridOptions.isNavTypeScrollOrOndemand()) {
@@ -1786,7 +1793,7 @@ class TableComponent extends StylableComponent {
1786
1793
  }
1787
1794
  // for Static Variables with Retain State enabled, prevent Table from rendering more than once
1788
1795
  // Fix for [WMS-25284]: Render table that is inside list widget and bound to static Variable
1789
- if (!(_.get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') || (this.parentList && _.startsWith(this.binddataset, 'item'))) {
1796
+ if (!(get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') || (this.parentList && startsWith(this.binddataset, 'item'))) {
1790
1797
  this.watchVariableDataSet(nv);
1791
1798
  }
1792
1799
  break;
@@ -1837,7 +1844,7 @@ class TableComponent extends StylableComponent {
1837
1844
  this.exportOptions = [];
1838
1845
  if (nv) {
1839
1846
  // Populate options for export drop down menu
1840
- _.forEach(_.split(nv, ','), type => {
1847
+ forEach(split(nv, ','), type => {
1841
1848
  this.exportOptions.push({
1842
1849
  label: type,
1843
1850
  icon: exportIconMapping[type]
@@ -1847,7 +1854,7 @@ class TableComponent extends StylableComponent {
1847
1854
  break;
1848
1855
  case 'shownewrow':
1849
1856
  // Enable new row if shownew is true or addNewRow buton is present
1850
- enableNewRow = nv || _.some(this.actions, act => _.includes(act.action, 'addNewRow()'));
1857
+ enableNewRow = nv || some(this.actions, act => includes(act.action, 'addNewRow()'));
1851
1858
  this.callDataGridMethod('option', 'actionsEnabled.new', enableNewRow);
1852
1859
  break;
1853
1860
  case 'pagesize':
@@ -1902,11 +1909,11 @@ class TableComponent extends StylableComponent {
1902
1909
  populateActions() {
1903
1910
  this._actions.header = [];
1904
1911
  this._actions.footer = [];
1905
- _.forEach(this.actions, (action) => {
1906
- if (_.includes(action.position, 'header')) {
1912
+ forEach(this.actions, (action) => {
1913
+ if (includes(action.position, 'header')) {
1907
1914
  this._actions.header.push(action);
1908
1915
  }
1909
- if (_.includes(action.position, 'footer')) {
1916
+ if (includes(action.position, 'footer')) {
1910
1917
  this._actions.footer.push(action);
1911
1918
  }
1912
1919
  });
@@ -1975,9 +1982,9 @@ class TableComponent extends StylableComponent {
1975
1982
  if (data) {
1976
1983
  this.serverData = data;
1977
1984
  }
1978
- if (_.isObject(item)) {
1979
- item = _.omitBy(item, (value) => {
1980
- return _.isArray(value) && _.isEmpty(value);
1985
+ if (isObject(item)) {
1986
+ item = omitBy(item, (value) => {
1987
+ return isArray(value) && isEmpty(value);
1981
1988
  });
1982
1989
  }
1983
1990
  this.callDataGridMethod('selectRow', item, true);
@@ -1992,7 +1999,7 @@ class TableComponent extends StylableComponent {
1992
1999
  this.checkFiltersApplied(this.getSortExpr());
1993
2000
  if (this._isClientSearch) {
1994
2001
  data = getClonedObject(this.__fullData);
1995
- if (_.isObject(data) && !_.isArray(data)) {
2002
+ if (isObject(data) && !isArray(data)) {
1996
2003
  data = [data];
1997
2004
  }
1998
2005
  data = this.getSearchResult(data, this.filterInfo);
@@ -2008,7 +2015,7 @@ class TableComponent extends StylableComponent {
2008
2015
  }
2009
2016
  export($item) {
2010
2017
  let filterFields;
2011
- const sortOptions = _.isEmpty(this.sortInfo) ? '' : this.sortInfo.field + ' ' + this.sortInfo.direction;
2018
+ const sortOptions = isEmpty(this.sortInfo) ? '' : this.sortInfo.field + ' ' + this.sortInfo.direction;
2012
2019
  const columns = {};
2013
2020
  let isValid;
2014
2021
  let requestData;
@@ -2044,7 +2051,7 @@ class TableComponent extends StylableComponent {
2044
2051
  if (isValid === false) {
2045
2052
  return;
2046
2053
  }
2047
- requestData.fields = _.values(requestData.columns);
2054
+ requestData.fields = values(requestData.columns);
2048
2055
  this.datasource.execute(DataSource.Operation.DOWNLOAD, { data: requestData });
2049
2056
  }
2050
2057
  expandRow(rowId) {
@@ -2105,7 +2112,7 @@ class TableComponent extends StylableComponent {
2105
2112
  }
2106
2113
  ngOnDetach() {
2107
2114
  super.ngOnDetach();
2108
- if (_.get(this.datasource, 'category') === 'wm.Variable' && this.getConfiguredState() !== 'none') {
2115
+ if (get(this.datasource, 'category') === 'wm.Variable' && this.getConfiguredState() !== 'none') {
2109
2116
  this._pageLoad = false;
2110
2117
  }
2111
2118
  else {
@@ -2258,7 +2265,7 @@ class TableComponent extends StylableComponent {
2258
2265
  type: HostListener,
2259
2266
  args: ['keypress', ['$event']]
2260
2267
  }] }); })();
2261
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TableComponent, { className: "TableComponent", filePath: "table.component.ts", lineNumber: 109 }); })();
2268
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TableComponent, { className: "TableComponent", filePath: "table.component.ts", lineNumber: 122 }); })();
2262
2269
 
2263
2270
  const OPERATION = {
2264
2271
  'NEW': 'new',
@@ -2380,23 +2387,23 @@ class TableCUDDirective {
2380
2387
  generatePath(binddataset) {
2381
2388
  let path, index;
2382
2389
  let dataBoundExpr = this.table.widget.$attrs.get('datasetboundexpr');
2383
- if (_.startsWith(binddataset, 'item') && dataBoundExpr) {
2384
- if (_.startsWith(dataBoundExpr, 'Widgets.')) {
2390
+ if (startsWith(binddataset, 'item') && dataBoundExpr) {
2391
+ if (startsWith(dataBoundExpr, 'Widgets.')) {
2385
2392
  dataBoundExpr = extractCurrentItemExpr(dataBoundExpr, this.table);
2386
2393
  }
2387
2394
  const parentListItems = this.table.$element.parents('.app-list-item');
2388
- const indexArr = _.map(parentListItems, (item) => _.parseInt($(item).attr('listitemindex')));
2395
+ const indexArr = map(parentListItems, (item) => parseInt$1($(item).attr('listitemindex')));
2389
2396
  for (let i = indexArr.length - 1; i >= 0; i--) {
2390
2397
  dataBoundExpr = dataBoundExpr.replace('$i', indexArr[i]);
2391
2398
  }
2392
- index = _.last(indexArr);
2399
+ index = last(indexArr);
2393
2400
  path = dataBoundExpr.replace(/^Variables\..*\.dataSet([^.])*(\.|$)/g, '');
2394
2401
  }
2395
2402
  else {
2396
2403
  // if we have dataset as "Variables.staticVar1.dataSet[1].details" then pass index as 1.
2397
2404
  const regEx = /^Variables\..*\.dataSet([\[][0-9]])/g;
2398
2405
  if (regEx.test(binddataset)) {
2399
- index = _.parseInt(binddataset.replace(/^Variables\..*\.dataSet([\[])/g, ''));
2406
+ index = parseInt$1(binddataset.replace(/^Variables\..*\.dataSet([\[])/g, ''));
2400
2407
  }
2401
2408
  path = binddataset.replace(/^Variables\..*\.dataSet([^.])*(\.|$)/g, '');
2402
2409
  }
@@ -2737,12 +2744,12 @@ const getSearchValue = (value, type) => {
2737
2744
  return undefined;
2738
2745
  }
2739
2746
  if (isNumberType(type)) {
2740
- return _.toNumber(value);
2747
+ return toNumber(value);
2741
2748
  }
2742
2749
  if (type === DataType.DATETIME) {
2743
2750
  return moment(value).valueOf();
2744
2751
  }
2745
- return _.toString(value).toLowerCase();
2752
+ return toString(value).toLowerCase();
2746
2753
  };
2747
2754
  // Filter the data based on the search value and conditions
2748
2755
  const getFilteredData = (data, searchObj, visibleCols = []) => {
@@ -2751,26 +2758,27 @@ const getFilteredData = (data, searchObj, visibleCols = []) => {
2751
2758
  // Return whole data if
2752
2759
  // - search value is undefined and matchmode is not an empty matchmode type
2753
2760
  // - search value is null and datatype is number. Null can not be compared with numeric values[WMS-19275].
2754
- if ((!isDefined(searchVal) && !_.includes(emptyMatchModes, searchObj.matchMode)) || (isNumberType(searchObj.type) && _.isNull(searchObj.value))) {
2761
+ if ((!isDefined(searchVal) && !includes(emptyMatchModes, searchObj.matchMode)) || (isNumberType(searchObj.type) && isNull(searchObj.value))) {
2755
2762
  return data;
2756
2763
  }
2757
2764
  data = data.filter((obj) => {
2758
2765
  let isExists;
2759
2766
  if (searchObj.field) {
2760
- currentVal = getSearchValue(_.get(obj, searchObj.field), searchObj.type);
2767
+ currentVal = getSearchValue(get(obj, searchObj.field), searchObj.type);
2761
2768
  }
2762
2769
  else {
2763
2770
  currentVal = [];
2764
- _.forEach(obj, (val, key) => {
2765
- if ((_.includes(visibleCols, key))) {
2771
+ forEach(obj, (val, key) => {
2772
+ if ((includes(visibleCols, key))) {
2766
2773
  currentVal.push(val);
2767
2774
  }
2768
2775
  else {
2769
2776
  // WMS-22271 If the key is in nested key format (dot format)
2770
2777
  // Find all the indexes of the key in visiblecols and extract their values from obj
2771
- const colIndex = _.filter(_.range(visibleCols.length), (i) => visibleCols[i].includes(key));
2772
- _.forEach(colIndex, (index) => {
2773
- const value = _.get(obj, visibleCols[index]);
2778
+ const colIndex = filter(range(visibleCols.length), (i) => visibleCols[i].includes(key));
2779
+ forEach(colIndex, (index) => {
2780
+ // @ts-ignore
2781
+ const value = get(obj, visibleCols[index]);
2774
2782
  if (currentVal.indexOf(value) < 0) {
2775
2783
  currentVal.push(value);
2776
2784
  }
@@ -2781,31 +2789,31 @@ const getFilteredData = (data, searchObj, visibleCols = []) => {
2781
2789
  }
2782
2790
  switch (searchObj.matchMode) {
2783
2791
  case 'start':
2784
- isExists = _.startsWith(currentVal, searchVal);
2792
+ isExists = startsWith(currentVal, searchVal);
2785
2793
  break;
2786
2794
  case 'end':
2787
- isExists = _.endsWith(currentVal, searchVal);
2795
+ isExists = endsWith(currentVal, searchVal);
2788
2796
  break;
2789
2797
  case 'exact':
2790
- isExists = _.isEqual(currentVal, searchVal);
2798
+ isExists = isEqual(currentVal, searchVal);
2791
2799
  break;
2792
2800
  case 'notequals':
2793
- isExists = !_.isEqual(currentVal, searchVal);
2801
+ isExists = !isEqual(currentVal, searchVal);
2794
2802
  break;
2795
2803
  case 'null':
2796
- isExists = _.isNull(currentVal);
2804
+ isExists = isNull(currentVal);
2797
2805
  break;
2798
2806
  case 'isnotnull':
2799
- isExists = !_.isNull(currentVal);
2807
+ isExists = !isNull(currentVal);
2800
2808
  break;
2801
2809
  case 'empty':
2802
- isExists = _.isEmpty(currentVal);
2810
+ isExists = isEmpty(currentVal);
2803
2811
  break;
2804
2812
  case 'isnotempty':
2805
- isExists = !_.isEmpty(currentVal);
2813
+ isExists = !isEmpty(currentVal);
2806
2814
  break;
2807
2815
  case 'nullorempty':
2808
- isExists = _.isNull(currentVal) || _.isEmpty(currentVal);
2816
+ isExists = isNull(currentVal) || isEmpty(currentVal);
2809
2817
  break;
2810
2818
  case 'lessthan':
2811
2819
  isExists = currentVal < searchVal;
@@ -2820,7 +2828,7 @@ const getFilteredData = (data, searchObj, visibleCols = []) => {
2820
2828
  isExists = currentVal >= searchVal;
2821
2829
  break;
2822
2830
  default:
2823
- isExists = isNumberType(searchObj.type) ? _.isEqual(currentVal, searchVal) : _.includes(currentVal, searchVal);
2831
+ isExists = isNumberType(searchObj.type) ? isEqual(currentVal, searchVal) : includes(currentVal, searchVal);
2824
2832
  break;
2825
2833
  }
2826
2834
  return isExists;
@@ -2905,13 +2913,13 @@ class TableFilterSortDirective {
2905
2913
  // Get first or last page based on sort info of primary key
2906
2914
  getNavigationTargetBySortInfo() {
2907
2915
  return this.table.sortInfo && this.table.sortInfo.direction === 'desc' &&
2908
- _.includes(this.table.primaryKey, this.table.sortInfo.field) ? 'first' : 'last';
2916
+ includes(this.table.primaryKey, this.table.sortInfo.field) ? 'first' : 'last';
2909
2917
  }
2910
2918
  // Returns all the columns of the table wherein, showinfilter is set to true
2911
2919
  getTableVisibleCols() {
2912
2920
  const visibleCols = [];
2913
- _.forEach(this.table.columns, (val, col) => {
2914
- if (_.toLower(_.toString(val.showinfilter)) === 'true' && col !== 'rowOperations' && val.searchable) {
2921
+ forEach(this.table.columns, (val, col) => {
2922
+ if (toLower(toString(val.showinfilter)) === 'true' && col !== 'rowOperations' && val.searchable) {
2915
2923
  visibleCols.push(col);
2916
2924
  }
2917
2925
  });
@@ -2922,7 +2930,7 @@ class TableFilterSortDirective {
2922
2930
  if (searchObj.field) {
2923
2931
  setFilterFields(filterFields, searchObj);
2924
2932
  }
2925
- else if (!_.isEmpty(searchObj)) {
2933
+ else if (!isEmpty(searchObj)) {
2926
2934
  const visibleCols = this.getTableVisibleCols();
2927
2935
  setFilterFields(filterFields, searchObj, visibleCols);
2928
2936
  }
@@ -2931,8 +2939,8 @@ class TableFilterSortDirective {
2931
2939
  getFilterFields(searchObj) {
2932
2940
  searchObj = searchObj || {};
2933
2941
  const filterFields = {};
2934
- if (_.isArray(searchObj)) {
2935
- _.forEach(searchObj, obj => {
2942
+ if (isArray(searchObj)) {
2943
+ forEach(searchObj, obj => {
2936
2944
  this.invokeSetFilterfieldBasedOnFieldval(obj, filterFields);
2937
2945
  });
2938
2946
  }
@@ -2953,11 +2961,11 @@ class TableFilterSortDirective {
2953
2961
  // Reset the sort based on sort returned by the call
2954
2962
  resetSortStatus(variableSort) {
2955
2963
  let gridSortString;
2956
- if (!_.isEmpty(this.table.sortInfo) && this.table.datasource) {
2964
+ if (!isEmpty(this.table.sortInfo) && this.table.datasource) {
2957
2965
  gridSortString = this.table.sortInfo.field + ' ' + this.table.sortInfo.direction;
2958
2966
  variableSort = this.table.datasource.execute(DataSource.Operation.GET_OPTIONS).orderBy || variableSort;
2959
2967
  if (variableSort) { // If multiple order by fields are present, compare with the first one
2960
- variableSort = _.head(_.split(variableSort, ','));
2968
+ variableSort = head(split(variableSort, ','));
2961
2969
  }
2962
2970
  if (gridSortString !== variableSort) {
2963
2971
  this.table.callDataGridMethod('resetSortIcons');
@@ -2995,7 +3003,7 @@ class TableFilterSortDirective {
2995
3003
  return;
2996
3004
  }
2997
3005
  if (this.table.datasource.execute(DataSource.Operation.SUPPORTS_SERVER_FILTER)) {
2998
- if (_.isEmpty(this.table.datasource.execute(DataSource.Operation.GET_OPTIONS).filterFields)) {
3006
+ if (isEmpty(this.table.datasource.execute(DataSource.Operation.GET_OPTIONS).filterFields)) {
2999
3007
  this.clearFilter(true);
3000
3008
  }
3001
3009
  this.resetSortStatus(variableSort);
@@ -3011,7 +3019,7 @@ class TableFilterSortDirective {
3011
3019
  if (!searchObj) {
3012
3020
  return data;
3013
3021
  }
3014
- if (_.isArray(searchObj)) {
3022
+ if (isArray(searchObj)) {
3015
3023
  searchObj.forEach((obj) => {
3016
3024
  data = getFilteredData(data, obj, visibleCols);
3017
3025
  });
@@ -3024,7 +3032,7 @@ class TableFilterSortDirective {
3024
3032
  // Returns data sorted using sortObj
3025
3033
  getSortResult(data, sortObj) {
3026
3034
  if (sortObj && sortObj.direction) {
3027
- data = _.orderBy(data, sortObj.field, sortObj.direction);
3035
+ data = orderBy(data, sortObj.field, sortObj.direction);
3028
3036
  }
3029
3037
  return data;
3030
3038
  }
@@ -3039,7 +3047,7 @@ class TableFilterSortDirective {
3039
3047
  else {
3040
3048
  this.table.sortInfo = searchSortObj;
3041
3049
  }
3042
- if (_.isObject(data) && !_.isArray(data)) {
3050
+ if (isObject(data) && !isArray(data)) {
3043
3051
  data = [data];
3044
3052
  }
3045
3053
  /*Both the functions return same 'data' if arguments are undefined*/
@@ -3071,9 +3079,9 @@ class TableFilterSortDirective {
3071
3079
  this.table.filterInfo = searchObj;
3072
3080
  data = this.getSearchResult(data, searchObj);
3073
3081
  // Compared the filtered data and original data, to show or hide the rows
3074
- _.forEach(this.table.gridData, (value, index) => {
3082
+ forEach(this.table.gridData, (value, index) => {
3075
3083
  const $row = $($rows[index]);
3076
- if (_.find(data, obj => _.isEqual(obj, value))) {
3084
+ if (find(data, obj => isEqual(obj, value))) {
3077
3085
  $row.show();
3078
3086
  }
3079
3087
  else {
@@ -3144,7 +3152,7 @@ class TableFilterSortDirective {
3144
3152
  }
3145
3153
  searchHandler(searchSortObj, e, type, statePersistenceTriggered) {
3146
3154
  let obj;
3147
- if (_.isArray(searchSortObj)) {
3155
+ if (isArray(searchSortObj)) {
3148
3156
  obj = searchSortObj.filter(function (searchObject) {
3149
3157
  return (searchObject.matchMode !== undefined && searchObject.value !== undefined) || (searchObject.value !== undefined && searchObject.field === '');
3150
3158
  });
@@ -3153,7 +3161,7 @@ class TableFilterSortDirective {
3153
3161
  obj = { field: searchSortObj.field, value: searchSortObj.value, type: searchSortObj.type };
3154
3162
  }
3155
3163
  if (this.table.getConfiguredState() !== 'none' && unsupportedStatePersistenceTypes.indexOf(this.table.navigation) < 0) {
3156
- if ((_.isArray(searchSortObj) && obj.length) || (searchSortObj.value)) {
3164
+ if ((isArray(searchSortObj) && obj.length) || (searchSortObj.value)) {
3157
3165
  this.table.statePersistence.removeWidgetState(this.table, 'search');
3158
3166
  this.table.statePersistence.setWidgetState(this.table, { search: obj });
3159
3167
  }
@@ -3176,7 +3184,7 @@ class TableFilterSortDirective {
3176
3184
  let output;
3177
3185
  const userFilters = {};
3178
3186
  // Transform filter fields from array to object having field names as keys
3179
- if (_.isArray(filterFields)) {
3187
+ if (isArray(filterFields)) {
3180
3188
  filterFields.forEach(filterField => {
3181
3189
  transformFilterField(userFilters, filterField);
3182
3190
  });
@@ -3191,9 +3199,9 @@ class TableFilterSortDirective {
3191
3199
  }
3192
3200
  filterFields = [];
3193
3201
  // if the field is not selected in search filter dropdown, building the filter fields object
3194
- if (_.isEmpty(userFilters) && !_.isEmpty(obj)) {
3195
- if (_.isArray(obj)) {
3196
- _.forEach(obj, searchObj => {
3202
+ if (isEmpty(userFilters) && !isEmpty(obj)) {
3203
+ if (isArray(obj)) {
3204
+ forEach(obj, searchObj => {
3197
3205
  addToFilterFields(filterFields, searchObj);
3198
3206
  });
3199
3207
  }
@@ -3203,13 +3211,9 @@ class TableFilterSortDirective {
3203
3211
  }
3204
3212
  else {
3205
3213
  // Transform back the filter fields from object to array
3206
- _.forEach(userFilters, (val, key) => {
3207
- filterFields.push({
3208
- field: key,
3209
- matchMode: val.matchMode,
3210
- type: val.type,
3211
- value: val.value
3212
- });
3214
+ forEach(userFilters, (val, key) => {
3215
+ // @ts-ignore
3216
+ filterFields.push({ field: key, matchMode: val.matchMode, type: val.type, value: val.value });
3213
3217
  });
3214
3218
  }
3215
3219
  if (dataSource && dataSource.execute(DataSource.Operation.SUPPORTS_SERVER_FILTER)) {
@@ -3287,7 +3291,7 @@ class TableFilterSortDirective {
3287
3291
  this.table.rowFilter[fieldName] = this.table.rowFilter[fieldName] || {};
3288
3292
  this.table.rowFilter[fieldName].matchMode = condition;
3289
3293
  // For empty match modes, clear off the value and call filter
3290
- if (_.includes(this.table.emptyMatchModes, condition)) {
3294
+ if (includes(this.table.emptyMatchModes, condition)) {
3291
3295
  this.table.columns[fieldName].resetFilter();
3292
3296
  this.table.onRowFilterChange();
3293
3297
  }
@@ -3310,10 +3314,10 @@ class TableFilterSortDirective {
3310
3314
  }
3311
3315
  const fieldName = filterDef.field;
3312
3316
  const formFields = this.table.fullFieldDefs;
3313
- const filterOnFields = _.filter(formFields, { 'filteronfilter': fieldName });
3314
- const newVal = _.get(this.table.rowFilter, [fieldName, 'value']);
3317
+ const filterOnFields = filter(formFields, { 'filteronfilter': fieldName });
3318
+ const newVal = get(this.table.rowFilter, [fieldName, 'value']);
3315
3319
  // Loop over the fields for which the current field is filter on field
3316
- _.forEach(filterOnFields, filterField => {
3320
+ forEach(filterOnFields, filterField => {
3317
3321
  const filterOn = filterField.filteronfilter;
3318
3322
  const filterKey = filterField.field;
3319
3323
  const filterFields = {};
@@ -3338,13 +3342,13 @@ class TableFilterSortDirective {
3338
3342
  // This method is triggered on value change in multi column filter
3339
3343
  onRowFilterChange(fieldName) {
3340
3344
  const searchObj = [];
3341
- const field = _.find(this.table.fullFieldDefs, { 'field': fieldName });
3345
+ const field = find(this.table.fullFieldDefs, { 'field': fieldName });
3342
3346
  // Convert row filters to a search object and call search handler
3343
- _.forEach(this.table.rowFilter, (value, key) => {
3344
- if ((isDefined(value.value) && value.value !== '') || _.includes(this.table.emptyMatchModes, value.matchMode)) {
3347
+ forEach(this.table.rowFilter, (value, key) => {
3348
+ if ((isDefined(value.value) && value.value !== '') || includes(this.table.emptyMatchModes, value.matchMode)) {
3345
3349
  if (field && key === field.field) {
3346
3350
  value.type = value.type || field.type;
3347
- value.matchMode = value.matchMode || _.get(this.table.matchModeTypesMap[value.type], 0);
3351
+ value.matchMode = value.matchMode || get(this.table.matchModeTypesMap[value.type], 0);
3348
3352
  }
3349
3353
  searchObj.push({
3350
3354
  field: key,
@@ -3429,7 +3433,7 @@ class TableActionDirective extends BaseComponent {
3429
3433
  show: this.show,
3430
3434
  class: this.class || '',
3431
3435
  iconclass: this.iconclass || '',
3432
- title: _.isUndefined(this.title) ? (this['display-name'] || '') : this.title,
3436
+ title: isUndefined(this.title) ? (this['display-name'] || '') : this.title,
3433
3437
  action: this.action,
3434
3438
  accessroles: this.accessroles,
3435
3439
  shortcutkey: this.shortcutkey,
@@ -3691,22 +3695,22 @@ class TableColumnDirective extends BaseComponent {
3691
3695
  this.observeOnFields = [];
3692
3696
  this.aggregate = {
3693
3697
  sum: () => {
3694
- return _.sum(this._getColumnData());
3698
+ return sum(this._getColumnData());
3695
3699
  },
3696
3700
  average: (precision = 2) => {
3697
- return _.round(_.mean(this._getColumnData()), precision);
3701
+ return round(mean(this._getColumnData()), precision);
3698
3702
  },
3699
3703
  count: () => {
3700
3704
  return this._getColumnData().length;
3701
3705
  },
3702
3706
  minimum: () => {
3703
- return _.min(this._getColumnData());
3707
+ return min(this._getColumnData());
3704
3708
  },
3705
3709
  maximum: () => {
3706
- return _.max(this._getColumnData());
3710
+ return max(this._getColumnData());
3707
3711
  },
3708
3712
  percent: (value, precision = 2) => {
3709
- return _.round((_.sum(this._getColumnData()) / value) * 100, precision);
3713
+ return round((sum(this._getColumnData()) / value) * 100, precision);
3710
3714
  }
3711
3715
  };
3712
3716
  this.notifyForFields = [];
@@ -3963,7 +3967,7 @@ class TableColumnDirective extends BaseComponent {
3963
3967
  if (this.relatedEntityName) {
3964
3968
  this.widget['is-related'] = true;
3965
3969
  this.widget['lookup-type'] = this.relatedEntityName;
3966
- this.widget['lookup-field'] = _.last(_.split(this.field, '.'));
3970
+ this.widget['lookup-field'] = last(split(this.field, '.'));
3967
3971
  }
3968
3972
  if (this.filterwidget === FormWidgetType.AUTOCOMPLETE) {
3969
3973
  this.filterInstance.dataoptions = getDistinctFieldProperties(this.table.datasource, this);
@@ -3990,11 +3994,11 @@ class TableColumnDirective extends BaseComponent {
3990
3994
  if (this['related-entity-name'] && this['primary-key']) {
3991
3995
  // Fetch the data for the related fields
3992
3996
  this.isDataSetBound = true;
3993
- const bindings = _.split(this.binding, '.');
3997
+ const bindings = split(this.binding, '.');
3994
3998
  this.showPendingSpinner = true;
3995
3999
  fetchRelatedFieldData(dataSource, this.widget, {
3996
- relatedField: _.head(bindings),
3997
- datafield: _.last(bindings),
4000
+ relatedField: head(bindings),
4001
+ datafield: last(bindings),
3998
4002
  widget: 'edit-widget-type'
3999
4003
  });
4000
4004
  }
@@ -4023,7 +4027,7 @@ class TableColumnDirective extends BaseComponent {
4023
4027
  this.filterInstance.registerReadyStateListener(() => {
4024
4028
  if (isDataSetWidget(this.filterwidget)) {
4025
4029
  // if binding is department.deptId then field will be deptId
4026
- const field = _.last(this.binding.split('.'));
4030
+ const field = last(this.binding.split('.'));
4027
4031
  this.filterInstance.dataset = this._filterDataSet;
4028
4032
  this.filterInstance.datafield = this.filterdatafield || field;
4029
4033
  this.filterInstance.displayfield = this.filterdisplayfield || field;
@@ -4040,7 +4044,7 @@ class TableColumnDirective extends BaseComponent {
4040
4044
  }
4041
4045
  // Notifies all the dependent validation controls incase of any changes
4042
4046
  notifyChanges(quickEdit) {
4043
- _.forEach(this.notifyForFields, field => {
4047
+ forEach(this.notifyForFields, field => {
4044
4048
  if (quickEdit && this._isNewEditableRow) {
4045
4049
  field.fieldValidations_new.validate();
4046
4050
  }
@@ -4051,7 +4055,7 @@ class TableColumnDirective extends BaseComponent {
4051
4055
  }
4052
4056
  // Watches control for dependent validation changes
4053
4057
  observeOn(fields) {
4054
- this.observeOnFields = _.cloneDeep(fields);
4058
+ this.observeOnFields = cloneDeep(fields);
4055
4059
  }
4056
4060
  // Sets the default validators inline and quickedit new row using props
4057
4061
  setUpValidators() {
@@ -4062,11 +4066,11 @@ class TableColumnDirective extends BaseComponent {
4062
4066
  }
4063
4067
  // Sets the Async validators on the inline and quickedit new row form control
4064
4068
  setAsyncValidators(validators) {
4065
- this.asyncValidators = _.cloneDeep(validators);
4069
+ this.asyncValidators = cloneDeep(validators);
4066
4070
  }
4067
4071
  // Sets the default/custom validators on the inline and quickedit new row form control
4068
4072
  setValidators(validators) {
4069
- this.syncValidators = _.cloneDeep(validators);
4073
+ this.syncValidators = cloneDeep(validators);
4070
4074
  }
4071
4075
  boundFn(fn) {
4072
4076
  return fn();
@@ -4081,7 +4085,7 @@ class TableColumnDirective extends BaseComponent {
4081
4085
  this._invokeSummaryRowData(newData);
4082
4086
  }
4083
4087
  _invokeSummaryRowData(data) {
4084
- _.forEach(data, (item, index) => {
4088
+ forEach(data, (item, index) => {
4085
4089
  const content = item;
4086
4090
  if (content instanceof Promise) {
4087
4091
  content.then(res => {
@@ -4099,7 +4103,7 @@ class TableColumnDirective extends BaseComponent {
4099
4103
  });
4100
4104
  }
4101
4105
  _getColumnData() {
4102
- return _.map(this.table.dataset, this.binding);
4106
+ return map(this.table.dataset, this.binding);
4103
4107
  }
4104
4108
  /* Summary Row Logic end */
4105
4109
  // Set the props on the inline edit widget
@@ -4149,7 +4153,7 @@ class TableColumnDirective extends BaseComponent {
4149
4153
  this.limit = this.limit ? +this.limit : undefined;
4150
4154
  this.editWidgetType = this['edit-widget-type'] = this['edit-widget-type'] || getEditModeWidget(this);
4151
4155
  this.filterOn = this['filter-on'];
4152
- this.readonly = isDefined(this.getAttr('readonly')) ? this.getAttr('readonly') === 'true' : (this['related-entity-name'] ? !this['primary-key'] : _.includes(['identity', 'uniqueid', 'sequence'], this.generator));
4156
+ this.readonly = isDefined(this.getAttr('readonly')) ? this.getAttr('readonly') === 'true' : (this['related-entity-name'] ? !this['primary-key'] : includes(['identity', 'uniqueid', 'sequence'], this.generator));
4153
4157
  this.filterwidget = this.filterwidget || getDataTableFilterWidget(this.type || 'string');
4154
4158
  this.isFilterDataSetBound = !!this.bindfilterdataset;
4155
4159
  this.defaultvalue = getDefaultValue(this.defaultvalue, this.type, this.editWidgetType);
@@ -4380,7 +4384,7 @@ class TableRowActionDirective extends BaseComponent {
4380
4384
  contexts[0].addNewRow = (evt) => this.table.addNewRow(evt);
4381
4385
  }
4382
4386
  getTitle() {
4383
- return _.isUndefined(this.title) ? (this['display-name'] || '') : this.title;
4387
+ return isUndefined(this.title) ? (this['display-name'] || '') : this.title;
4384
4388
  }
4385
4389
  populateAction() {
4386
4390
  this.buttonDef = {