@wavemaker-ai/app-ng-runtime 1.0.0-rc.309

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 (1846) hide show
  1. package/build-task/.npmignore +2 -0
  2. package/build-task/bundles/index.umd.js +3060 -0
  3. package/build-task/fesm2022/index.mjs +2949 -0
  4. package/build-task/fesm2022/index.mjs.map +1 -0
  5. package/build-task/index.d.ts +882 -0
  6. package/build-task/package.json +23 -0
  7. package/components/advanced/carousel/.npmignore +2 -0
  8. package/components/advanced/carousel/bundles/index.umd.js +352 -0
  9. package/components/advanced/carousel/fesm2022/index.mjs +335 -0
  10. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -0
  11. package/components/advanced/carousel/index.d.ts +89 -0
  12. package/components/advanced/carousel/package.json +18 -0
  13. package/components/advanced/custom/.npmignore +2 -0
  14. package/components/advanced/custom/bundles/index.umd.js +258 -0
  15. package/components/advanced/custom/fesm2022/index.mjs +244 -0
  16. package/components/advanced/custom/fesm2022/index.mjs.map +1 -0
  17. package/components/advanced/custom/index.d.ts +50 -0
  18. package/components/advanced/custom/package.json +18 -0
  19. package/components/advanced/login/.npmignore +2 -0
  20. package/components/advanced/login/bundles/index.umd.js +135 -0
  21. package/components/advanced/login/fesm2022/index.mjs +120 -0
  22. package/components/advanced/login/fesm2022/index.mjs.map +1 -0
  23. package/components/advanced/login/index.d.ts +34 -0
  24. package/components/advanced/login/package.json +18 -0
  25. package/components/advanced/marquee/.npmignore +2 -0
  26. package/components/advanced/marquee/bundles/index.umd.js +71 -0
  27. package/components/advanced/marquee/fesm2022/index.mjs +53 -0
  28. package/components/advanced/marquee/fesm2022/index.mjs.map +1 -0
  29. package/components/advanced/marquee/index.d.ts +12 -0
  30. package/components/advanced/marquee/package.json +18 -0
  31. package/components/base/.npmignore +2 -0
  32. package/components/base/bundles/index.umd.js +6055 -0
  33. package/components/base/fesm2022/index.mjs +5931 -0
  34. package/components/base/fesm2022/index.mjs.map +1 -0
  35. package/components/base/index.d.ts +1436 -0
  36. package/components/base/package.json +26 -0
  37. package/components/basic/anchor/.npmignore +2 -0
  38. package/components/basic/anchor/bundles/index.umd.js +204 -0
  39. package/components/basic/anchor/fesm2022/index.mjs +187 -0
  40. package/components/basic/anchor/fesm2022/index.mjs.map +1 -0
  41. package/components/basic/anchor/index.d.ts +40 -0
  42. package/components/basic/anchor/package.json +18 -0
  43. package/components/basic/audio/.npmignore +2 -0
  44. package/components/basic/audio/bundles/index.umd.js +83 -0
  45. package/components/basic/audio/fesm2022/index.mjs +65 -0
  46. package/components/basic/audio/fesm2022/index.mjs.map +1 -0
  47. package/components/basic/audio/index.d.ts +23 -0
  48. package/components/basic/audio/package.json +18 -0
  49. package/components/basic/html/.npmignore +2 -0
  50. package/components/basic/html/bundles/index.umd.js +122 -0
  51. package/components/basic/html/fesm2022/index.mjs +105 -0
  52. package/components/basic/html/fesm2022/index.mjs.map +1 -0
  53. package/components/basic/html/index.d.ts +17 -0
  54. package/components/basic/html/package.json +18 -0
  55. package/components/basic/icon/.npmignore +2 -0
  56. package/components/basic/icon/bundles/index.umd.js +80 -0
  57. package/components/basic/icon/fesm2022/index.mjs +62 -0
  58. package/components/basic/icon/fesm2022/index.mjs.map +1 -0
  59. package/components/basic/icon/index.d.ts +18 -0
  60. package/components/basic/icon/package.json +18 -0
  61. package/components/basic/iframe/.npmignore +2 -0
  62. package/components/basic/iframe/bundles/index.umd.js +101 -0
  63. package/components/basic/iframe/fesm2022/index.mjs +84 -0
  64. package/components/basic/iframe/fesm2022/index.mjs.map +1 -0
  65. package/components/basic/iframe/index.d.ts +29 -0
  66. package/components/basic/iframe/package.json +18 -0
  67. package/components/basic/label/.npmignore +2 -0
  68. package/components/basic/label/bundles/index.umd.js +129 -0
  69. package/components/basic/label/fesm2022/index.mjs +113 -0
  70. package/components/basic/label/fesm2022/index.mjs.map +1 -0
  71. package/components/basic/label/index.d.ts +15 -0
  72. package/components/basic/label/package.json +18 -0
  73. package/components/basic/picture/.npmignore +2 -0
  74. package/components/basic/picture/bundles/index.umd.js +138 -0
  75. package/components/basic/picture/fesm2022/index.mjs +121 -0
  76. package/components/basic/picture/fesm2022/index.mjs.map +1 -0
  77. package/components/basic/picture/index.d.ts +22 -0
  78. package/components/basic/picture/package.json +18 -0
  79. package/components/basic/progress/progress-bar/.npmignore +2 -0
  80. package/components/basic/progress/progress-bar/bundles/index.umd.js +170 -0
  81. package/components/basic/progress/progress-bar/fesm2022/index.mjs +154 -0
  82. package/components/basic/progress/progress-bar/fesm2022/index.mjs.map +1 -0
  83. package/components/basic/progress/progress-bar/index.d.ts +45 -0
  84. package/components/basic/progress/progress-bar/package.json +18 -0
  85. package/components/basic/progress/progress-circle/.npmignore +2 -0
  86. package/components/basic/progress/progress-circle/bundles/index.umd.js +171 -0
  87. package/components/basic/progress/progress-circle/fesm2022/index.mjs +155 -0
  88. package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -0
  89. package/components/basic/progress/progress-circle/index.d.ts +43 -0
  90. package/components/basic/progress/progress-circle/package.json +18 -0
  91. package/components/basic/progress/progress-utils/.npmignore +2 -0
  92. package/components/basic/progress/progress-utils/bundles/index.umd.js +35 -0
  93. package/components/basic/progress/progress-utils/fesm2022/index.mjs +32 -0
  94. package/components/basic/progress/progress-utils/fesm2022/index.mjs.map +1 -0
  95. package/components/basic/progress/progress-utils/index.d.ts +5 -0
  96. package/components/basic/progress/progress-utils/package.json +18 -0
  97. package/components/basic/rich-text-editor/.npmignore +2 -0
  98. package/components/basic/rich-text-editor/bundles/index.umd.js +236 -0
  99. package/components/basic/rich-text-editor/fesm2022/index.mjs +222 -0
  100. package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -0
  101. package/components/basic/rich-text-editor/index.d.ts +58 -0
  102. package/components/basic/rich-text-editor/package.json +18 -0
  103. package/components/basic/search/.npmignore +2 -0
  104. package/components/basic/search/bundles/index.umd.js +1091 -0
  105. package/components/basic/search/fesm2022/index.mjs +1080 -0
  106. package/components/basic/search/fesm2022/index.mjs.map +1 -0
  107. package/components/basic/search/index.d.ts +125 -0
  108. package/components/basic/search/package.json +18 -0
  109. package/components/basic/spinner/.npmignore +2 -0
  110. package/components/basic/spinner/bundles/index.umd.js +126 -0
  111. package/components/basic/spinner/fesm2022/index.mjs +111 -0
  112. package/components/basic/spinner/fesm2022/index.mjs.map +1 -0
  113. package/components/basic/spinner/index.d.ts +30 -0
  114. package/components/basic/spinner/package.json +18 -0
  115. package/components/basic/tree/.npmignore +2 -0
  116. package/components/basic/tree/bundles/index.umd.js +767 -0
  117. package/components/basic/tree/fesm2022/index.mjs +751 -0
  118. package/components/basic/tree/fesm2022/index.mjs.map +1 -0
  119. package/components/basic/tree/index.d.ts +97 -0
  120. package/components/basic/tree/package.json +18 -0
  121. package/components/basic/video/.npmignore +2 -0
  122. package/components/basic/video/bundles/index.umd.js +116 -0
  123. package/components/basic/video/fesm2022/index.mjs +99 -0
  124. package/components/basic/video/fesm2022/index.mjs.map +1 -0
  125. package/components/basic/video/index.d.ts +30 -0
  126. package/components/basic/video/package.json +18 -0
  127. package/components/chart/.npmignore +2 -0
  128. package/components/chart/bundles/index.umd.js +1747 -0
  129. package/components/chart/fesm2022/index.mjs +1774 -0
  130. package/components/chart/fesm2022/index.mjs.map +1 -0
  131. package/components/chart/index.d.ts +103 -0
  132. package/components/chart/package.json +18 -0
  133. package/components/containers/accordion/.npmignore +2 -0
  134. package/components/containers/accordion/bundles/index.umd.js +500 -0
  135. package/components/containers/accordion/fesm2022/index.mjs +486 -0
  136. package/components/containers/accordion/fesm2022/index.mjs.map +1 -0
  137. package/components/containers/accordion/index.d.ts +114 -0
  138. package/components/containers/accordion/package.json +18 -0
  139. package/components/containers/layout-grid/.npmignore +2 -0
  140. package/components/containers/layout-grid/bundles/index.umd.js +172 -0
  141. package/components/containers/layout-grid/fesm2022/index.mjs +153 -0
  142. package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -0
  143. package/components/containers/layout-grid/index.d.ts +29 -0
  144. package/components/containers/layout-grid/package.json +18 -0
  145. package/components/containers/linear-layout/.npmignore +2 -0
  146. package/components/containers/linear-layout/bundles/index.umd.js +186 -0
  147. package/components/containers/linear-layout/fesm2022/index.mjs +167 -0
  148. package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -0
  149. package/components/containers/linear-layout/index.d.ts +27 -0
  150. package/components/containers/linear-layout/package.json +18 -0
  151. package/components/containers/panel/.npmignore +2 -0
  152. package/components/containers/panel/bundles/index.umd.js +223 -0
  153. package/components/containers/panel/fesm2022/index.mjs +210 -0
  154. package/components/containers/panel/fesm2022/index.mjs.map +1 -0
  155. package/components/containers/panel/index.d.ts +46 -0
  156. package/components/containers/panel/package.json +18 -0
  157. package/components/containers/tabs/.npmignore +2 -0
  158. package/components/containers/tabs/bundles/index.umd.js +788 -0
  159. package/components/containers/tabs/fesm2022/index.mjs +775 -0
  160. package/components/containers/tabs/fesm2022/index.mjs.map +1 -0
  161. package/components/containers/tabs/index.d.ts +127 -0
  162. package/components/containers/tabs/package.json +18 -0
  163. package/components/containers/tile/.npmignore +2 -0
  164. package/components/containers/tile/bundles/index.umd.js +68 -0
  165. package/components/containers/tile/fesm2022/index.mjs +50 -0
  166. package/components/containers/tile/fesm2022/index.mjs.map +1 -0
  167. package/components/containers/tile/index.d.ts +12 -0
  168. package/components/containers/tile/package.json +18 -0
  169. package/components/containers/wizard/.npmignore +2 -0
  170. package/components/containers/wizard/bundles/index.umd.js +1074 -0
  171. package/components/containers/wizard/fesm2022/index.mjs +1058 -0
  172. package/components/containers/wizard/fesm2022/index.mjs.map +1 -0
  173. package/components/containers/wizard/index.d.ts +257 -0
  174. package/components/containers/wizard/package.json +18 -0
  175. package/components/data/card/.npmignore +2 -0
  176. package/components/data/card/bundles/index.umd.js +237 -0
  177. package/components/data/card/fesm2022/index.mjs +220 -0
  178. package/components/data/card/fesm2022/index.mjs.map +1 -0
  179. package/components/data/card/index.d.ts +51 -0
  180. package/components/data/card/package.json +18 -0
  181. package/components/data/form/.npmignore +2 -0
  182. package/components/data/form/bundles/index.umd.js +3339 -0
  183. package/components/data/form/fesm2022/index.mjs +3327 -0
  184. package/components/data/form/fesm2022/index.mjs.map +1 -0
  185. package/components/data/form/index.d.ts +487 -0
  186. package/components/data/form/package.json +18 -0
  187. package/components/data/list/.npmignore +2 -0
  188. package/components/data/list/bundles/index.umd.js +1610 -0
  189. package/components/data/list/fesm2022/index.mjs +1602 -0
  190. package/components/data/list/fesm2022/index.mjs.map +1 -0
  191. package/components/data/list/index.d.ts +283 -0
  192. package/components/data/list/package.json +18 -0
  193. package/components/data/live-table/.npmignore +2 -0
  194. package/components/data/live-table/bundles/index.umd.js +283 -0
  195. package/components/data/live-table/fesm2022/index.mjs +268 -0
  196. package/components/data/live-table/fesm2022/index.mjs.map +1 -0
  197. package/components/data/live-table/index.d.ts +39 -0
  198. package/components/data/live-table/package.json +18 -0
  199. package/components/data/pagination/.npmignore +2 -0
  200. package/components/data/pagination/bundles/index.umd.js +885 -0
  201. package/components/data/pagination/fesm2022/index.mjs +880 -0
  202. package/components/data/pagination/fesm2022/index.mjs.map +1 -0
  203. package/components/data/pagination/index.d.ts +106 -0
  204. package/components/data/pagination/package.json +18 -0
  205. package/components/data/table/.npmignore +2 -0
  206. package/components/data/table/bundles/index.umd.js +4991 -0
  207. package/components/data/table/fesm2022/index.mjs +4978 -0
  208. package/components/data/table/fesm2022/index.mjs.map +1 -0
  209. package/components/data/table/index.d.ts +744 -0
  210. package/components/data/table/package.json +18 -0
  211. package/components/dialogs/alert-dialog/.npmignore +2 -0
  212. package/components/dialogs/alert-dialog/bundles/index.umd.js +126 -0
  213. package/components/dialogs/alert-dialog/fesm2022/index.mjs +114 -0
  214. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -0
  215. package/components/dialogs/alert-dialog/index.d.ts +26 -0
  216. package/components/dialogs/alert-dialog/package.json +18 -0
  217. package/components/dialogs/confirm-dialog/.npmignore +2 -0
  218. package/components/dialogs/confirm-dialog/bundles/index.umd.js +129 -0
  219. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +117 -0
  220. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -0
  221. package/components/dialogs/confirm-dialog/index.d.ts +29 -0
  222. package/components/dialogs/confirm-dialog/package.json +18 -0
  223. package/components/dialogs/default/.npmignore +2 -0
  224. package/components/dialogs/default/bundles/index.umd.js +380 -0
  225. package/components/dialogs/default/fesm2022/index.mjs +363 -0
  226. package/components/dialogs/default/fesm2022/index.mjs.map +1 -0
  227. package/components/dialogs/default/index.d.ts +89 -0
  228. package/components/dialogs/default/package.json +18 -0
  229. package/components/dialogs/design-dialog/.npmignore +2 -0
  230. package/components/dialogs/design-dialog/bundles/index.umd.js +150 -0
  231. package/components/dialogs/design-dialog/fesm2022/index.mjs +135 -0
  232. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -0
  233. package/components/dialogs/design-dialog/index.d.ts +20 -0
  234. package/components/dialogs/design-dialog/package.json +18 -0
  235. package/components/dialogs/iframe-dialog/.npmignore +2 -0
  236. package/components/dialogs/iframe-dialog/bundles/index.umd.js +119 -0
  237. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +108 -0
  238. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -0
  239. package/components/dialogs/iframe-dialog/index.d.ts +22 -0
  240. package/components/dialogs/iframe-dialog/package.json +18 -0
  241. package/components/dialogs/login-dialog/.npmignore +2 -0
  242. package/components/dialogs/login-dialog/bundles/index.umd.js +114 -0
  243. package/components/dialogs/login-dialog/fesm2022/index.mjs +98 -0
  244. package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -0
  245. package/components/dialogs/login-dialog/index.d.ts +26 -0
  246. package/components/dialogs/login-dialog/package.json +18 -0
  247. package/components/dialogs/partial-dialog/.npmignore +2 -0
  248. package/components/dialogs/partial-dialog/bundles/index.umd.js +157 -0
  249. package/components/dialogs/partial-dialog/fesm2022/index.mjs +146 -0
  250. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -0
  251. package/components/dialogs/partial-dialog/index.d.ts +32 -0
  252. package/components/dialogs/partial-dialog/package.json +18 -0
  253. package/components/input/base-form/.npmignore +2 -0
  254. package/components/input/base-form/bundles/index.umd.js +147 -0
  255. package/components/input/base-form/fesm2022/index.mjs +131 -0
  256. package/components/input/base-form/fesm2022/index.mjs.map +1 -0
  257. package/components/input/base-form/index.d.ts +29 -0
  258. package/components/input/base-form/package.json +18 -0
  259. package/components/input/base-form-custom/.npmignore +2 -0
  260. package/components/input/base-form-custom/bundles/index.umd.js +129 -0
  261. package/components/input/base-form-custom/fesm2022/index.mjs +112 -0
  262. package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -0
  263. package/components/input/base-form-custom/index.d.ts +26 -0
  264. package/components/input/base-form-custom/package.json +18 -0
  265. package/components/input/button/.npmignore +2 -0
  266. package/components/input/button/bundles/index.umd.js +98 -0
  267. package/components/input/button/fesm2022/index.mjs +81 -0
  268. package/components/input/button/fesm2022/index.mjs.map +1 -0
  269. package/components/input/button/index.d.ts +22 -0
  270. package/components/input/button/package.json +18 -0
  271. package/components/input/button-group/.npmignore +2 -0
  272. package/components/input/button-group/bundles/index.umd.js +80 -0
  273. package/components/input/button-group/fesm2022/index.mjs +62 -0
  274. package/components/input/button-group/fesm2022/index.mjs.map +1 -0
  275. package/components/input/button-group/index.d.ts +14 -0
  276. package/components/input/button-group/package.json +18 -0
  277. package/components/input/calendar/.npmignore +2 -0
  278. package/components/input/calendar/bundles/index.umd.js +655 -0
  279. package/components/input/calendar/fesm2022/index.mjs +665 -0
  280. package/components/input/calendar/fesm2022/index.mjs.map +1 -0
  281. package/components/input/calendar/index.d.ts +131 -0
  282. package/components/input/calendar/package.json +18 -0
  283. package/components/input/caption-position/.npmignore +2 -0
  284. package/components/input/caption-position/bundles/index.umd.js +196 -0
  285. package/components/input/caption-position/fesm2022/index.mjs +178 -0
  286. package/components/input/caption-position/fesm2022/index.mjs.map +1 -0
  287. package/components/input/caption-position/index.d.ts +34 -0
  288. package/components/input/caption-position/package.json +18 -0
  289. package/components/input/checkbox/.npmignore +2 -0
  290. package/components/input/checkbox/bundles/index.umd.js +206 -0
  291. package/components/input/checkbox/fesm2022/index.mjs +191 -0
  292. package/components/input/checkbox/fesm2022/index.mjs.map +1 -0
  293. package/components/input/checkbox/index.d.ts +39 -0
  294. package/components/input/checkbox/package.json +18 -0
  295. package/components/input/checkboxset/.npmignore +2 -0
  296. package/components/input/checkboxset/bundles/index.umd.js +178 -0
  297. package/components/input/checkboxset/fesm2022/index.mjs +165 -0
  298. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -0
  299. package/components/input/checkboxset/index.d.ts +27 -0
  300. package/components/input/checkboxset/package.json +18 -0
  301. package/components/input/chips/.npmignore +2 -0
  302. package/components/input/chips/bundles/index.umd.js +741 -0
  303. package/components/input/chips/fesm2022/index.mjs +729 -0
  304. package/components/input/chips/fesm2022/index.mjs.map +1 -0
  305. package/components/input/chips/index.d.ts +90 -0
  306. package/components/input/chips/package.json +18 -0
  307. package/components/input/color-picker/.npmignore +2 -0
  308. package/components/input/color-picker/bundles/index.umd.js +145 -0
  309. package/components/input/color-picker/fesm2022/index.mjs +132 -0
  310. package/components/input/color-picker/fesm2022/index.mjs.map +1 -0
  311. package/components/input/color-picker/index.d.ts +36 -0
  312. package/components/input/color-picker/package.json +18 -0
  313. package/components/input/composite/.npmignore +2 -0
  314. package/components/input/composite/bundles/index.umd.js +120 -0
  315. package/components/input/composite/fesm2022/index.mjs +103 -0
  316. package/components/input/composite/fesm2022/index.mjs.map +1 -0
  317. package/components/input/composite/index.d.ts +27 -0
  318. package/components/input/composite/package.json +18 -0
  319. package/components/input/currency/.npmignore +2 -0
  320. package/components/input/currency/bundles/index.umd.js +112 -0
  321. package/components/input/currency/fesm2022/index.mjs +97 -0
  322. package/components/input/currency/fesm2022/index.mjs.map +1 -0
  323. package/components/input/currency/index.d.ts +31 -0
  324. package/components/input/currency/package.json +18 -0
  325. package/components/input/dataset-aware-form/.npmignore +2 -0
  326. package/components/input/dataset-aware-form/bundles/index.umd.js +354 -0
  327. package/components/input/dataset-aware-form/fesm2022/index.mjs +340 -0
  328. package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -0
  329. package/components/input/dataset-aware-form/index.d.ts +80 -0
  330. package/components/input/dataset-aware-form/package.json +18 -0
  331. package/components/input/epoch/base-date-time/.npmignore +2 -0
  332. package/components/input/epoch/base-date-time/bundles/index.umd.js +1093 -0
  333. package/components/input/epoch/base-date-time/fesm2022/index.mjs +1084 -0
  334. package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -0
  335. package/components/input/epoch/base-date-time/index.d.ts +249 -0
  336. package/components/input/epoch/base-date-time/package.json +18 -0
  337. package/components/input/epoch/date/.npmignore +2 -0
  338. package/components/input/epoch/date/bundles/index.umd.js +515 -0
  339. package/components/input/epoch/date/fesm2022/index.mjs +505 -0
  340. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -0
  341. package/components/input/epoch/date/index.d.ts +64 -0
  342. package/components/input/epoch/date/package.json +18 -0
  343. package/components/input/epoch/date-time/.npmignore +2 -0
  344. package/components/input/epoch/date-time/bundles/index.umd.js +519 -0
  345. package/components/input/epoch/date-time/fesm2022/index.mjs +510 -0
  346. package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -0
  347. package/components/input/epoch/date-time/index.d.ts +112 -0
  348. package/components/input/epoch/date-time/package.json +18 -0
  349. package/components/input/epoch/date-time-picker/.npmignore +2 -0
  350. package/components/input/epoch/date-time-picker/bundles/index.umd.js +453 -0
  351. package/components/input/epoch/date-time-picker/fesm2022/index.mjs +439 -0
  352. package/components/input/epoch/date-time-picker/fesm2022/index.mjs.map +1 -0
  353. package/components/input/epoch/date-time-picker/index.d.ts +83 -0
  354. package/components/input/epoch/date-time-picker/package.json +18 -0
  355. package/components/input/epoch/picker/.npmignore +2 -0
  356. package/components/input/epoch/picker/bundles/index.umd.js +192 -0
  357. package/components/input/epoch/picker/fesm2022/index.mjs +172 -0
  358. package/components/input/epoch/picker/fesm2022/index.mjs.map +1 -0
  359. package/components/input/epoch/picker/index.d.ts +39 -0
  360. package/components/input/epoch/picker/package.json +18 -0
  361. package/components/input/epoch/time/.npmignore +2 -0
  362. package/components/input/epoch/time/bundles/index.umd.js +401 -0
  363. package/components/input/epoch/time/fesm2022/index.mjs +391 -0
  364. package/components/input/epoch/time/fesm2022/index.mjs.map +1 -0
  365. package/components/input/epoch/time/index.d.ts +108 -0
  366. package/components/input/epoch/time/package.json +18 -0
  367. package/components/input/file-upload/.npmignore +2 -0
  368. package/components/input/file-upload/bundles/index.umd.js +483 -0
  369. package/components/input/file-upload/fesm2022/index.mjs +469 -0
  370. package/components/input/file-upload/fesm2022/index.mjs.map +1 -0
  371. package/components/input/file-upload/index.d.ts +106 -0
  372. package/components/input/file-upload/package.json +18 -0
  373. package/components/input/number/.npmignore +2 -0
  374. package/components/input/number/bundles/index.umd.js +109 -0
  375. package/components/input/number/fesm2022/index.mjs +95 -0
  376. package/components/input/number/fesm2022/index.mjs.map +1 -0
  377. package/components/input/number/index.d.ts +29 -0
  378. package/components/input/number/package.json +18 -0
  379. package/components/input/radioset/.npmignore +2 -0
  380. package/components/input/radioset/bundles/index.umd.js +164 -0
  381. package/components/input/radioset/fesm2022/index.mjs +151 -0
  382. package/components/input/radioset/fesm2022/index.mjs.map +1 -0
  383. package/components/input/radioset/index.d.ts +26 -0
  384. package/components/input/radioset/package.json +18 -0
  385. package/components/input/rating/.npmignore +2 -0
  386. package/components/input/rating/bundles/index.umd.js +270 -0
  387. package/components/input/rating/fesm2022/index.mjs +257 -0
  388. package/components/input/rating/fesm2022/index.mjs.map +1 -0
  389. package/components/input/rating/index.d.ts +47 -0
  390. package/components/input/rating/package.json +18 -0
  391. package/components/input/select/.npmignore +2 -0
  392. package/components/input/select/bundles/index.umd.js +225 -0
  393. package/components/input/select/fesm2022/index.mjs +211 -0
  394. package/components/input/select/fesm2022/index.mjs.map +1 -0
  395. package/components/input/select/index.d.ts +39 -0
  396. package/components/input/select/package.json +18 -0
  397. package/components/input/slider/.npmignore +2 -0
  398. package/components/input/slider/bundles/index.umd.js +203 -0
  399. package/components/input/slider/fesm2022/index.mjs +189 -0
  400. package/components/input/slider/fesm2022/index.mjs.map +1 -0
  401. package/components/input/slider/index.d.ts +42 -0
  402. package/components/input/slider/package.json +18 -0
  403. package/components/input/switch/.npmignore +2 -0
  404. package/components/input/switch/bundles/index.umd.js +224 -0
  405. package/components/input/switch/fesm2022/index.mjs +211 -0
  406. package/components/input/switch/fesm2022/index.mjs.map +1 -0
  407. package/components/input/switch/index.d.ts +33 -0
  408. package/components/input/switch/package.json +18 -0
  409. package/components/input/text/.npmignore +2 -0
  410. package/components/input/text/bundles/index.umd.js +1130 -0
  411. package/components/input/text/fesm2022/index.mjs +1114 -0
  412. package/components/input/text/fesm2022/index.mjs.map +1 -0
  413. package/components/input/text/index.d.ts +316 -0
  414. package/components/input/text/package.json +18 -0
  415. package/components/input/textarea/.npmignore +2 -0
  416. package/components/input/textarea/bundles/index.umd.js +108 -0
  417. package/components/input/textarea/fesm2022/index.mjs +94 -0
  418. package/components/input/textarea/fesm2022/index.mjs.map +1 -0
  419. package/components/input/textarea/index.d.ts +33 -0
  420. package/components/input/textarea/package.json +18 -0
  421. package/components/navigation/breadcrumb/.npmignore +2 -0
  422. package/components/navigation/breadcrumb/bundles/index.umd.js +138 -0
  423. package/components/navigation/breadcrumb/fesm2022/index.mjs +121 -0
  424. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -0
  425. package/components/navigation/breadcrumb/index.d.ts +28 -0
  426. package/components/navigation/breadcrumb/package.json +18 -0
  427. package/components/navigation/menu/.npmignore +2 -0
  428. package/components/navigation/menu/bundles/index.umd.js +947 -0
  429. package/components/navigation/menu/fesm2022/index.mjs +929 -0
  430. package/components/navigation/menu/fesm2022/index.mjs.map +1 -0
  431. package/components/navigation/menu/index.d.ts +189 -0
  432. package/components/navigation/menu/package.json +18 -0
  433. package/components/navigation/navbar/.npmignore +2 -0
  434. package/components/navigation/navbar/bundles/index.umd.js +87 -0
  435. package/components/navigation/navbar/fesm2022/index.mjs +70 -0
  436. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -0
  437. package/components/navigation/navbar/index.d.ts +19 -0
  438. package/components/navigation/navbar/package.json +18 -0
  439. package/components/navigation/popover/.npmignore +2 -0
  440. package/components/navigation/popover/bundles/index.umd.js +527 -0
  441. package/components/navigation/popover/fesm2022/index.mjs +513 -0
  442. package/components/navigation/popover/fesm2022/index.mjs.map +1 -0
  443. package/components/navigation/popover/index.d.ts +86 -0
  444. package/components/navigation/popover/package.json +18 -0
  445. package/components/page/default/.npmignore +2 -0
  446. package/components/page/default/bundles/index.umd.js +458 -0
  447. package/components/page/default/fesm2022/index.mjs +438 -0
  448. package/components/page/default/fesm2022/index.mjs.map +1 -0
  449. package/components/page/default/index.d.ts +124 -0
  450. package/components/page/default/package.json +18 -0
  451. package/components/page/footer/.npmignore +2 -0
  452. package/components/page/footer/bundles/index.umd.js +71 -0
  453. package/components/page/footer/fesm2022/index.mjs +53 -0
  454. package/components/page/footer/fesm2022/index.mjs.map +1 -0
  455. package/components/page/footer/index.d.ts +12 -0
  456. package/components/page/footer/package.json +18 -0
  457. package/components/page/header/.npmignore +2 -0
  458. package/components/page/header/bundles/index.umd.js +67 -0
  459. package/components/page/header/fesm2022/index.mjs +49 -0
  460. package/components/page/header/fesm2022/index.mjs.map +1 -0
  461. package/components/page/header/index.d.ts +13 -0
  462. package/components/page/header/package.json +18 -0
  463. package/components/page/left-panel/.npmignore +2 -0
  464. package/components/page/left-panel/bundles/index.umd.js +415 -0
  465. package/components/page/left-panel/fesm2022/index.mjs +400 -0
  466. package/components/page/left-panel/fesm2022/index.mjs.map +1 -0
  467. package/components/page/left-panel/index.d.ts +41 -0
  468. package/components/page/left-panel/package.json +18 -0
  469. package/components/page/right-panel/.npmignore +2 -0
  470. package/components/page/right-panel/bundles/index.umd.js +86 -0
  471. package/components/page/right-panel/fesm2022/index.mjs +69 -0
  472. package/components/page/right-panel/fesm2022/index.mjs.map +1 -0
  473. package/components/page/right-panel/index.d.ts +13 -0
  474. package/components/page/right-panel/package.json +18 -0
  475. package/components/page/top-nav/.npmignore +2 -0
  476. package/components/page/top-nav/bundles/index.umd.js +68 -0
  477. package/components/page/top-nav/fesm2022/index.mjs +50 -0
  478. package/components/page/top-nav/fesm2022/index.mjs.map +1 -0
  479. package/components/page/top-nav/index.d.ts +12 -0
  480. package/components/page/top-nav/package.json +18 -0
  481. package/components/prefab/.npmignore +2 -0
  482. package/components/prefab/bundles/index.umd.js +176 -0
  483. package/components/prefab/fesm2022/index.mjs +159 -0
  484. package/components/prefab/fesm2022/index.mjs.map +1 -0
  485. package/components/prefab/index.d.ts +33 -0
  486. package/components/prefab/package.json +18 -0
  487. package/core/.npmignore +2 -0
  488. package/core/bundles/index.umd.js +5627 -0
  489. package/core/fesm2022/index.mjs +5475 -0
  490. package/core/fesm2022/index.mjs.map +1 -0
  491. package/core/index.d.ts +2143 -0
  492. package/core/package.json +24 -0
  493. package/http/.npmignore +2 -0
  494. package/http/bundles/index.umd.js +421 -0
  495. package/http/fesm2022/index.mjs +405 -0
  496. package/http/fesm2022/index.mjs.map +1 -0
  497. package/http/index.d.ts +120 -0
  498. package/http/package.json +23 -0
  499. package/locales/angular/af-na.js +17 -0
  500. package/locales/angular/af.js +17 -0
  501. package/locales/angular/agq.js +15 -0
  502. package/locales/angular/ak.js +17 -0
  503. package/locales/angular/am.js +17 -0
  504. package/locales/angular/ar-ae.js +25 -0
  505. package/locales/angular/ar-bh.js +25 -0
  506. package/locales/angular/ar-dj.js +25 -0
  507. package/locales/angular/ar-dz.js +25 -0
  508. package/locales/angular/ar-eg.js +25 -0
  509. package/locales/angular/ar-eh.js +25 -0
  510. package/locales/angular/ar-er.js +25 -0
  511. package/locales/angular/ar-il.js +25 -0
  512. package/locales/angular/ar-iq.js +25 -0
  513. package/locales/angular/ar-jo.js +25 -0
  514. package/locales/angular/ar-km.js +25 -0
  515. package/locales/angular/ar-kw.js +25 -0
  516. package/locales/angular/ar-lb.js +25 -0
  517. package/locales/angular/ar-ly.js +25 -0
  518. package/locales/angular/ar-ma.js +25 -0
  519. package/locales/angular/ar-mr.js +25 -0
  520. package/locales/angular/ar-om.js +25 -0
  521. package/locales/angular/ar-ps.js +25 -0
  522. package/locales/angular/ar-qa.js +25 -0
  523. package/locales/angular/ar-sa.js +25 -0
  524. package/locales/angular/ar-sd.js +25 -0
  525. package/locales/angular/ar-so.js +25 -0
  526. package/locales/angular/ar-ss.js +25 -0
  527. package/locales/angular/ar-sy.js +25 -0
  528. package/locales/angular/ar-td.js +25 -0
  529. package/locales/angular/ar-tn.js +25 -0
  530. package/locales/angular/ar-ye.js +25 -0
  531. package/locales/angular/ar.js +25 -0
  532. package/locales/angular/as.js +17 -0
  533. package/locales/angular/asa.js +17 -0
  534. package/locales/angular/ast.js +17 -0
  535. package/locales/angular/az-cyrl.js +15 -0
  536. package/locales/angular/az-latn.js +17 -0
  537. package/locales/angular/az.js +17 -0
  538. package/locales/angular/bas.js +15 -0
  539. package/locales/angular/be-tarask.js +21 -0
  540. package/locales/angular/be.js +21 -0
  541. package/locales/angular/bem.js +17 -0
  542. package/locales/angular/bez.js +17 -0
  543. package/locales/angular/bg.js +17 -0
  544. package/locales/angular/bm.js +15 -0
  545. package/locales/angular/bn-in.js +17 -0
  546. package/locales/angular/bn.js +17 -0
  547. package/locales/angular/bo-in.js +15 -0
  548. package/locales/angular/bo.js +15 -0
  549. package/locales/angular/br.js +23 -0
  550. package/locales/angular/brx.js +17 -0
  551. package/locales/angular/bs-cyrl.js +15 -0
  552. package/locales/angular/bs-latn.js +19 -0
  553. package/locales/angular/bs.js +19 -0
  554. package/locales/angular/ca-ad.js +17 -0
  555. package/locales/angular/ca-es-valencia.js +17 -0
  556. package/locales/angular/ca-fr.js +17 -0
  557. package/locales/angular/ca-it.js +17 -0
  558. package/locales/angular/ca.js +17 -0
  559. package/locales/angular/ccp-in.js +15 -0
  560. package/locales/angular/ccp.js +15 -0
  561. package/locales/angular/ce.js +17 -0
  562. package/locales/angular/ceb.js +17 -0
  563. package/locales/angular/cgg.js +17 -0
  564. package/locales/angular/chr.js +17 -0
  565. package/locales/angular/ckb-ir.js +17 -0
  566. package/locales/angular/ckb.js +17 -0
  567. package/locales/angular/cs.js +21 -0
  568. package/locales/angular/cy.js +25 -0
  569. package/locales/angular/da-gl.js +17 -0
  570. package/locales/angular/da.js +17 -0
  571. package/locales/angular/dav.js +15 -0
  572. package/locales/angular/de-at.js +17 -0
  573. package/locales/angular/de-be.js +17 -0
  574. package/locales/angular/de-ch.js +17 -0
  575. package/locales/angular/de-it.js +17 -0
  576. package/locales/angular/de-li.js +17 -0
  577. package/locales/angular/de-lu.js +17 -0
  578. package/locales/angular/de.js +17 -0
  579. package/locales/angular/dje.js +15 -0
  580. package/locales/angular/doi.js +17 -0
  581. package/locales/angular/dsb.js +21 -0
  582. package/locales/angular/dua.js +15 -0
  583. package/locales/angular/dyo.js +15 -0
  584. package/locales/angular/dz.js +15 -0
  585. package/locales/angular/ebu.js +15 -0
  586. package/locales/angular/ee-tg.js +17 -0
  587. package/locales/angular/ee.js +17 -0
  588. package/locales/angular/el-cy.js +17 -0
  589. package/locales/angular/el.js +17 -0
  590. package/locales/angular/en-001.js +17 -0
  591. package/locales/angular/en-150.js +17 -0
  592. package/locales/angular/en-ae.js +17 -0
  593. package/locales/angular/en-ag.js +17 -0
  594. package/locales/angular/en-ai.js +17 -0
  595. package/locales/angular/en-as.js +17 -0
  596. package/locales/angular/en-at.js +17 -0
  597. package/locales/angular/en-au.js +17 -0
  598. package/locales/angular/en-bb.js +17 -0
  599. package/locales/angular/en-be.js +17 -0
  600. package/locales/angular/en-bi.js +17 -0
  601. package/locales/angular/en-bm.js +17 -0
  602. package/locales/angular/en-bs.js +17 -0
  603. package/locales/angular/en-bw.js +17 -0
  604. package/locales/angular/en-bz.js +17 -0
  605. package/locales/angular/en-ca.js +17 -0
  606. package/locales/angular/en-cc.js +17 -0
  607. package/locales/angular/en-ch.js +17 -0
  608. package/locales/angular/en-ck.js +17 -0
  609. package/locales/angular/en-cm.js +17 -0
  610. package/locales/angular/en-cx.js +17 -0
  611. package/locales/angular/en-cy.js +17 -0
  612. package/locales/angular/en-de.js +17 -0
  613. package/locales/angular/en-dg.js +17 -0
  614. package/locales/angular/en-dk.js +17 -0
  615. package/locales/angular/en-dm.js +17 -0
  616. package/locales/angular/en-er.js +17 -0
  617. package/locales/angular/en-fi.js +17 -0
  618. package/locales/angular/en-fj.js +17 -0
  619. package/locales/angular/en-fk.js +17 -0
  620. package/locales/angular/en-fm.js +17 -0
  621. package/locales/angular/en-gb.js +17 -0
  622. package/locales/angular/en-gd.js +17 -0
  623. package/locales/angular/en-gg.js +17 -0
  624. package/locales/angular/en-gh.js +17 -0
  625. package/locales/angular/en-gi.js +17 -0
  626. package/locales/angular/en-gm.js +17 -0
  627. package/locales/angular/en-gu.js +17 -0
  628. package/locales/angular/en-gy.js +17 -0
  629. package/locales/angular/en-hk.js +17 -0
  630. package/locales/angular/en-ie.js +17 -0
  631. package/locales/angular/en-il.js +17 -0
  632. package/locales/angular/en-im.js +17 -0
  633. package/locales/angular/en-in.js +17 -0
  634. package/locales/angular/en-io.js +17 -0
  635. package/locales/angular/en-je.js +17 -0
  636. package/locales/angular/en-jm.js +17 -0
  637. package/locales/angular/en-ke.js +17 -0
  638. package/locales/angular/en-ki.js +17 -0
  639. package/locales/angular/en-kn.js +17 -0
  640. package/locales/angular/en-ky.js +17 -0
  641. package/locales/angular/en-lc.js +17 -0
  642. package/locales/angular/en-lr.js +17 -0
  643. package/locales/angular/en-ls.js +17 -0
  644. package/locales/angular/en-mg.js +17 -0
  645. package/locales/angular/en-mh.js +17 -0
  646. package/locales/angular/en-mo.js +17 -0
  647. package/locales/angular/en-mp.js +17 -0
  648. package/locales/angular/en-ms.js +17 -0
  649. package/locales/angular/en-mt.js +17 -0
  650. package/locales/angular/en-mu.js +17 -0
  651. package/locales/angular/en-mv.js +17 -0
  652. package/locales/angular/en-mw.js +17 -0
  653. package/locales/angular/en-my.js +17 -0
  654. package/locales/angular/en-na.js +17 -0
  655. package/locales/angular/en-nf.js +17 -0
  656. package/locales/angular/en-ng.js +17 -0
  657. package/locales/angular/en-nl.js +17 -0
  658. package/locales/angular/en-nr.js +17 -0
  659. package/locales/angular/en-nu.js +17 -0
  660. package/locales/angular/en-nz.js +17 -0
  661. package/locales/angular/en-pg.js +17 -0
  662. package/locales/angular/en-ph.js +17 -0
  663. package/locales/angular/en-pk.js +17 -0
  664. package/locales/angular/en-pn.js +17 -0
  665. package/locales/angular/en-pr.js +17 -0
  666. package/locales/angular/en-pw.js +17 -0
  667. package/locales/angular/en-rw.js +17 -0
  668. package/locales/angular/en-sb.js +17 -0
  669. package/locales/angular/en-sc.js +17 -0
  670. package/locales/angular/en-sd.js +17 -0
  671. package/locales/angular/en-se.js +17 -0
  672. package/locales/angular/en-sg.js +17 -0
  673. package/locales/angular/en-sh.js +17 -0
  674. package/locales/angular/en-si.js +17 -0
  675. package/locales/angular/en-sl.js +17 -0
  676. package/locales/angular/en-ss.js +17 -0
  677. package/locales/angular/en-sx.js +17 -0
  678. package/locales/angular/en-sz.js +17 -0
  679. package/locales/angular/en-tc.js +17 -0
  680. package/locales/angular/en-tk.js +17 -0
  681. package/locales/angular/en-to.js +17 -0
  682. package/locales/angular/en-tt.js +17 -0
  683. package/locales/angular/en-tv.js +17 -0
  684. package/locales/angular/en-tz.js +17 -0
  685. package/locales/angular/en-ug.js +17 -0
  686. package/locales/angular/en-um.js +17 -0
  687. package/locales/angular/en-vc.js +17 -0
  688. package/locales/angular/en-vg.js +17 -0
  689. package/locales/angular/en-vi.js +17 -0
  690. package/locales/angular/en-vu.js +17 -0
  691. package/locales/angular/en-ws.js +17 -0
  692. package/locales/angular/en-za.js +17 -0
  693. package/locales/angular/en-zm.js +17 -0
  694. package/locales/angular/en-zw.js +17 -0
  695. package/locales/angular/en.js +17 -0
  696. package/locales/angular/eo.js +17 -0
  697. package/locales/angular/es-419.js +19 -0
  698. package/locales/angular/es-ar.js +19 -0
  699. package/locales/angular/es-bo.js +19 -0
  700. package/locales/angular/es-br.js +19 -0
  701. package/locales/angular/es-bz.js +19 -0
  702. package/locales/angular/es-cl.js +19 -0
  703. package/locales/angular/es-co.js +19 -0
  704. package/locales/angular/es-cr.js +19 -0
  705. package/locales/angular/es-cu.js +19 -0
  706. package/locales/angular/es-do.js +19 -0
  707. package/locales/angular/es-ea.js +19 -0
  708. package/locales/angular/es-ec.js +19 -0
  709. package/locales/angular/es-gq.js +19 -0
  710. package/locales/angular/es-gt.js +19 -0
  711. package/locales/angular/es-hn.js +19 -0
  712. package/locales/angular/es-ic.js +19 -0
  713. package/locales/angular/es-mx.js +19 -0
  714. package/locales/angular/es-ni.js +19 -0
  715. package/locales/angular/es-pa.js +19 -0
  716. package/locales/angular/es-pe.js +19 -0
  717. package/locales/angular/es-ph.js +19 -0
  718. package/locales/angular/es-pr.js +19 -0
  719. package/locales/angular/es-py.js +19 -0
  720. package/locales/angular/es-sv.js +19 -0
  721. package/locales/angular/es-us.js +19 -0
  722. package/locales/angular/es-uy.js +19 -0
  723. package/locales/angular/es-ve.js +19 -0
  724. package/locales/angular/es.js +19 -0
  725. package/locales/angular/et.js +17 -0
  726. package/locales/angular/eu.js +17 -0
  727. package/locales/angular/ewo.js +15 -0
  728. package/locales/angular/fa-af.js +17 -0
  729. package/locales/angular/fa.js +17 -0
  730. package/locales/angular/ff-adlm-bf.js +15 -0
  731. package/locales/angular/ff-adlm-cm.js +15 -0
  732. package/locales/angular/ff-adlm-gh.js +15 -0
  733. package/locales/angular/ff-adlm-gm.js +15 -0
  734. package/locales/angular/ff-adlm-gw.js +15 -0
  735. package/locales/angular/ff-adlm-lr.js +15 -0
  736. package/locales/angular/ff-adlm-mr.js +15 -0
  737. package/locales/angular/ff-adlm-ne.js +15 -0
  738. package/locales/angular/ff-adlm-ng.js +15 -0
  739. package/locales/angular/ff-adlm-sl.js +15 -0
  740. package/locales/angular/ff-adlm-sn.js +15 -0
  741. package/locales/angular/ff-adlm.js +15 -0
  742. package/locales/angular/ff-cm.js +64 -0
  743. package/locales/angular/ff-gn.js +64 -0
  744. package/locales/angular/ff-latn-bf.js +17 -0
  745. package/locales/angular/ff-latn-cm.js +17 -0
  746. package/locales/angular/ff-latn-gh.js +17 -0
  747. package/locales/angular/ff-latn-gm.js +17 -0
  748. package/locales/angular/ff-latn-gn.js +17 -0
  749. package/locales/angular/ff-latn-gw.js +17 -0
  750. package/locales/angular/ff-latn-lr.js +17 -0
  751. package/locales/angular/ff-latn-mr.js +17 -0
  752. package/locales/angular/ff-latn-ne.js +17 -0
  753. package/locales/angular/ff-latn-ng.js +17 -0
  754. package/locales/angular/ff-latn-sl.js +17 -0
  755. package/locales/angular/ff-latn.js +17 -0
  756. package/locales/angular/ff-mr.js +64 -0
  757. package/locales/angular/ff.js +17 -0
  758. package/locales/angular/fi.js +17 -0
  759. package/locales/angular/fil.js +17 -0
  760. package/locales/angular/fo-dk.js +17 -0
  761. package/locales/angular/fo.js +17 -0
  762. package/locales/angular/fr-be.js +19 -0
  763. package/locales/angular/fr-bf.js +19 -0
  764. package/locales/angular/fr-bi.js +19 -0
  765. package/locales/angular/fr-bj.js +19 -0
  766. package/locales/angular/fr-bl.js +19 -0
  767. package/locales/angular/fr-ca.js +19 -0
  768. package/locales/angular/fr-cd.js +19 -0
  769. package/locales/angular/fr-cf.js +19 -0
  770. package/locales/angular/fr-cg.js +19 -0
  771. package/locales/angular/fr-ch.js +19 -0
  772. package/locales/angular/fr-ci.js +19 -0
  773. package/locales/angular/fr-cm.js +19 -0
  774. package/locales/angular/fr-dj.js +19 -0
  775. package/locales/angular/fr-dz.js +19 -0
  776. package/locales/angular/fr-ga.js +19 -0
  777. package/locales/angular/fr-gf.js +19 -0
  778. package/locales/angular/fr-gn.js +19 -0
  779. package/locales/angular/fr-gp.js +19 -0
  780. package/locales/angular/fr-gq.js +19 -0
  781. package/locales/angular/fr-ht.js +19 -0
  782. package/locales/angular/fr-km.js +19 -0
  783. package/locales/angular/fr-lu.js +19 -0
  784. package/locales/angular/fr-ma.js +19 -0
  785. package/locales/angular/fr-mc.js +19 -0
  786. package/locales/angular/fr-mf.js +19 -0
  787. package/locales/angular/fr-mg.js +19 -0
  788. package/locales/angular/fr-ml.js +19 -0
  789. package/locales/angular/fr-mq.js +19 -0
  790. package/locales/angular/fr-mr.js +19 -0
  791. package/locales/angular/fr-mu.js +19 -0
  792. package/locales/angular/fr-nc.js +19 -0
  793. package/locales/angular/fr-ne.js +19 -0
  794. package/locales/angular/fr-pf.js +19 -0
  795. package/locales/angular/fr-pm.js +19 -0
  796. package/locales/angular/fr-re.js +19 -0
  797. package/locales/angular/fr-rw.js +19 -0
  798. package/locales/angular/fr-sc.js +19 -0
  799. package/locales/angular/fr-sn.js +19 -0
  800. package/locales/angular/fr-sy.js +19 -0
  801. package/locales/angular/fr-td.js +19 -0
  802. package/locales/angular/fr-tg.js +19 -0
  803. package/locales/angular/fr-tn.js +19 -0
  804. package/locales/angular/fr-vu.js +19 -0
  805. package/locales/angular/fr-wf.js +19 -0
  806. package/locales/angular/fr-yt.js +19 -0
  807. package/locales/angular/fr.js +19 -0
  808. package/locales/angular/fur.js +17 -0
  809. package/locales/angular/fy.js +17 -0
  810. package/locales/angular/ga-gb.js +23 -0
  811. package/locales/angular/ga.js +23 -0
  812. package/locales/angular/gd.js +21 -0
  813. package/locales/angular/gl.js +17 -0
  814. package/locales/angular/global/af-na.js +24 -0
  815. package/locales/angular/global/af.js +24 -0
  816. package/locales/angular/global/agq.js +22 -0
  817. package/locales/angular/global/ak.js +24 -0
  818. package/locales/angular/global/am.js +24 -0
  819. package/locales/angular/global/ar-ae.js +32 -0
  820. package/locales/angular/global/ar-bh.js +32 -0
  821. package/locales/angular/global/ar-dj.js +32 -0
  822. package/locales/angular/global/ar-dz.js +32 -0
  823. package/locales/angular/global/ar-eg.js +32 -0
  824. package/locales/angular/global/ar-eh.js +32 -0
  825. package/locales/angular/global/ar-er.js +32 -0
  826. package/locales/angular/global/ar-il.js +32 -0
  827. package/locales/angular/global/ar-iq.js +32 -0
  828. package/locales/angular/global/ar-jo.js +32 -0
  829. package/locales/angular/global/ar-km.js +32 -0
  830. package/locales/angular/global/ar-kw.js +32 -0
  831. package/locales/angular/global/ar-lb.js +32 -0
  832. package/locales/angular/global/ar-ly.js +32 -0
  833. package/locales/angular/global/ar-ma.js +32 -0
  834. package/locales/angular/global/ar-mr.js +32 -0
  835. package/locales/angular/global/ar-om.js +32 -0
  836. package/locales/angular/global/ar-ps.js +32 -0
  837. package/locales/angular/global/ar-qa.js +32 -0
  838. package/locales/angular/global/ar-sa.js +32 -0
  839. package/locales/angular/global/ar-sd.js +32 -0
  840. package/locales/angular/global/ar-so.js +32 -0
  841. package/locales/angular/global/ar-ss.js +32 -0
  842. package/locales/angular/global/ar-sy.js +32 -0
  843. package/locales/angular/global/ar-td.js +32 -0
  844. package/locales/angular/global/ar-tn.js +32 -0
  845. package/locales/angular/global/ar-ye.js +32 -0
  846. package/locales/angular/global/ar.js +32 -0
  847. package/locales/angular/global/as.js +24 -0
  848. package/locales/angular/global/asa.js +24 -0
  849. package/locales/angular/global/ast.js +24 -0
  850. package/locales/angular/global/az-cyrl.js +22 -0
  851. package/locales/angular/global/az-latn.js +24 -0
  852. package/locales/angular/global/az.js +24 -0
  853. package/locales/angular/global/bas.js +22 -0
  854. package/locales/angular/global/be-tarask.js +28 -0
  855. package/locales/angular/global/be.js +28 -0
  856. package/locales/angular/global/bem.js +24 -0
  857. package/locales/angular/global/bez.js +24 -0
  858. package/locales/angular/global/bg.js +24 -0
  859. package/locales/angular/global/bm.js +22 -0
  860. package/locales/angular/global/bn-in.js +24 -0
  861. package/locales/angular/global/bn.js +24 -0
  862. package/locales/angular/global/bo-in.js +22 -0
  863. package/locales/angular/global/bo.js +22 -0
  864. package/locales/angular/global/br.js +30 -0
  865. package/locales/angular/global/brx.js +24 -0
  866. package/locales/angular/global/bs-cyrl.js +22 -0
  867. package/locales/angular/global/bs-latn.js +26 -0
  868. package/locales/angular/global/bs.js +26 -0
  869. package/locales/angular/global/ca-ad.js +24 -0
  870. package/locales/angular/global/ca-es-valencia.js +24 -0
  871. package/locales/angular/global/ca-fr.js +24 -0
  872. package/locales/angular/global/ca-it.js +24 -0
  873. package/locales/angular/global/ca.js +24 -0
  874. package/locales/angular/global/ccp-in.js +22 -0
  875. package/locales/angular/global/ccp.js +22 -0
  876. package/locales/angular/global/ce.js +24 -0
  877. package/locales/angular/global/ceb.js +24 -0
  878. package/locales/angular/global/cgg.js +24 -0
  879. package/locales/angular/global/chr.js +24 -0
  880. package/locales/angular/global/ckb-ir.js +24 -0
  881. package/locales/angular/global/ckb.js +24 -0
  882. package/locales/angular/global/cs.js +28 -0
  883. package/locales/angular/global/cy.js +32 -0
  884. package/locales/angular/global/da-gl.js +24 -0
  885. package/locales/angular/global/da.js +24 -0
  886. package/locales/angular/global/dav.js +22 -0
  887. package/locales/angular/global/de-at.js +24 -0
  888. package/locales/angular/global/de-be.js +24 -0
  889. package/locales/angular/global/de-ch.js +24 -0
  890. package/locales/angular/global/de-it.js +24 -0
  891. package/locales/angular/global/de-li.js +24 -0
  892. package/locales/angular/global/de-lu.js +24 -0
  893. package/locales/angular/global/de.js +24 -0
  894. package/locales/angular/global/dje.js +22 -0
  895. package/locales/angular/global/doi.js +24 -0
  896. package/locales/angular/global/dsb.js +28 -0
  897. package/locales/angular/global/dua.js +22 -0
  898. package/locales/angular/global/dyo.js +22 -0
  899. package/locales/angular/global/dz.js +22 -0
  900. package/locales/angular/global/ebu.js +22 -0
  901. package/locales/angular/global/ee-tg.js +24 -0
  902. package/locales/angular/global/ee.js +24 -0
  903. package/locales/angular/global/el-cy.js +24 -0
  904. package/locales/angular/global/el.js +24 -0
  905. package/locales/angular/global/en-001.js +24 -0
  906. package/locales/angular/global/en-150.js +24 -0
  907. package/locales/angular/global/en-ae.js +24 -0
  908. package/locales/angular/global/en-ag.js +24 -0
  909. package/locales/angular/global/en-ai.js +24 -0
  910. package/locales/angular/global/en-as.js +24 -0
  911. package/locales/angular/global/en-at.js +24 -0
  912. package/locales/angular/global/en-au.js +24 -0
  913. package/locales/angular/global/en-bb.js +24 -0
  914. package/locales/angular/global/en-be.js +24 -0
  915. package/locales/angular/global/en-bi.js +24 -0
  916. package/locales/angular/global/en-bm.js +24 -0
  917. package/locales/angular/global/en-bs.js +24 -0
  918. package/locales/angular/global/en-bw.js +24 -0
  919. package/locales/angular/global/en-bz.js +24 -0
  920. package/locales/angular/global/en-ca.js +24 -0
  921. package/locales/angular/global/en-cc.js +24 -0
  922. package/locales/angular/global/en-ch.js +24 -0
  923. package/locales/angular/global/en-ck.js +24 -0
  924. package/locales/angular/global/en-cm.js +24 -0
  925. package/locales/angular/global/en-cx.js +24 -0
  926. package/locales/angular/global/en-cy.js +24 -0
  927. package/locales/angular/global/en-de.js +24 -0
  928. package/locales/angular/global/en-dg.js +24 -0
  929. package/locales/angular/global/en-dk.js +24 -0
  930. package/locales/angular/global/en-dm.js +24 -0
  931. package/locales/angular/global/en-er.js +24 -0
  932. package/locales/angular/global/en-fi.js +24 -0
  933. package/locales/angular/global/en-fj.js +24 -0
  934. package/locales/angular/global/en-fk.js +24 -0
  935. package/locales/angular/global/en-fm.js +24 -0
  936. package/locales/angular/global/en-gb.js +24 -0
  937. package/locales/angular/global/en-gd.js +24 -0
  938. package/locales/angular/global/en-gg.js +24 -0
  939. package/locales/angular/global/en-gh.js +24 -0
  940. package/locales/angular/global/en-gi.js +24 -0
  941. package/locales/angular/global/en-gm.js +24 -0
  942. package/locales/angular/global/en-gu.js +24 -0
  943. package/locales/angular/global/en-gy.js +24 -0
  944. package/locales/angular/global/en-hk.js +24 -0
  945. package/locales/angular/global/en-ie.js +24 -0
  946. package/locales/angular/global/en-il.js +24 -0
  947. package/locales/angular/global/en-im.js +24 -0
  948. package/locales/angular/global/en-in.js +24 -0
  949. package/locales/angular/global/en-io.js +24 -0
  950. package/locales/angular/global/en-je.js +24 -0
  951. package/locales/angular/global/en-jm.js +24 -0
  952. package/locales/angular/global/en-ke.js +24 -0
  953. package/locales/angular/global/en-ki.js +24 -0
  954. package/locales/angular/global/en-kn.js +24 -0
  955. package/locales/angular/global/en-ky.js +24 -0
  956. package/locales/angular/global/en-lc.js +24 -0
  957. package/locales/angular/global/en-lr.js +24 -0
  958. package/locales/angular/global/en-ls.js +24 -0
  959. package/locales/angular/global/en-mg.js +24 -0
  960. package/locales/angular/global/en-mh.js +24 -0
  961. package/locales/angular/global/en-mo.js +24 -0
  962. package/locales/angular/global/en-mp.js +24 -0
  963. package/locales/angular/global/en-ms.js +24 -0
  964. package/locales/angular/global/en-mt.js +24 -0
  965. package/locales/angular/global/en-mu.js +24 -0
  966. package/locales/angular/global/en-mv.js +24 -0
  967. package/locales/angular/global/en-mw.js +24 -0
  968. package/locales/angular/global/en-my.js +24 -0
  969. package/locales/angular/global/en-na.js +24 -0
  970. package/locales/angular/global/en-nf.js +24 -0
  971. package/locales/angular/global/en-ng.js +24 -0
  972. package/locales/angular/global/en-nl.js +24 -0
  973. package/locales/angular/global/en-nr.js +24 -0
  974. package/locales/angular/global/en-nu.js +24 -0
  975. package/locales/angular/global/en-nz.js +24 -0
  976. package/locales/angular/global/en-pg.js +24 -0
  977. package/locales/angular/global/en-ph.js +24 -0
  978. package/locales/angular/global/en-pk.js +24 -0
  979. package/locales/angular/global/en-pn.js +24 -0
  980. package/locales/angular/global/en-pr.js +24 -0
  981. package/locales/angular/global/en-pw.js +24 -0
  982. package/locales/angular/global/en-rw.js +24 -0
  983. package/locales/angular/global/en-sb.js +24 -0
  984. package/locales/angular/global/en-sc.js +24 -0
  985. package/locales/angular/global/en-sd.js +24 -0
  986. package/locales/angular/global/en-se.js +24 -0
  987. package/locales/angular/global/en-sg.js +24 -0
  988. package/locales/angular/global/en-sh.js +24 -0
  989. package/locales/angular/global/en-si.js +24 -0
  990. package/locales/angular/global/en-sl.js +24 -0
  991. package/locales/angular/global/en-ss.js +24 -0
  992. package/locales/angular/global/en-sx.js +24 -0
  993. package/locales/angular/global/en-sz.js +24 -0
  994. package/locales/angular/global/en-tc.js +24 -0
  995. package/locales/angular/global/en-tk.js +24 -0
  996. package/locales/angular/global/en-to.js +24 -0
  997. package/locales/angular/global/en-tt.js +24 -0
  998. package/locales/angular/global/en-tv.js +24 -0
  999. package/locales/angular/global/en-tz.js +24 -0
  1000. package/locales/angular/global/en-ug.js +24 -0
  1001. package/locales/angular/global/en-um.js +24 -0
  1002. package/locales/angular/global/en-vc.js +24 -0
  1003. package/locales/angular/global/en-vg.js +24 -0
  1004. package/locales/angular/global/en-vi.js +24 -0
  1005. package/locales/angular/global/en-vu.js +24 -0
  1006. package/locales/angular/global/en-ws.js +24 -0
  1007. package/locales/angular/global/en-za.js +24 -0
  1008. package/locales/angular/global/en-zm.js +24 -0
  1009. package/locales/angular/global/en-zw.js +24 -0
  1010. package/locales/angular/global/en.js +24 -0
  1011. package/locales/angular/global/eo.js +24 -0
  1012. package/locales/angular/global/es-419.js +26 -0
  1013. package/locales/angular/global/es-ar.js +26 -0
  1014. package/locales/angular/global/es-bo.js +26 -0
  1015. package/locales/angular/global/es-br.js +26 -0
  1016. package/locales/angular/global/es-bz.js +26 -0
  1017. package/locales/angular/global/es-cl.js +26 -0
  1018. package/locales/angular/global/es-co.js +26 -0
  1019. package/locales/angular/global/es-cr.js +26 -0
  1020. package/locales/angular/global/es-cu.js +26 -0
  1021. package/locales/angular/global/es-do.js +26 -0
  1022. package/locales/angular/global/es-ea.js +26 -0
  1023. package/locales/angular/global/es-ec.js +26 -0
  1024. package/locales/angular/global/es-gq.js +26 -0
  1025. package/locales/angular/global/es-gt.js +26 -0
  1026. package/locales/angular/global/es-hn.js +26 -0
  1027. package/locales/angular/global/es-ic.js +26 -0
  1028. package/locales/angular/global/es-mx.js +26 -0
  1029. package/locales/angular/global/es-ni.js +26 -0
  1030. package/locales/angular/global/es-pa.js +26 -0
  1031. package/locales/angular/global/es-pe.js +26 -0
  1032. package/locales/angular/global/es-ph.js +26 -0
  1033. package/locales/angular/global/es-pr.js +26 -0
  1034. package/locales/angular/global/es-py.js +26 -0
  1035. package/locales/angular/global/es-sv.js +26 -0
  1036. package/locales/angular/global/es-us.js +26 -0
  1037. package/locales/angular/global/es-uy.js +26 -0
  1038. package/locales/angular/global/es-ve.js +26 -0
  1039. package/locales/angular/global/es.js +26 -0
  1040. package/locales/angular/global/et.js +24 -0
  1041. package/locales/angular/global/eu.js +24 -0
  1042. package/locales/angular/global/ewo.js +22 -0
  1043. package/locales/angular/global/fa-af.js +24 -0
  1044. package/locales/angular/global/fa.js +24 -0
  1045. package/locales/angular/global/ff-adlm-bf.js +22 -0
  1046. package/locales/angular/global/ff-adlm-cm.js +22 -0
  1047. package/locales/angular/global/ff-adlm-gh.js +22 -0
  1048. package/locales/angular/global/ff-adlm-gm.js +22 -0
  1049. package/locales/angular/global/ff-adlm-gw.js +22 -0
  1050. package/locales/angular/global/ff-adlm-lr.js +22 -0
  1051. package/locales/angular/global/ff-adlm-mr.js +22 -0
  1052. package/locales/angular/global/ff-adlm-ne.js +22 -0
  1053. package/locales/angular/global/ff-adlm-ng.js +22 -0
  1054. package/locales/angular/global/ff-adlm-sl.js +22 -0
  1055. package/locales/angular/global/ff-adlm-sn.js +22 -0
  1056. package/locales/angular/global/ff-adlm.js +22 -0
  1057. package/locales/angular/global/ff-cm.js +74 -0
  1058. package/locales/angular/global/ff-gn.js +74 -0
  1059. package/locales/angular/global/ff-latn-bf.js +24 -0
  1060. package/locales/angular/global/ff-latn-cm.js +24 -0
  1061. package/locales/angular/global/ff-latn-gh.js +24 -0
  1062. package/locales/angular/global/ff-latn-gm.js +24 -0
  1063. package/locales/angular/global/ff-latn-gn.js +24 -0
  1064. package/locales/angular/global/ff-latn-gw.js +24 -0
  1065. package/locales/angular/global/ff-latn-lr.js +24 -0
  1066. package/locales/angular/global/ff-latn-mr.js +24 -0
  1067. package/locales/angular/global/ff-latn-ne.js +24 -0
  1068. package/locales/angular/global/ff-latn-ng.js +24 -0
  1069. package/locales/angular/global/ff-latn-sl.js +24 -0
  1070. package/locales/angular/global/ff-latn.js +24 -0
  1071. package/locales/angular/global/ff-mr.js +74 -0
  1072. package/locales/angular/global/ff.js +24 -0
  1073. package/locales/angular/global/fi.js +24 -0
  1074. package/locales/angular/global/fil.js +24 -0
  1075. package/locales/angular/global/fo-dk.js +24 -0
  1076. package/locales/angular/global/fo.js +24 -0
  1077. package/locales/angular/global/fr-be.js +26 -0
  1078. package/locales/angular/global/fr-bf.js +26 -0
  1079. package/locales/angular/global/fr-bi.js +26 -0
  1080. package/locales/angular/global/fr-bj.js +26 -0
  1081. package/locales/angular/global/fr-bl.js +26 -0
  1082. package/locales/angular/global/fr-ca.js +26 -0
  1083. package/locales/angular/global/fr-cd.js +26 -0
  1084. package/locales/angular/global/fr-cf.js +26 -0
  1085. package/locales/angular/global/fr-cg.js +26 -0
  1086. package/locales/angular/global/fr-ch.js +26 -0
  1087. package/locales/angular/global/fr-ci.js +26 -0
  1088. package/locales/angular/global/fr-cm.js +26 -0
  1089. package/locales/angular/global/fr-dj.js +26 -0
  1090. package/locales/angular/global/fr-dz.js +26 -0
  1091. package/locales/angular/global/fr-ga.js +26 -0
  1092. package/locales/angular/global/fr-gf.js +26 -0
  1093. package/locales/angular/global/fr-gn.js +26 -0
  1094. package/locales/angular/global/fr-gp.js +26 -0
  1095. package/locales/angular/global/fr-gq.js +26 -0
  1096. package/locales/angular/global/fr-ht.js +26 -0
  1097. package/locales/angular/global/fr-km.js +26 -0
  1098. package/locales/angular/global/fr-lu.js +26 -0
  1099. package/locales/angular/global/fr-ma.js +26 -0
  1100. package/locales/angular/global/fr-mc.js +26 -0
  1101. package/locales/angular/global/fr-mf.js +26 -0
  1102. package/locales/angular/global/fr-mg.js +26 -0
  1103. package/locales/angular/global/fr-ml.js +26 -0
  1104. package/locales/angular/global/fr-mq.js +26 -0
  1105. package/locales/angular/global/fr-mr.js +26 -0
  1106. package/locales/angular/global/fr-mu.js +26 -0
  1107. package/locales/angular/global/fr-nc.js +26 -0
  1108. package/locales/angular/global/fr-ne.js +26 -0
  1109. package/locales/angular/global/fr-pf.js +26 -0
  1110. package/locales/angular/global/fr-pm.js +26 -0
  1111. package/locales/angular/global/fr-re.js +26 -0
  1112. package/locales/angular/global/fr-rw.js +26 -0
  1113. package/locales/angular/global/fr-sc.js +26 -0
  1114. package/locales/angular/global/fr-sn.js +26 -0
  1115. package/locales/angular/global/fr-sy.js +26 -0
  1116. package/locales/angular/global/fr-td.js +26 -0
  1117. package/locales/angular/global/fr-tg.js +26 -0
  1118. package/locales/angular/global/fr-tn.js +26 -0
  1119. package/locales/angular/global/fr-vu.js +26 -0
  1120. package/locales/angular/global/fr-wf.js +26 -0
  1121. package/locales/angular/global/fr-yt.js +26 -0
  1122. package/locales/angular/global/fr.js +26 -0
  1123. package/locales/angular/global/fur.js +24 -0
  1124. package/locales/angular/global/fy.js +24 -0
  1125. package/locales/angular/global/ga-gb.js +30 -0
  1126. package/locales/angular/global/ga.js +30 -0
  1127. package/locales/angular/global/gd.js +28 -0
  1128. package/locales/angular/global/gl.js +24 -0
  1129. package/locales/angular/global/gsw-fr.js +24 -0
  1130. package/locales/angular/global/gsw-li.js +24 -0
  1131. package/locales/angular/global/gsw.js +24 -0
  1132. package/locales/angular/global/gu.js +24 -0
  1133. package/locales/angular/global/guz.js +22 -0
  1134. package/locales/angular/global/gv.js +30 -0
  1135. package/locales/angular/global/ha-gh.js +24 -0
  1136. package/locales/angular/global/ha-ne.js +24 -0
  1137. package/locales/angular/global/ha.js +24 -0
  1138. package/locales/angular/global/haw.js +24 -0
  1139. package/locales/angular/global/he.js +28 -0
  1140. package/locales/angular/global/hi-latn.js +24 -0
  1141. package/locales/angular/global/hi.js +24 -0
  1142. package/locales/angular/global/hr-ba.js +26 -0
  1143. package/locales/angular/global/hr.js +26 -0
  1144. package/locales/angular/global/hsb.js +28 -0
  1145. package/locales/angular/global/hu.js +24 -0
  1146. package/locales/angular/global/hy.js +24 -0
  1147. package/locales/angular/global/ia.js +24 -0
  1148. package/locales/angular/global/id.js +22 -0
  1149. package/locales/angular/global/ig.js +22 -0
  1150. package/locales/angular/global/ii.js +22 -0
  1151. package/locales/angular/global/is.js +24 -0
  1152. package/locales/angular/global/it-ch.js +26 -0
  1153. package/locales/angular/global/it-sm.js +26 -0
  1154. package/locales/angular/global/it-va.js +26 -0
  1155. package/locales/angular/global/it.js +26 -0
  1156. package/locales/angular/global/ja.js +22 -0
  1157. package/locales/angular/global/jgo.js +24 -0
  1158. package/locales/angular/global/jmc.js +24 -0
  1159. package/locales/angular/global/jv.js +22 -0
  1160. package/locales/angular/global/ka.js +24 -0
  1161. package/locales/angular/global/kab.js +24 -0
  1162. package/locales/angular/global/kam.js +22 -0
  1163. package/locales/angular/global/kde.js +22 -0
  1164. package/locales/angular/global/kea.js +22 -0
  1165. package/locales/angular/global/kgp.js +22 -0
  1166. package/locales/angular/global/khq.js +22 -0
  1167. package/locales/angular/global/ki.js +22 -0
  1168. package/locales/angular/global/kk.js +24 -0
  1169. package/locales/angular/global/kkj.js +24 -0
  1170. package/locales/angular/global/kl.js +24 -0
  1171. package/locales/angular/global/kln.js +22 -0
  1172. package/locales/angular/global/km.js +22 -0
  1173. package/locales/angular/global/kn.js +24 -0
  1174. package/locales/angular/global/ko-kp.js +22 -0
  1175. package/locales/angular/global/ko.js +22 -0
  1176. package/locales/angular/global/kok.js +22 -0
  1177. package/locales/angular/global/ks-arab.js +24 -0
  1178. package/locales/angular/global/ks-deva.js +22 -0
  1179. package/locales/angular/global/ks.js +24 -0
  1180. package/locales/angular/global/ksb.js +24 -0
  1181. package/locales/angular/global/ksf.js +22 -0
  1182. package/locales/angular/global/ksh.js +26 -0
  1183. package/locales/angular/global/ku.js +24 -0
  1184. package/locales/angular/global/kw.js +32 -0
  1185. package/locales/angular/global/ky.js +24 -0
  1186. package/locales/angular/global/lag.js +26 -0
  1187. package/locales/angular/global/lb.js +24 -0
  1188. package/locales/angular/global/lg.js +24 -0
  1189. package/locales/angular/global/lkt.js +22 -0
  1190. package/locales/angular/global/ln-ao.js +24 -0
  1191. package/locales/angular/global/ln-cf.js +24 -0
  1192. package/locales/angular/global/ln-cg.js +24 -0
  1193. package/locales/angular/global/ln.js +24 -0
  1194. package/locales/angular/global/lo.js +22 -0
  1195. package/locales/angular/global/lrc-iq.js +22 -0
  1196. package/locales/angular/global/lrc.js +22 -0
  1197. package/locales/angular/global/lt.js +28 -0
  1198. package/locales/angular/global/lu.js +22 -0
  1199. package/locales/angular/global/luo.js +22 -0
  1200. package/locales/angular/global/luy.js +22 -0
  1201. package/locales/angular/global/lv.js +26 -0
  1202. package/locales/angular/global/mai.js +22 -0
  1203. package/locales/angular/global/mas-tz.js +24 -0
  1204. package/locales/angular/global/mas.js +24 -0
  1205. package/locales/angular/global/mer.js +22 -0
  1206. package/locales/angular/global/mfe.js +22 -0
  1207. package/locales/angular/global/mg.js +24 -0
  1208. package/locales/angular/global/mgh.js +22 -0
  1209. package/locales/angular/global/mgo.js +24 -0
  1210. package/locales/angular/global/mi.js +22 -0
  1211. package/locales/angular/global/mk.js +24 -0
  1212. package/locales/angular/global/ml.js +24 -0
  1213. package/locales/angular/global/mn.js +24 -0
  1214. package/locales/angular/global/mni-beng.js +22 -0
  1215. package/locales/angular/global/mni.js +22 -0
  1216. package/locales/angular/global/mr.js +24 -0
  1217. package/locales/angular/global/ms-bn.js +22 -0
  1218. package/locales/angular/global/ms-id.js +22 -0
  1219. package/locales/angular/global/ms-sg.js +22 -0
  1220. package/locales/angular/global/ms.js +22 -0
  1221. package/locales/angular/global/mt.js +28 -0
  1222. package/locales/angular/global/mua.js +22 -0
  1223. package/locales/angular/global/my.js +22 -0
  1224. package/locales/angular/global/mzn.js +22 -0
  1225. package/locales/angular/global/naq.js +26 -0
  1226. package/locales/angular/global/nb-sj.js +24 -0
  1227. package/locales/angular/global/nb.js +24 -0
  1228. package/locales/angular/global/nd.js +24 -0
  1229. package/locales/angular/global/nds-nl.js +22 -0
  1230. package/locales/angular/global/nds.js +22 -0
  1231. package/locales/angular/global/ne-in.js +24 -0
  1232. package/locales/angular/global/ne.js +24 -0
  1233. package/locales/angular/global/nl-aw.js +24 -0
  1234. package/locales/angular/global/nl-be.js +24 -0
  1235. package/locales/angular/global/nl-bq.js +24 -0
  1236. package/locales/angular/global/nl-cw.js +24 -0
  1237. package/locales/angular/global/nl-sr.js +24 -0
  1238. package/locales/angular/global/nl-sx.js +24 -0
  1239. package/locales/angular/global/nl.js +24 -0
  1240. package/locales/angular/global/nmg.js +22 -0
  1241. package/locales/angular/global/nn.js +24 -0
  1242. package/locales/angular/global/nnh.js +24 -0
  1243. package/locales/angular/global/no.js +24 -0
  1244. package/locales/angular/global/nus.js +22 -0
  1245. package/locales/angular/global/nyn.js +24 -0
  1246. package/locales/angular/global/om-ke.js +24 -0
  1247. package/locales/angular/global/om.js +24 -0
  1248. package/locales/angular/global/or.js +24 -0
  1249. package/locales/angular/global/os-ru.js +24 -0
  1250. package/locales/angular/global/os.js +24 -0
  1251. package/locales/angular/global/pa-arab.js +22 -0
  1252. package/locales/angular/global/pa-guru.js +24 -0
  1253. package/locales/angular/global/pa.js +24 -0
  1254. package/locales/angular/global/pcm.js +24 -0
  1255. package/locales/angular/global/pl.js +28 -0
  1256. package/locales/angular/global/ps-pk.js +24 -0
  1257. package/locales/angular/global/ps.js +24 -0
  1258. package/locales/angular/global/pt-ao.js +26 -0
  1259. package/locales/angular/global/pt-ch.js +26 -0
  1260. package/locales/angular/global/pt-cv.js +26 -0
  1261. package/locales/angular/global/pt-gq.js +26 -0
  1262. package/locales/angular/global/pt-gw.js +26 -0
  1263. package/locales/angular/global/pt-lu.js +26 -0
  1264. package/locales/angular/global/pt-mo.js +26 -0
  1265. package/locales/angular/global/pt-mz.js +26 -0
  1266. package/locales/angular/global/pt-pt.js +26 -0
  1267. package/locales/angular/global/pt-st.js +26 -0
  1268. package/locales/angular/global/pt-tl.js +26 -0
  1269. package/locales/angular/global/pt.js +26 -0
  1270. package/locales/angular/global/qu-bo.js +22 -0
  1271. package/locales/angular/global/qu-ec.js +22 -0
  1272. package/locales/angular/global/qu.js +22 -0
  1273. package/locales/angular/global/rm.js +24 -0
  1274. package/locales/angular/global/rn.js +22 -0
  1275. package/locales/angular/global/ro-md.js +26 -0
  1276. package/locales/angular/global/ro.js +26 -0
  1277. package/locales/angular/global/rof.js +24 -0
  1278. package/locales/angular/global/ru-by.js +28 -0
  1279. package/locales/angular/global/ru-kg.js +28 -0
  1280. package/locales/angular/global/ru-kz.js +28 -0
  1281. package/locales/angular/global/ru-md.js +28 -0
  1282. package/locales/angular/global/ru-ua.js +28 -0
  1283. package/locales/angular/global/ru.js +28 -0
  1284. package/locales/angular/global/rw.js +22 -0
  1285. package/locales/angular/global/rwk.js +24 -0
  1286. package/locales/angular/global/sa.js +22 -0
  1287. package/locales/angular/global/sah.js +22 -0
  1288. package/locales/angular/global/saq.js +24 -0
  1289. package/locales/angular/global/sat-olck.js +26 -0
  1290. package/locales/angular/global/sat.js +26 -0
  1291. package/locales/angular/global/sbp.js +22 -0
  1292. package/locales/angular/global/sc.js +24 -0
  1293. package/locales/angular/global/sd-arab.js +24 -0
  1294. package/locales/angular/global/sd-deva.js +22 -0
  1295. package/locales/angular/global/sd.js +24 -0
  1296. package/locales/angular/global/se-fi.js +26 -0
  1297. package/locales/angular/global/se-se.js +26 -0
  1298. package/locales/angular/global/se.js +26 -0
  1299. package/locales/angular/global/seh.js +24 -0
  1300. package/locales/angular/global/ses.js +22 -0
  1301. package/locales/angular/global/sg.js +22 -0
  1302. package/locales/angular/global/shi-latn.js +22 -0
  1303. package/locales/angular/global/shi-tfng.js +26 -0
  1304. package/locales/angular/global/shi.js +26 -0
  1305. package/locales/angular/global/si.js +24 -0
  1306. package/locales/angular/global/sk.js +28 -0
  1307. package/locales/angular/global/sl.js +28 -0
  1308. package/locales/angular/global/smn.js +26 -0
  1309. package/locales/angular/global/sn.js +24 -0
  1310. package/locales/angular/global/so-dj.js +24 -0
  1311. package/locales/angular/global/so-et.js +24 -0
  1312. package/locales/angular/global/so-ke.js +24 -0
  1313. package/locales/angular/global/so.js +24 -0
  1314. package/locales/angular/global/sq-mk.js +24 -0
  1315. package/locales/angular/global/sq-xk.js +24 -0
  1316. package/locales/angular/global/sq.js +24 -0
  1317. package/locales/angular/global/sr-cyrl-ba.js +26 -0
  1318. package/locales/angular/global/sr-cyrl-me.js +26 -0
  1319. package/locales/angular/global/sr-cyrl-xk.js +26 -0
  1320. package/locales/angular/global/sr-cyrl.js +26 -0
  1321. package/locales/angular/global/sr-latn-ba.js +22 -0
  1322. package/locales/angular/global/sr-latn-me.js +22 -0
  1323. package/locales/angular/global/sr-latn-xk.js +22 -0
  1324. package/locales/angular/global/sr-latn.js +22 -0
  1325. package/locales/angular/global/sr.js +26 -0
  1326. package/locales/angular/global/su-latn.js +22 -0
  1327. package/locales/angular/global/su.js +22 -0
  1328. package/locales/angular/global/sv-ax.js +24 -0
  1329. package/locales/angular/global/sv-fi.js +24 -0
  1330. package/locales/angular/global/sv.js +24 -0
  1331. package/locales/angular/global/sw-cd.js +24 -0
  1332. package/locales/angular/global/sw-ke.js +24 -0
  1333. package/locales/angular/global/sw-ug.js +24 -0
  1334. package/locales/angular/global/sw.js +24 -0
  1335. package/locales/angular/global/ta-lk.js +24 -0
  1336. package/locales/angular/global/ta-my.js +24 -0
  1337. package/locales/angular/global/ta-sg.js +24 -0
  1338. package/locales/angular/global/ta.js +24 -0
  1339. package/locales/angular/global/te.js +24 -0
  1340. package/locales/angular/global/teo-ke.js +24 -0
  1341. package/locales/angular/global/teo.js +24 -0
  1342. package/locales/angular/global/tg.js +22 -0
  1343. package/locales/angular/global/th.js +22 -0
  1344. package/locales/angular/global/ti-er.js +24 -0
  1345. package/locales/angular/global/ti.js +24 -0
  1346. package/locales/angular/global/tk.js +24 -0
  1347. package/locales/angular/global/to.js +22 -0
  1348. package/locales/angular/global/tr-cy.js +24 -0
  1349. package/locales/angular/global/tr.js +24 -0
  1350. package/locales/angular/global/tt.js +22 -0
  1351. package/locales/angular/global/twq.js +22 -0
  1352. package/locales/angular/global/tzm.js +24 -0
  1353. package/locales/angular/global/ug.js +24 -0
  1354. package/locales/angular/global/uk.js +28 -0
  1355. package/locales/angular/global/und.js +24 -0
  1356. package/locales/angular/global/ur-in.js +24 -0
  1357. package/locales/angular/global/ur.js +24 -0
  1358. package/locales/angular/global/uz-arab.js +22 -0
  1359. package/locales/angular/global/uz-cyrl.js +22 -0
  1360. package/locales/angular/global/uz-latn.js +24 -0
  1361. package/locales/angular/global/uz.js +24 -0
  1362. package/locales/angular/global/vai-latn.js +22 -0
  1363. package/locales/angular/global/vai-vaii.js +22 -0
  1364. package/locales/angular/global/vai.js +22 -0
  1365. package/locales/angular/global/vi.js +22 -0
  1366. package/locales/angular/global/vun.js +24 -0
  1367. package/locales/angular/global/wae.js +24 -0
  1368. package/locales/angular/global/wo.js +22 -0
  1369. package/locales/angular/global/xh.js +24 -0
  1370. package/locales/angular/global/xog.js +24 -0
  1371. package/locales/angular/global/yav.js +22 -0
  1372. package/locales/angular/global/yi.js +24 -0
  1373. package/locales/angular/global/yo-bj.js +22 -0
  1374. package/locales/angular/global/yo.js +22 -0
  1375. package/locales/angular/global/yrl-co.js +22 -0
  1376. package/locales/angular/global/yrl-ve.js +22 -0
  1377. package/locales/angular/global/yrl.js +22 -0
  1378. package/locales/angular/global/yue-hans.js +22 -0
  1379. package/locales/angular/global/yue-hant.js +22 -0
  1380. package/locales/angular/global/yue.js +22 -0
  1381. package/locales/angular/global/zgh.js +22 -0
  1382. package/locales/angular/global/zh-hans-hk.js +22 -0
  1383. package/locales/angular/global/zh-hans-mo.js +22 -0
  1384. package/locales/angular/global/zh-hans-sg.js +22 -0
  1385. package/locales/angular/global/zh-hans.js +22 -0
  1386. package/locales/angular/global/zh-hant-hk.js +22 -0
  1387. package/locales/angular/global/zh-hant-mo.js +22 -0
  1388. package/locales/angular/global/zh-hant.js +22 -0
  1389. package/locales/angular/global/zh.js +22 -0
  1390. package/locales/angular/global/zu.js +24 -0
  1391. package/locales/angular/gsw-fr.js +17 -0
  1392. package/locales/angular/gsw-li.js +17 -0
  1393. package/locales/angular/gsw.js +17 -0
  1394. package/locales/angular/gu.js +17 -0
  1395. package/locales/angular/guz.js +15 -0
  1396. package/locales/angular/gv.js +23 -0
  1397. package/locales/angular/ha-gh.js +17 -0
  1398. package/locales/angular/ha-ne.js +17 -0
  1399. package/locales/angular/ha.js +17 -0
  1400. package/locales/angular/haw.js +17 -0
  1401. package/locales/angular/he.js +21 -0
  1402. package/locales/angular/hi-latn.js +17 -0
  1403. package/locales/angular/hi.js +17 -0
  1404. package/locales/angular/hr-ba.js +19 -0
  1405. package/locales/angular/hr.js +19 -0
  1406. package/locales/angular/hsb.js +21 -0
  1407. package/locales/angular/hu.js +17 -0
  1408. package/locales/angular/hy.js +17 -0
  1409. package/locales/angular/ia.js +17 -0
  1410. package/locales/angular/id.js +15 -0
  1411. package/locales/angular/ig.js +15 -0
  1412. package/locales/angular/ii.js +15 -0
  1413. package/locales/angular/is.js +17 -0
  1414. package/locales/angular/it-ch.js +19 -0
  1415. package/locales/angular/it-sm.js +19 -0
  1416. package/locales/angular/it-va.js +19 -0
  1417. package/locales/angular/it.js +19 -0
  1418. package/locales/angular/ja.js +15 -0
  1419. package/locales/angular/jgo.js +17 -0
  1420. package/locales/angular/jmc.js +17 -0
  1421. package/locales/angular/jv.js +15 -0
  1422. package/locales/angular/ka.js +17 -0
  1423. package/locales/angular/kab.js +17 -0
  1424. package/locales/angular/kam.js +15 -0
  1425. package/locales/angular/kde.js +15 -0
  1426. package/locales/angular/kea.js +15 -0
  1427. package/locales/angular/kgp.js +15 -0
  1428. package/locales/angular/khq.js +15 -0
  1429. package/locales/angular/ki.js +15 -0
  1430. package/locales/angular/kk.js +17 -0
  1431. package/locales/angular/kkj.js +17 -0
  1432. package/locales/angular/kl.js +17 -0
  1433. package/locales/angular/kln.js +15 -0
  1434. package/locales/angular/km.js +15 -0
  1435. package/locales/angular/kn.js +17 -0
  1436. package/locales/angular/ko-kp.js +15 -0
  1437. package/locales/angular/ko.js +15 -0
  1438. package/locales/angular/kok.js +15 -0
  1439. package/locales/angular/ks-arab.js +17 -0
  1440. package/locales/angular/ks-deva.js +15 -0
  1441. package/locales/angular/ks.js +17 -0
  1442. package/locales/angular/ksb.js +17 -0
  1443. package/locales/angular/ksf.js +15 -0
  1444. package/locales/angular/ksh.js +19 -0
  1445. package/locales/angular/ku.js +17 -0
  1446. package/locales/angular/kw.js +25 -0
  1447. package/locales/angular/ky.js +17 -0
  1448. package/locales/angular/lag.js +19 -0
  1449. package/locales/angular/lb.js +17 -0
  1450. package/locales/angular/lg.js +17 -0
  1451. package/locales/angular/lkt.js +15 -0
  1452. package/locales/angular/ln-ao.js +17 -0
  1453. package/locales/angular/ln-cf.js +17 -0
  1454. package/locales/angular/ln-cg.js +17 -0
  1455. package/locales/angular/ln.js +17 -0
  1456. package/locales/angular/lo.js +15 -0
  1457. package/locales/angular/lrc-iq.js +15 -0
  1458. package/locales/angular/lrc.js +15 -0
  1459. package/locales/angular/lt.js +21 -0
  1460. package/locales/angular/lu.js +15 -0
  1461. package/locales/angular/luo.js +15 -0
  1462. package/locales/angular/luy.js +15 -0
  1463. package/locales/angular/lv.js +19 -0
  1464. package/locales/angular/mai.js +15 -0
  1465. package/locales/angular/mas-tz.js +17 -0
  1466. package/locales/angular/mas.js +17 -0
  1467. package/locales/angular/mer.js +15 -0
  1468. package/locales/angular/mfe.js +15 -0
  1469. package/locales/angular/mg.js +17 -0
  1470. package/locales/angular/mgh.js +15 -0
  1471. package/locales/angular/mgo.js +17 -0
  1472. package/locales/angular/mi.js +15 -0
  1473. package/locales/angular/mk.js +17 -0
  1474. package/locales/angular/ml.js +17 -0
  1475. package/locales/angular/mn.js +17 -0
  1476. package/locales/angular/mni-beng.js +15 -0
  1477. package/locales/angular/mni.js +15 -0
  1478. package/locales/angular/mr.js +17 -0
  1479. package/locales/angular/ms-bn.js +15 -0
  1480. package/locales/angular/ms-id.js +15 -0
  1481. package/locales/angular/ms-sg.js +15 -0
  1482. package/locales/angular/ms.js +15 -0
  1483. package/locales/angular/mt.js +21 -0
  1484. package/locales/angular/mua.js +15 -0
  1485. package/locales/angular/my.js +15 -0
  1486. package/locales/angular/mzn.js +15 -0
  1487. package/locales/angular/naq.js +19 -0
  1488. package/locales/angular/nb-sj.js +17 -0
  1489. package/locales/angular/nb.js +17 -0
  1490. package/locales/angular/nd.js +17 -0
  1491. package/locales/angular/nds-nl.js +15 -0
  1492. package/locales/angular/nds.js +15 -0
  1493. package/locales/angular/ne-in.js +17 -0
  1494. package/locales/angular/ne.js +17 -0
  1495. package/locales/angular/nl-aw.js +17 -0
  1496. package/locales/angular/nl-be.js +17 -0
  1497. package/locales/angular/nl-bq.js +17 -0
  1498. package/locales/angular/nl-cw.js +17 -0
  1499. package/locales/angular/nl-sr.js +17 -0
  1500. package/locales/angular/nl-sx.js +17 -0
  1501. package/locales/angular/nl.js +17 -0
  1502. package/locales/angular/nmg.js +15 -0
  1503. package/locales/angular/nn.js +17 -0
  1504. package/locales/angular/nnh.js +17 -0
  1505. package/locales/angular/no.js +17 -0
  1506. package/locales/angular/nus.js +15 -0
  1507. package/locales/angular/nyn.js +17 -0
  1508. package/locales/angular/om-ke.js +17 -0
  1509. package/locales/angular/om.js +17 -0
  1510. package/locales/angular/or.js +17 -0
  1511. package/locales/angular/os-ru.js +17 -0
  1512. package/locales/angular/os.js +17 -0
  1513. package/locales/angular/pa-arab.js +15 -0
  1514. package/locales/angular/pa-guru.js +17 -0
  1515. package/locales/angular/pa.js +17 -0
  1516. package/locales/angular/pcm.js +17 -0
  1517. package/locales/angular/pl.js +21 -0
  1518. package/locales/angular/ps-pk.js +17 -0
  1519. package/locales/angular/ps.js +17 -0
  1520. package/locales/angular/pt-ao.js +19 -0
  1521. package/locales/angular/pt-ch.js +19 -0
  1522. package/locales/angular/pt-cv.js +19 -0
  1523. package/locales/angular/pt-gq.js +19 -0
  1524. package/locales/angular/pt-gw.js +19 -0
  1525. package/locales/angular/pt-lu.js +19 -0
  1526. package/locales/angular/pt-mo.js +19 -0
  1527. package/locales/angular/pt-mz.js +19 -0
  1528. package/locales/angular/pt-pt.js +19 -0
  1529. package/locales/angular/pt-st.js +19 -0
  1530. package/locales/angular/pt-tl.js +19 -0
  1531. package/locales/angular/pt.js +19 -0
  1532. package/locales/angular/qu-bo.js +15 -0
  1533. package/locales/angular/qu-ec.js +15 -0
  1534. package/locales/angular/qu.js +15 -0
  1535. package/locales/angular/rm.js +17 -0
  1536. package/locales/angular/rn.js +15 -0
  1537. package/locales/angular/ro-md.js +19 -0
  1538. package/locales/angular/ro.js +19 -0
  1539. package/locales/angular/rof.js +17 -0
  1540. package/locales/angular/ru-by.js +21 -0
  1541. package/locales/angular/ru-kg.js +21 -0
  1542. package/locales/angular/ru-kz.js +21 -0
  1543. package/locales/angular/ru-md.js +21 -0
  1544. package/locales/angular/ru-ua.js +21 -0
  1545. package/locales/angular/ru.js +21 -0
  1546. package/locales/angular/rw.js +15 -0
  1547. package/locales/angular/rwk.js +17 -0
  1548. package/locales/angular/sa.js +15 -0
  1549. package/locales/angular/sah.js +15 -0
  1550. package/locales/angular/saq.js +17 -0
  1551. package/locales/angular/sat-olck.js +19 -0
  1552. package/locales/angular/sat.js +19 -0
  1553. package/locales/angular/sbp.js +15 -0
  1554. package/locales/angular/sc.js +17 -0
  1555. package/locales/angular/sd-arab.js +17 -0
  1556. package/locales/angular/sd-deva.js +15 -0
  1557. package/locales/angular/sd.js +17 -0
  1558. package/locales/angular/se-fi.js +19 -0
  1559. package/locales/angular/se-se.js +19 -0
  1560. package/locales/angular/se.js +19 -0
  1561. package/locales/angular/seh.js +17 -0
  1562. package/locales/angular/ses.js +15 -0
  1563. package/locales/angular/sg.js +15 -0
  1564. package/locales/angular/shi-latn.js +15 -0
  1565. package/locales/angular/shi-tfng.js +19 -0
  1566. package/locales/angular/shi.js +19 -0
  1567. package/locales/angular/si.js +17 -0
  1568. package/locales/angular/sk.js +21 -0
  1569. package/locales/angular/sl.js +21 -0
  1570. package/locales/angular/smn.js +19 -0
  1571. package/locales/angular/sn.js +17 -0
  1572. package/locales/angular/so-dj.js +17 -0
  1573. package/locales/angular/so-et.js +17 -0
  1574. package/locales/angular/so-ke.js +17 -0
  1575. package/locales/angular/so.js +17 -0
  1576. package/locales/angular/sq-mk.js +17 -0
  1577. package/locales/angular/sq-xk.js +17 -0
  1578. package/locales/angular/sq.js +17 -0
  1579. package/locales/angular/sr-cyrl-ba.js +19 -0
  1580. package/locales/angular/sr-cyrl-me.js +19 -0
  1581. package/locales/angular/sr-cyrl-xk.js +19 -0
  1582. package/locales/angular/sr-cyrl.js +19 -0
  1583. package/locales/angular/sr-latn-ba.js +15 -0
  1584. package/locales/angular/sr-latn-me.js +15 -0
  1585. package/locales/angular/sr-latn-xk.js +15 -0
  1586. package/locales/angular/sr-latn.js +15 -0
  1587. package/locales/angular/sr.js +19 -0
  1588. package/locales/angular/su-latn.js +15 -0
  1589. package/locales/angular/su.js +15 -0
  1590. package/locales/angular/sv-ax.js +17 -0
  1591. package/locales/angular/sv-fi.js +17 -0
  1592. package/locales/angular/sv.js +17 -0
  1593. package/locales/angular/sw-cd.js +17 -0
  1594. package/locales/angular/sw-ke.js +17 -0
  1595. package/locales/angular/sw-ug.js +17 -0
  1596. package/locales/angular/sw.js +17 -0
  1597. package/locales/angular/ta-lk.js +17 -0
  1598. package/locales/angular/ta-my.js +17 -0
  1599. package/locales/angular/ta-sg.js +17 -0
  1600. package/locales/angular/ta.js +17 -0
  1601. package/locales/angular/te.js +17 -0
  1602. package/locales/angular/teo-ke.js +17 -0
  1603. package/locales/angular/teo.js +17 -0
  1604. package/locales/angular/tg.js +15 -0
  1605. package/locales/angular/th.js +15 -0
  1606. package/locales/angular/ti-er.js +17 -0
  1607. package/locales/angular/ti.js +17 -0
  1608. package/locales/angular/tk.js +17 -0
  1609. package/locales/angular/to.js +15 -0
  1610. package/locales/angular/tr-cy.js +17 -0
  1611. package/locales/angular/tr.js +17 -0
  1612. package/locales/angular/tt.js +15 -0
  1613. package/locales/angular/twq.js +15 -0
  1614. package/locales/angular/tzm.js +17 -0
  1615. package/locales/angular/ug.js +17 -0
  1616. package/locales/angular/uk.js +21 -0
  1617. package/locales/angular/und.js +17 -0
  1618. package/locales/angular/ur-in.js +17 -0
  1619. package/locales/angular/ur.js +17 -0
  1620. package/locales/angular/uz-arab.js +15 -0
  1621. package/locales/angular/uz-cyrl.js +15 -0
  1622. package/locales/angular/uz-latn.js +17 -0
  1623. package/locales/angular/uz.js +17 -0
  1624. package/locales/angular/vai-latn.js +15 -0
  1625. package/locales/angular/vai-vaii.js +15 -0
  1626. package/locales/angular/vai.js +15 -0
  1627. package/locales/angular/vi.js +15 -0
  1628. package/locales/angular/vun.js +17 -0
  1629. package/locales/angular/wae.js +17 -0
  1630. package/locales/angular/wo.js +15 -0
  1631. package/locales/angular/xh.js +17 -0
  1632. package/locales/angular/xog.js +17 -0
  1633. package/locales/angular/yav.js +15 -0
  1634. package/locales/angular/yi.js +17 -0
  1635. package/locales/angular/yo-bj.js +15 -0
  1636. package/locales/angular/yo.js +15 -0
  1637. package/locales/angular/yrl-co.js +15 -0
  1638. package/locales/angular/yrl-ve.js +15 -0
  1639. package/locales/angular/yrl.js +15 -0
  1640. package/locales/angular/yue-hans.js +15 -0
  1641. package/locales/angular/yue-hant.js +15 -0
  1642. package/locales/angular/yue.js +15 -0
  1643. package/locales/angular/zgh.js +15 -0
  1644. package/locales/angular/zh-hans-hk.js +15 -0
  1645. package/locales/angular/zh-hans-mo.js +15 -0
  1646. package/locales/angular/zh-hans-sg.js +15 -0
  1647. package/locales/angular/zh-hans.js +15 -0
  1648. package/locales/angular/zh-hant-hk.js +15 -0
  1649. package/locales/angular/zh-hant-mo.js +15 -0
  1650. package/locales/angular/zh-hant.js +15 -0
  1651. package/locales/angular/zh.js +15 -0
  1652. package/locales/angular/zu.js +17 -0
  1653. package/locales/moment/af.js +82 -0
  1654. package/locales/moment/ar-dz.js +167 -0
  1655. package/locales/moment/ar-kw.js +66 -0
  1656. package/locales/moment/ar-ly.js +182 -0
  1657. package/locales/moment/ar-ma.js +67 -0
  1658. package/locales/moment/ar-ps.js +123 -0
  1659. package/locales/moment/ar-sa.js +116 -0
  1660. package/locales/moment/ar-tn.js +66 -0
  1661. package/locales/moment/ar.js +200 -0
  1662. package/locales/moment/az.js +113 -0
  1663. package/locales/moment/be.js +153 -0
  1664. package/locales/moment/bg.js +98 -0
  1665. package/locales/moment/bm.js +62 -0
  1666. package/locales/moment/bn-bd.js +140 -0
  1667. package/locales/moment/bn.js +130 -0
  1668. package/locales/moment/bo.js +135 -0
  1669. package/locales/moment/br.js +179 -0
  1670. package/locales/moment/bs.js +171 -0
  1671. package/locales/moment/ca.js +111 -0
  1672. package/locales/moment/cs.js +192 -0
  1673. package/locales/moment/cv.js +74 -0
  1674. package/locales/moment/cy.js +109 -0
  1675. package/locales/moment/da.js +64 -0
  1676. package/locales/moment/de-at.js +90 -0
  1677. package/locales/moment/de-ch.js +87 -0
  1678. package/locales/moment/de.js +89 -0
  1679. package/locales/moment/dv.js +101 -0
  1680. package/locales/moment/el.js +117 -0
  1681. package/locales/moment/en-au.js +79 -0
  1682. package/locales/moment/en-ca.js +75 -0
  1683. package/locales/moment/en-gb.js +79 -0
  1684. package/locales/moment/en-ie.js +79 -0
  1685. package/locales/moment/en-il.js +75 -0
  1686. package/locales/moment/en-in.js +79 -0
  1687. package/locales/moment/en-nz.js +79 -0
  1688. package/locales/moment/en-sg.js +79 -0
  1689. package/locales/moment/eo.js +79 -0
  1690. package/locales/moment/es-do.js +119 -0
  1691. package/locales/moment/es-mx.js +121 -0
  1692. package/locales/moment/es-us.js +121 -0
  1693. package/locales/moment/es.js +121 -0
  1694. package/locales/moment/et.js +89 -0
  1695. package/locales/moment/eu.js +76 -0
  1696. package/locales/moment/fa.js +124 -0
  1697. package/locales/moment/fi.js +135 -0
  1698. package/locales/moment/fil.js +69 -0
  1699. package/locales/moment/fo.js +68 -0
  1700. package/locales/moment/fr-ca.js +81 -0
  1701. package/locales/moment/fr-ch.js +85 -0
  1702. package/locales/moment/fr.js +119 -0
  1703. package/locales/moment/fy.js +86 -0
  1704. package/locales/moment/ga.js +106 -0
  1705. package/locales/moment/gd.js +106 -0
  1706. package/locales/moment/gl.js +86 -0
  1707. package/locales/moment/gom-deva.js +137 -0
  1708. package/locales/moment/gom-latn.js +135 -0
  1709. package/locales/moment/gu.js +133 -0
  1710. package/locales/moment/he.js +105 -0
  1711. package/locales/moment/hi.js +179 -0
  1712. package/locales/moment/hr.js +167 -0
  1713. package/locales/moment/hu.js +129 -0
  1714. package/locales/moment/hy-am.js +105 -0
  1715. package/locales/moment/id.js +87 -0
  1716. package/locales/moment/is.js +151 -0
  1717. package/locales/moment/it-ch.js +75 -0
  1718. package/locales/moment/it.js +117 -0
  1719. package/locales/moment/ja.js +159 -0
  1720. package/locales/moment/jv.js +87 -0
  1721. package/locales/moment/ka.js +103 -0
  1722. package/locales/moment/kk.js +93 -0
  1723. package/locales/moment/km.js +114 -0
  1724. package/locales/moment/kn.js +135 -0
  1725. package/locales/moment/ko.js +86 -0
  1726. package/locales/moment/ku-kmr.js +125 -0
  1727. package/locales/moment/ku.js +129 -0
  1728. package/locales/moment/ky.js +95 -0
  1729. package/locales/moment/lb.js +148 -0
  1730. package/locales/moment/lo.js +77 -0
  1731. package/locales/moment/lt.js +136 -0
  1732. package/locales/moment/lv.js +105 -0
  1733. package/locales/moment/me.js +128 -0
  1734. package/locales/moment/mi.js +71 -0
  1735. package/locales/moment/mk.js +97 -0
  1736. package/locales/moment/ml.js +93 -0
  1737. package/locales/moment/mn.js +111 -0
  1738. package/locales/moment/mr.js +214 -0
  1739. package/locales/moment/ms-my.js +87 -0
  1740. package/locales/moment/ms.js +86 -0
  1741. package/locales/moment/mt.js +67 -0
  1742. package/locales/moment/my.js +102 -0
  1743. package/locales/moment/nb.js +71 -0
  1744. package/locales/moment/ne.js +132 -0
  1745. package/locales/moment/nl-be.js +113 -0
  1746. package/locales/moment/nl.js +115 -0
  1747. package/locales/moment/nn.js +70 -0
  1748. package/locales/moment/oc-lnc.js +96 -0
  1749. package/locales/moment/pa-in.js +133 -0
  1750. package/locales/moment/pl.js +151 -0
  1751. package/locales/moment/pt-br.js +69 -0
  1752. package/locales/moment/pt.js +74 -0
  1753. package/locales/moment/ro.js +87 -0
  1754. package/locales/moment/ru.js +224 -0
  1755. package/locales/moment/sd.js +92 -0
  1756. package/locales/moment/se.js +68 -0
  1757. package/locales/moment/si.js +80 -0
  1758. package/locales/moment/sk.js +156 -0
  1759. package/locales/moment/sl.js +182 -0
  1760. package/locales/moment/sq.js +76 -0
  1761. package/locales/moment/sr-cyrl.js +138 -0
  1762. package/locales/moment/sr.js +140 -0
  1763. package/locales/moment/ss.js +95 -0
  1764. package/locales/moment/sv.js +79 -0
  1765. package/locales/moment/sw.js +66 -0
  1766. package/locales/moment/ta.js +142 -0
  1767. package/locales/moment/te.js +99 -0
  1768. package/locales/moment/tet.js +79 -0
  1769. package/locales/moment/tg.js +128 -0
  1770. package/locales/moment/th.js +76 -0
  1771. package/locales/moment/tk.js +102 -0
  1772. package/locales/moment/tl-ph.js +68 -0
  1773. package/locales/moment/tlh.js +135 -0
  1774. package/locales/moment/tr.js +117 -0
  1775. package/locales/moment/tzl.js +100 -0
  1776. package/locales/moment/tzm-latn.js +65 -0
  1777. package/locales/moment/tzm.js +65 -0
  1778. package/locales/moment/ug-cn.js +122 -0
  1779. package/locales/moment/uk.js +178 -0
  1780. package/locales/moment/ur.js +93 -0
  1781. package/locales/moment/uz-latn.js +65 -0
  1782. package/locales/moment/uz.js +62 -0
  1783. package/locales/moment/vi.js +91 -0
  1784. package/locales/moment/x-pseudo.js +84 -0
  1785. package/locales/moment/yo.js +64 -0
  1786. package/locales/moment/zh-cn.js +131 -0
  1787. package/locales/moment/zh-hk.js +112 -0
  1788. package/locales/moment/zh-mo.js +111 -0
  1789. package/locales/moment/zh-tw.js +110 -0
  1790. package/locales/moment-timezone/moment-timezone-with-data.js +1582 -0
  1791. package/npm-shrinkwrap.json +17 -0
  1792. package/oAuth/.npmignore +2 -0
  1793. package/oAuth/bundles/index.umd.js +495 -0
  1794. package/oAuth/fesm2022/index.mjs +478 -0
  1795. package/oAuth/fesm2022/index.mjs.map +1 -0
  1796. package/oAuth/index.d.ts +43 -0
  1797. package/oAuth/package.json +23 -0
  1798. package/package-lock.json +17 -0
  1799. package/package.json +16 -0
  1800. package/runtime/base/.npmignore +2 -0
  1801. package/runtime/base/bundles/index.umd.js +6144 -0
  1802. package/runtime/base/fesm2022/index.mjs +6180 -0
  1803. package/runtime/base/fesm2022/index.mjs.map +1 -0
  1804. package/runtime/base/index.d.ts +1426 -0
  1805. package/runtime/base/package.json +23 -0
  1806. package/runtime/dynamic/.npmignore +2 -0
  1807. package/runtime/dynamic/bundles/index.umd.js +887 -0
  1808. package/runtime/dynamic/fesm2022/index.mjs +950 -0
  1809. package/runtime/dynamic/fesm2022/index.mjs.map +1 -0
  1810. package/runtime/dynamic/index.d.ts +164 -0
  1811. package/runtime/dynamic/package.json +23 -0
  1812. package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -0
  1813. package/scripts/d3/d3.min.js +2 -0
  1814. package/scripts/datatable/datatable.js +3787 -0
  1815. package/scripts/iscroll/build/iscroll.js +2091 -0
  1816. package/scripts/jquery-ui/ui/widgets/droppable.js +503 -0
  1817. package/scripts/jquery-ui/ui/widgets/resizable.js +1275 -0
  1818. package/scripts/jquery-ui/ui/widgets/sortable.js +1608 -0
  1819. package/scripts/jquery.ui.touch-punch/jquery.ui.touch-punch.min.js +11 -0
  1820. package/scripts/summernote/dist/summernote-lite.min.js +2 -0
  1821. package/scripts/swipey/swipey.jquery.plugin.js +799 -0
  1822. package/scripts/tree-keyboard-navigation/keyboard-navigation.js +251 -0
  1823. package/security/.npmignore +2 -0
  1824. package/security/bundles/index.umd.js +446 -0
  1825. package/security/fesm2022/index.mjs +444 -0
  1826. package/security/fesm2022/index.mjs.map +1 -0
  1827. package/security/index.d.ts +130 -0
  1828. package/security/package.json +23 -0
  1829. package/swipey/.npmignore +2 -0
  1830. package/swipey/bundles/index.umd.js +54 -0
  1831. package/swipey/fesm2022/index.mjs +51 -0
  1832. package/swipey/fesm2022/index.mjs.map +1 -0
  1833. package/swipey/index.d.ts +21 -0
  1834. package/swipey/package.json +23 -0
  1835. package/transpiler/.npmignore +2 -0
  1836. package/transpiler/bundles/index.umd.js +814 -0
  1837. package/transpiler/fesm2022/index.mjs +808 -0
  1838. package/transpiler/fesm2022/index.mjs.map +1 -0
  1839. package/transpiler/index.d.ts +47 -0
  1840. package/transpiler/package.json +24 -0
  1841. package/variables/.npmignore +2 -0
  1842. package/variables/bundles/index.umd.js +3174 -0
  1843. package/variables/fesm2022/index.mjs +3236 -0
  1844. package/variables/fesm2022/index.mjs.map +1 -0
  1845. package/variables/index.d.ts +468 -0
  1846. package/variables/package.json +23 -0
@@ -0,0 +1,3339 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@wm/components/basic/anchor'), require('@wm/components/input/button'), require('@angular/core'), require('@angular/forms'), require('@wm/core'), require('@wm/components/base'), require('@wm/components/prefab'), require('@wm/components/data/list'), require('lodash-es'), require('@wm/components/data/table'), require('rxjs/operators'), require('@wm/components/data/live-table')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@angular/common', '@wm/components/basic/anchor', '@wm/components/input/button', '@angular/core', '@angular/forms', '@wm/core', '@wm/components/base', '@wm/components/prefab', '@wm/components/data/list', 'lodash-es', '@wm/components/data/table', 'rxjs/operators', '@wm/components/data/live-table'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.data = global.wm.components.data || {}, global.wm.components.data.form = {}), global.ng.common, global.wm.components.basic.anchor, global.wm.components.input.button, global.ng.core, global.ng.forms, global.wm.core, global.wm.components.base, global.wm.components.prefab, global.wm.components.data.list, global._, global.wm.components.data.table, global.rxjs.operators, global.wm.components.data.livetable));
5
+ })(this, (function (exports, i6, anchor, button, i0, i1, i1$1, i5, i4, i3, lodashEs, table, operators, i1$2) { 'use strict';
6
+
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var i6__namespace = /*#__PURE__*/_interopNamespaceDefault(i6);
25
+ var i0__namespace = /*#__PURE__*/_interopNamespaceDefault(i0);
26
+ var i1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1);
27
+ var i1$1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1$1);
28
+ var i5__namespace = /*#__PURE__*/_interopNamespaceDefault(i5);
29
+ var i4__namespace = /*#__PURE__*/_interopNamespaceDefault(i4);
30
+ var i3__namespace = /*#__PURE__*/_interopNamespaceDefault(i3);
31
+ var i1$2__namespace = /*#__PURE__*/_interopNamespaceDefault(i1$2);
32
+
33
+ const propsMap = new Map([
34
+ ['autocomplete', { value: false, ...i5.PROP_BOOLEAN }],
35
+ ['captionalign', { value: 'left', ...i5.PROP_STRING }],
36
+ ['captionposition', { value: 'left', ...i5.PROP_STRING }],
37
+ ['captionsize', i5.PROP_STRING],
38
+ ['captionwidth', { value: 'xs-12 sm-3 md-3 lg-3', ...i5.PROP_STRING }],
39
+ ['class', i5.PROP_STRING],
40
+ ['collapsible', i5.PROP_BOOLEAN],
41
+ ['dataset', i5.PROP_ANY],
42
+ ['datasource', i5.PROP_STRING],
43
+ ['expanded', { value: true, ...i5.PROP_BOOLEAN }],
44
+ ['formdatasource', i5.PROP_STRING],
45
+ ['name', i5.PROP_STRING],
46
+ ['numberOfFields', i5.PROP_NUMBER],
47
+ ['show', { value: true, ...i5.PROP_BOOLEAN }],
48
+ ['showindevice', { displayType: 'inline-block', value: 'all', ...i5.PROP_STRING }],
49
+ ['subheading', i5.PROP_STRING],
50
+ ['tabindex', { value: 0, ...i5.PROP_NUMBER }],
51
+ ['title', i5.PROP_STRING],
52
+ ['itemsperrow', i5.PROP_STRING],
53
+ ]);
54
+ const registerFormProps = () => {
55
+ const formMap = new Map(propsMap);
56
+ formMap.set('action', i5.PROP_STRING);
57
+ formMap.set('defaultmode', { value: 'Edit', ...i5.PROP_STRING });
58
+ formMap.set('metadata', i5.PROP_STRING);
59
+ formMap.set('method', i5.PROP_STRING);
60
+ formMap.set('postmessage', { value: 'Data posted successfully', ...i5.PROP_STRING });
61
+ formMap.set('target', i5.PROP_STRING);
62
+ formMap.set('enctype', i5.PROP_STRING);
63
+ formMap.set('errormessage', { value: 'An error occured. Please try again!', ...i5.PROP_STRING });
64
+ formMap.set('messagelayout', { value: 'Inline', ...i5.PROP_STRING });
65
+ formMap.set('formdata', i5.PROP_STRING);
66
+ formMap.set('novalidate', i5.PROP_BOOLEAN);
67
+ formMap.set('validationtype', { value: 'default', ...i5.PROP_STRING });
68
+ formMap.set('iconclass', i5.PROP_STRING);
69
+ formMap.set('readonly', { value: false, ...i5.PROP_BOOLEAN });
70
+ i5.register('wm-form', formMap);
71
+ };
72
+ const registerLiveFormProps = () => {
73
+ const liveFormMap = new Map(propsMap);
74
+ liveFormMap.set('defaultmode', { value: 'View', ...i5.PROP_STRING });
75
+ liveFormMap.set('formlayout', { value: 'inline', ...i5.PROP_STRING });
76
+ liveFormMap.set('insertmessage', { value: 'Record added successfully', ...i5.PROP_STRING });
77
+ liveFormMap.set('updatemessage', { value: 'Record updated successfully', ...i5.PROP_STRING });
78
+ liveFormMap.set('deletemessage', { value: 'Record deleted successfully', ...i5.PROP_STRING });
79
+ liveFormMap.set('errormessage', { value: 'An error occured. Please try again!', ...i5.PROP_STRING });
80
+ liveFormMap.set('messagelayout', { value: 'Toaster', ...i5.PROP_STRING });
81
+ liveFormMap.set('formdata', i5.PROP_STRING);
82
+ liveFormMap.set('novalidate', i5.PROP_BOOLEAN);
83
+ liveFormMap.set('validationtype', { value: 'default', ...i5.PROP_STRING });
84
+ liveFormMap.set('iconclass', i5.PROP_STRING);
85
+ i5.register('wm-liveform', liveFormMap);
86
+ };
87
+ const registerLiveFilterProps = () => {
88
+ const liveFilterMap = new Map(propsMap);
89
+ liveFilterMap.set('autoupdate', i5.PROP_BOOLEAN);
90
+ liveFilterMap.set('enableemptyfilter', { value: ' ', ...i5.PROP_STRING });
91
+ liveFilterMap.set('pagesize', { value: 20, ...i5.PROP_NUMBER });
92
+ liveFilterMap.set('iconclass', { value: 'wi wi-filter-list', ...i5.PROP_STRING });
93
+ i5.register('wm-livefilter', liveFilterMap);
94
+ };
95
+
96
+ const WIDGET_CONFIG$1 = { widgetType: 'wm-form', hostClass: 'panel app-panel app-form' };
97
+ const LOGIN_FORM_CONFIG = { widgetType: 'wm-form', hostClass: 'app-form app-login-form' };
98
+ const LIVE_FORM_CONFIG = { widgetType: 'wm-liveform', hostClass: 'panel app-panel app-liveform liveform-inline' };
99
+ const LIVE_FILTER_CONFIG = { widgetType: 'wm-livefilter', hostClass: 'panel app-panel app-livefilter clearfix liveform-inline' };
100
+ const getWidgetConfig = (isLiveForm, isLiveFilter, role) => {
101
+ let config = WIDGET_CONFIG$1;
102
+ if (isLiveForm !== null) {
103
+ config = LIVE_FORM_CONFIG;
104
+ }
105
+ else if (isLiveFilter !== null) {
106
+ config = LIVE_FILTER_CONFIG;
107
+ }
108
+ else if (role === 'app-login') {
109
+ config = LOGIN_FORM_CONFIG;
110
+ }
111
+ return config;
112
+ };
113
+ // Generate the form field with given field definition. Add a grid column wrapper around the form field.
114
+ const setMarkupForFormField = (field, columnWidth) => {
115
+ let propsTmpl = '';
116
+ lodashEs.forEach(field, (value, key) => {
117
+ propsTmpl = `${propsTmpl} ${key}="${value}"`;
118
+ });
119
+ return `<wm-gridcolumn columnwidth="${columnWidth}">
120
+ <wm-form-field ${propsTmpl}></wm-form-field>
121
+ </wm-gridcolumn>`;
122
+ };
123
+ // Function to find out the first invalid element in form
124
+ const findInvalidElement = ($formEle, ngForm) => {
125
+ const $ele = $formEle.find('form.ng-invalid:visible, [formControlName].ng-invalid:visible').first();
126
+ let formObj = ngForm;
127
+ // If element is form, find out the first invalid element in this form
128
+ if ($ele.is('form')) {
129
+ formObj = ngForm && ngForm.controls[$ele.attr('formControlName') || $ele.attr('name')];
130
+ if (formObj) {
131
+ return findInvalidElement($ele, formObj);
132
+ }
133
+ }
134
+ return {
135
+ ngForm: formObj,
136
+ $ele: $ele
137
+ };
138
+ };
139
+ // Function to get the active element markup based on widget type
140
+ const getActiveElement = (element) => {
141
+ const widgetType = element.getAttribute('widgettype');
142
+ switch (widgetType) {
143
+ case 'select':
144
+ return element.querySelector('select');
145
+ case 'textarea':
146
+ return element.querySelector('textarea');
147
+ default:
148
+ return element.querySelector('input');
149
+ }
150
+ };
151
+ const setTouchedState = (self, ngForm, fieldName) => {
152
+ if (ngForm.valid) {
153
+ return;
154
+ }
155
+ if (ngForm.controls) {
156
+ lodashEs.forEach(ngForm.controls, (ctrl, fieldName) => {
157
+ setTouchedState(self, ctrl, fieldName);
158
+ });
159
+ }
160
+ else {
161
+ let element = self.$element.find(`[wmformfield][key="${fieldName}"]`);
162
+ if (!element.length) {
163
+ element = self.$element.find(`[wmformfield][name="${fieldName}"]`);
164
+ }
165
+ element[0].setAttribute('__errormsg', element[0].getAttribute('__validationId'));
166
+ const activeElement = getActiveElement(element[0]);
167
+ activeElement?.setAttribute('aria-invalid', ngForm.invalid);
168
+ activeElement?.setAttribute('aria-describedby', element[0].getAttribute('__validationId'));
169
+ ngForm.markAsTouched();
170
+ }
171
+ };
172
+ class FormComponent extends i5.StylableComponent {
173
+ static { this.initializeProps = registerFormProps(); }
174
+ set isLayoutDialog(nv) {
175
+ if (nv) {
176
+ i1$1.removeClass(this.nativeElement, 'panel app-panel liveform-inline');
177
+ }
178
+ this._isLayoutDialog = nv;
179
+ }
180
+ get isLayoutDialog() {
181
+ return this._isLayoutDialog;
182
+ }
183
+ set isUpdateMode(nv) {
184
+ this._isUpdateMode = nv;
185
+ this.formFields.forEach(field => {
186
+ field.setReadOnlyState(nv);
187
+ });
188
+ }
189
+ get isUpdateMode() {
190
+ return this._isUpdateMode;
191
+ }
192
+ submit($event) {
193
+ this._debouncedSubmitForm($event);
194
+ }
195
+ onReset() {
196
+ this.reset();
197
+ }
198
+ onKeydownHandler(event) {
199
+ this._triggeredByUser = true;
200
+ }
201
+ // returns the formArray control on the parentForm.
202
+ get parentFormArray() {
203
+ return this.parentForm && this.isParentList && this.parentForm.ngform.get(this.parentList.name);
204
+ }
205
+ // returns true only when closest livelist is the immediate parent of the form.
206
+ // checks for livelist having any form elements with parentForm name.
207
+ // If livelist is not containing any parentForm elements then it returns true.
208
+ get isParentList() {
209
+ if (this.parentList && this.parentForm && !i1$1.isDefined(this._formIsInList)) {
210
+ const formEle = this.$element;
211
+ const listEle = formEle.closest('.app-livelist[name="' + this.parentList.name + '"]');
212
+ if (listEle.length) {
213
+ this._formIsInList = !(listEle.find('form[widget-id="' + this.parentForm.widgetId + '"]')).length;
214
+ }
215
+ }
216
+ return i1$1.isDefined(this._formIsInList) ? this._formIsInList : this.parentList;
217
+ }
218
+ constructor(inj, envInjector, fb, app, dialogService, dynamicComponentProvider, ngZone, parentList, parentForm, parentPrefab, parentPartial, onBeforeSubmitEvt, onSubmitEvt, onBeforeRenderEvt, binddataset, bindformdata, isLiveForm, isLiveFilter, role, key, name, explicitContext) {
219
+ super(inj, getWidgetConfig(isLiveForm, isLiveFilter, role), explicitContext);
220
+ this.envInjector = envInjector;
221
+ this.fb = fb;
222
+ this.app = app;
223
+ this.dialogService = dialogService;
224
+ this.dynamicComponentProvider = dynamicComponentProvider;
225
+ this.ngZone = ngZone;
226
+ this.parentList = parentList;
227
+ this.parentForm = parentForm;
228
+ this.parentPrefab = parentPrefab;
229
+ this.parentPartial = parentPartial;
230
+ this.onBeforeSubmitEvt = onBeforeSubmitEvt;
231
+ this.onSubmitEvt = onSubmitEvt;
232
+ this.onBeforeRenderEvt = onBeforeRenderEvt;
233
+ this.binddataset = binddataset;
234
+ this.bindformdata = bindformdata;
235
+ this._widgetClass = '';
236
+ this._captionClass = '';
237
+ this.formFields = [];
238
+ this.formfields = {};
239
+ this.formWidgets = {};
240
+ this.filterWidgets = {};
241
+ this.buttonArray = [];
242
+ this.dataoutput = {};
243
+ this.formdata = {};
244
+ this.statusMessage = {
245
+ caption: '',
246
+ type: ''
247
+ };
248
+ this.primaryKey = [];
249
+ this._debouncedUpdateFieldSource = lodashEs.debounce(this.updateFieldSource, 350);
250
+ this.validationMessages = [];
251
+ this._debouncedSubmitForm = i1$1.debounce(($event) => {
252
+ // calling submit event in ngZone as change detection is not triggered post the submit callback and actions like notification are not shown
253
+ this.ngZone.run(() => {
254
+ this.submitForm($event);
255
+ });
256
+ }, 250);
257
+ i5.styler(this.nativeElement, this);
258
+ // remove title property as attribute as it is causing unnecessary tooltip
259
+ i1$1.removeAttr(this.nativeElement, 'title');
260
+ this.isUpdateMode = true;
261
+ this.dialogId = this.nativeElement.getAttribute('dialogId');
262
+ this.ngform = fb.group({});
263
+ this.bindingValue = key || name;
264
+ // On value change in form, update the dataoutput
265
+ const onValueChangeSubscription = this.ngform.valueChanges
266
+ .subscribe(this.updateDataOutput.bind(this));
267
+ this.registerDestroyListener(() => onValueChangeSubscription.unsubscribe());
268
+ this.elScope = this;
269
+ this.addEventsToContext(this.context);
270
+ }
271
+ ngAfterContentInit() {
272
+ setTimeout(() => {
273
+ this.componentRefs.forEach(componentRef => {
274
+ if (componentRef.name) {
275
+ // Register widgets inside form with formWidgets
276
+ this.formWidgets[componentRef.name] = componentRef;
277
+ }
278
+ });
279
+ }, 250);
280
+ }
281
+ ngAfterViewInit() {
282
+ if (this.parentForm && this.parentForm.ngform && this.isParentList) {
283
+ // setting formArray control on ngform.
284
+ if (!lodashEs.get(this.parentForm.ngform.controls, this.parentList.name)) {
285
+ this.parentForm.ngform.setControl(this.parentList.name, new i1.FormArray([]));
286
+ }
287
+ // pushing the ngform to formArray.
288
+ this.parentFormArray.push(this.ngform);
289
+ this.formArrayIndex = this.parentFormArray.length - 1;
290
+ }
291
+ this.addInnerNgFormToForm(this.bindingValue);
292
+ setTimeout(() => {
293
+ $(this.nativeElement).find('div[data-role="form-field"], div[data-role="filter-field"]').addClass(this.itemsPerRowClass);
294
+ });
295
+ }
296
+ findOperationType() { }
297
+ addInnerNgFormToForm(binding) {
298
+ if (this.parentForm && this.parentForm.ngform) {
299
+ // handling as formArray when parent is list. Hence returning here from adding to parentForm again.
300
+ if (this.isParentList) {
301
+ return;
302
+ }
303
+ // assigning the control name of the form inside the prefab with the prefab name.
304
+ // This will happen only when there is only one form inside prefab.
305
+ // We do not support changing this when multiple forms are inside prefab.
306
+ // This scenario has to be handled by end user by changing form names in prefab according to the datamodel binding.
307
+ const parentContainer = this.parentPrefab || this.parentPartial;
308
+ if (parentContainer) {
309
+ let parentContentEl;
310
+ if (this.parentPrefab) {
311
+ parentContentEl = parentContainer.$element.find('[wmprefabcontainer]');
312
+ }
313
+ else {
314
+ parentContentEl = parentContainer.$element;
315
+ }
316
+ /**
317
+ * assigning the form name to the parentContainer name i.e. partial name or perfab name by following
318
+ * 1. retrieving all the forms in the parentContainer
319
+ * 2. consider the first form
320
+ * 3. if this form is inside list i.e. also find if this list is also inside the parentContainer (prefab / partial)
321
+ * 4. then do not change the form name when form is inside list and also when there are siblings to the form
322
+ * 5. this means form name change applies only when there is single form (immediate child) inside the parentContainer.
323
+ */
324
+ const prefabInnerForm = parentContentEl.find('form').first();
325
+ if (lodashEs.get(prefabInnerForm[0], 'widget.widgetId') === this.widgetId) {
326
+ // check whether form inside prefab container is inside the list. If true, do not change the name.
327
+ if (!prefabInnerForm.isParentList && !prefabInnerForm.siblings('form').length) {
328
+ binding = lodashEs.get(parentContainer, 'name');
329
+ }
330
+ }
331
+ }
332
+ let counter = 1;
333
+ let innerBinding = binding;
334
+ // Inner forms may have same names. If same name is present, append unqiue identifier
335
+ while (this.parentForm.ngform.controls.hasOwnProperty(innerBinding)) {
336
+ innerBinding = `${binding}_${counter}`;
337
+ counter++;
338
+ }
339
+ this.formGroupName = innerBinding;
340
+ // If parent form is present, add the current form as as formGroup for parent form
341
+ this.parentForm.ngform.addControl(innerBinding, this.ngform);
342
+ }
343
+ }
344
+ // Expose the events on context so that they can be accessed by form actions
345
+ addEventsToContext(context) {
346
+ context.cancel = () => this.cancel();
347
+ context.reset = () => this.reset();
348
+ context.save = evt => this.save(evt);
349
+ context.saveAndNew = () => this.saveAndNew();
350
+ context.saveAndView = () => this.saveAndView();
351
+ context.delete = () => this.delete();
352
+ context.new = () => this.new();
353
+ context.edit = () => this.edit();
354
+ context.highlightInvalidFields = () => this.highlightInvalidFields();
355
+ context.filter = () => this.filter();
356
+ context.clearFilter = () => this.clearFilter();
357
+ context.submit = evt => this.submit(evt);
358
+ }
359
+ // This method gets all the inner forms and validates each form.
360
+ setValidationOnInnerForms(validateTouch) {
361
+ const formEle = this.getNativeElement();
362
+ const formObjs = formEle.querySelectorAll('.app-form');
363
+ lodashEs.forEach(formObjs, e => {
364
+ const formInstance = e.widget;
365
+ // differentiating the validationMessages prefix based on the formGroupName
366
+ // as the formName's are same when forms are in list
367
+ let formName = lodashEs.get(formInstance, 'formGroupName') || formInstance.name;
368
+ if (i1$1.isDefined(formInstance.formArrayIndex)) {
369
+ formName = formName + '[' + formInstance.formArrayIndex + ']';
370
+ }
371
+ let current = formInstance;
372
+ while (lodashEs.get(current, 'parentForm')) {
373
+ let parentName = current.parentForm.formGroupName || current.parentForm.name;
374
+ if (current.parentForm.parentFormArray) {
375
+ parentName = parentName + '[' + current.parentForm.formArrayIndex + ']';
376
+ }
377
+ formName = parentName + '.' + formName;
378
+ current = current.parentForm;
379
+ }
380
+ this.setValidationOnFields(formInstance, formName, validateTouch);
381
+ });
382
+ }
383
+ /**
384
+ * This method sets validation on formFields.
385
+ * Applies to innerform and also sets innerform validation on parent form.
386
+ * @param prefix contains the form name, which also includes its parents form name
387
+ * @param {boolean} validateTouch
388
+ */
389
+ setValidationOnFields(form, prefix, validateTouch) {
390
+ const controls = form.ngform.controls;
391
+ const formFields = form.formFields;
392
+ if (!formFields) {
393
+ return;
394
+ }
395
+ lodashEs.forEach(controls, (v, k) => {
396
+ const field = formFields.find(e => e.key === k);
397
+ if (!field || (validateTouch && !v.touched)) {
398
+ return;
399
+ }
400
+ field.nativeElement.querySelector('input')?.setAttribute('aria-invalid', v.invalid);
401
+ // invoking the prepareValidation on both parent form and current form.
402
+ this.prepareValidationObj(v, k, field, prefix);
403
+ this.prepareValidationObj.call(form, v, k, field, prefix);
404
+ });
405
+ }
406
+ // Assigns / updates validationMessages based on angular errors on field
407
+ prepareValidationObj(v, k, field, prefix) {
408
+ const index = this.validationMessages.findIndex(e => (e.field === k && e.fullyQualifiedFormName === prefix));
409
+ if (v.invalid) {
410
+ if (index === -1) {
411
+ /**
412
+ * field contains the fieldName
413
+ * value contains the field value
414
+ * errorType contains the list of errors
415
+ * message contains the validation message
416
+ * getElement returns the element having focus-target
417
+ * formName returns the name of the form
418
+ */
419
+ this.validationMessages.push({
420
+ field: k,
421
+ value: field.value,
422
+ errorType: lodashEs.keys(v.errors),
423
+ message: field.validationmessage || '',
424
+ getElement: () => {
425
+ return field.$element.find('[focus-target]');
426
+ },
427
+ formName: lodashEs.last(prefix.split('.')),
428
+ fullyQualifiedFormName: prefix
429
+ });
430
+ }
431
+ else {
432
+ this.validationMessages[index].value = field.value;
433
+ this.validationMessages[index].errorType = lodashEs.keys(v.errors);
434
+ }
435
+ }
436
+ else if (v.valid && index > -1) {
437
+ this.validationMessages.splice(index, 1);
438
+ }
439
+ }
440
+ // This will return a object containing the error details from the list of formFields that are invalid
441
+ setValidationMsgs(validateTouch) {
442
+ if (!this.formFields.length && lodashEs.isEmpty(this.ngform.controls)) {
443
+ return;
444
+ }
445
+ this.setValidationOnFields(this, this.name, validateTouch);
446
+ this.setValidationOnInnerForms(validateTouch);
447
+ }
448
+ // change and blur events are added from the template
449
+ handleEvent(node, eventName, callback, locals) {
450
+ if (eventName !== 'submit') {
451
+ super.handleEvent(this.nativeElement, eventName, callback, locals);
452
+ }
453
+ }
454
+ updateFieldSource() {
455
+ if (this.formdatasource && this.formdatasource.execute(i1$1.DataSource.Operation.IS_API_AWARE)) {
456
+ return;
457
+ }
458
+ else if (this.formdatasource && !this.formdatasource.twoWayBinding) {
459
+ return;
460
+ }
461
+ this.formFields.forEach(formField => {
462
+ formField.setFormWidget('datavaluesource', this.formdatasource);
463
+ formField.setFormWidget('binddatavalue', `${this.bindformdata}.${formField.key}`);
464
+ });
465
+ }
466
+ // This method loops through the form fields and highlights the invalid fields by setting state to touched
467
+ highlightInvalidFields() {
468
+ setTouchedState(this, this.ngform, '');
469
+ }
470
+ // Disable the form submit if form is in invalid state. Highlight all the invalid fields if validation type is default
471
+ validateFieldsOnSubmit() {
472
+ this.setValidationMsgs();
473
+ // Disable the form submit if form is in invalid state. For delete operation, do not check the validation.
474
+ if (this.operationType !== 'delete' && (this.validationtype === 'html' || this.validationtype === 'default')
475
+ && this.ngform && this.ngform.invalid) {
476
+ if (this.ngform.invalid) {
477
+ if (this.validationtype === 'default') {
478
+ this.highlightInvalidFields();
479
+ }
480
+ // Find the first invalid untoched element and set it to touched.
481
+ // Safari does not form validations. this will ensure that error is shown for user
482
+ const eleForm = findInvalidElement(this.$element, this.ngform);
483
+ const $invalidForm = eleForm.ngForm;
484
+ let $invalidEle = eleForm.$ele;
485
+ $invalidEle = $invalidEle.parent().find('[focus-target]');
486
+ const $target = eleForm?.$ele?.parent()?.find('input[type=checkbox], input[type=radio], input[type=file]')?.first();
487
+ if ($invalidEle.length) {
488
+ // on save click in page layout liveform, focus of autocomplete widget opens full-screen search.
489
+ if (!$invalidEle.hasClass('app-search-input')) {
490
+ $invalidEle.focus();
491
+ }
492
+ const ngEle = $invalidForm && $invalidForm.controls[$invalidEle.attr('formControlName') || $invalidEle.attr('name')];
493
+ if (ngEle && ngEle.markAsTouched) {
494
+ ngEle.markAsTouched();
495
+ }
496
+ i1$1.$appDigest();
497
+ return true;
498
+ }
499
+ else if ($target && $target.length) {
500
+ $target.focus();
501
+ }
502
+ return true;
503
+ }
504
+ return false;
505
+ }
506
+ return false;
507
+ }
508
+ onPropertyChange(key, nv, ov) {
509
+ switch (key) {
510
+ case 'captionalign':
511
+ this.captionAlignClass = 'align-' + nv;
512
+ break;
513
+ case 'captionposition':
514
+ this.setLayoutConfig();
515
+ break;
516
+ case 'captionwidth':
517
+ this.setLayoutConfig();
518
+ break;
519
+ case 'captionsize':
520
+ this.captionsize = nv;
521
+ break;
522
+ case 'novalidate':
523
+ // Set validation type based on the novalidate property
524
+ this.widget.validationtype = (nv === true || nv === 'true') ? 'none' : 'default';
525
+ break;
526
+ case 'formdata':
527
+ // For livelist when multiselect is enabled, formdata will be array of objects. In this case consider the last object as formdata.
528
+ if (lodashEs.isEqual(nv, ov)) {
529
+ break;
530
+ }
531
+ lodashEs.isArray(nv) ? this.setFormData(lodashEs.last(nv)) : this.setFormData(nv);
532
+ // if dataset on the formFields are not set as the datasourceChange is triggered before the formFields are registered.
533
+ if (!this.isDataSourceUpdated && this.datasource) {
534
+ this.onDataSourceChange();
535
+ }
536
+ break;
537
+ case 'defaultmode':
538
+ if (!this.isLayoutDialog) {
539
+ if (nv && nv === 'Edit') {
540
+ this.updateMode = true;
541
+ }
542
+ else {
543
+ this.updateMode = false;
544
+ }
545
+ this.isUpdateMode = this.updateMode;
546
+ }
547
+ break;
548
+ case 'datasource':
549
+ this.onDataSourceChange();
550
+ break;
551
+ case 'formdatasource':
552
+ this.onFormDataSourceChange();
553
+ break;
554
+ case 'metadata':
555
+ this.generateFormFields();
556
+ break;
557
+ case 'dataset':
558
+ const formFields = this.getFormFields();
559
+ formFields.forEach(field => {
560
+ // notifying the dataset change to the form-field widget.
561
+ if (!field.isDataSetBound && lodashEs.get(field.formWidget, 'dataset$')) {
562
+ field.formWidget.dataset$.next();
563
+ }
564
+ });
565
+ break;
566
+ case 'readonly':
567
+ this.setReadonlyFields();
568
+ if (nv) {
569
+ this?.buttonArray?.forEach((button) => button.disabled = true);
570
+ }
571
+ else if (this.formWidgets) {
572
+ Object.values(this.formWidgets).forEach(widget => {
573
+ const w = widget;
574
+ if (w.widgetType === 'wm-form-action' && w.buttonDef) {
575
+ w.buttonDef.disabled = w.disabled ?? false;
576
+ }
577
+ });
578
+ }
579
+ break;
580
+ case 'itemsperrow':
581
+ i1$1.setListClass(this);
582
+ break;
583
+ default:
584
+ super.onPropertyChange(key, nv, ov);
585
+ }
586
+ }
587
+ // Event callbacks on success/error
588
+ onResultCb(data, status, event) {
589
+ const params = { $event: event, $data: data, $operation: this.operationType };
590
+ // whether service call success or failure call this method
591
+ this.invokeEventCallback('result', params);
592
+ if (status) {
593
+ // if service call is success call this method
594
+ this.invokeEventCallback('success', params);
595
+ }
596
+ else {
597
+ // if service call fails call this method
598
+ this.invokeEventCallback('error', params);
599
+ }
600
+ }
601
+ // Display or hide the inline message/ toaster
602
+ toggleMessage(show, msg, type, header) {
603
+ let template;
604
+ if (show && msg) {
605
+ template = (type === 'error' && this.errormessage) ? this.errormessage : msg;
606
+ if (this.messagelayout === 'Inline') {
607
+ template = this.checkAppServiceErrorMsg(type) || template;
608
+ this.statusMessage = { 'caption': template || '', type: type };
609
+ if (this.messageRef) {
610
+ this.messageRef.showMessage(this.statusMessage.caption, this.statusMessage.type);
611
+ }
612
+ // when message layout is inline on save, scroll the view to top of the form to see the status of the operation
613
+ if (!i1$1.isElementInViewport(this.$element[0])) {
614
+ i1$1.scrollToElement(this.$element[0]);
615
+ }
616
+ }
617
+ else {
618
+ this.app.notifyApp(template, type, header);
619
+ }
620
+ }
621
+ else {
622
+ this.statusMessage.caption = '';
623
+ }
624
+ }
625
+ // if there is an App.onServiceError handler for the app, that message should be used instead of server returned error message
626
+ checkAppServiceErrorMsg(type) {
627
+ const notificationAction = lodashEs.get(this.app, 'Actions.appNotification');
628
+ if (notificationAction && type === 'error') {
629
+ return notificationAction.getMessage();
630
+ }
631
+ return;
632
+ }
633
+ // Hide the inline message/ toaster
634
+ clearMessage() {
635
+ this.toggleMessage(false);
636
+ }
637
+ // Set the classes on the form based on the captionposition and captionwidth properties
638
+ setLayoutConfig() {
639
+ let layoutConfig;
640
+ layoutConfig = i5.getFieldLayoutConfig(this.captionwidth, this.captionposition, lodashEs.get(this.app.selectedViewPort, 'os'));
641
+ this._widgetClass = layoutConfig.widgetCls;
642
+ this._captionClass = layoutConfig.captionCls;
643
+ i1$1.$appDigest();
644
+ }
645
+ registerFormWidget(widget) {
646
+ const name = widget.name || widget.key;
647
+ this.formWidgets[name] = widget;
648
+ }
649
+ registerFormFields(formField) {
650
+ const fieldCount = this.formFields.push(formField);
651
+ this.formfields[formField.key] = formField;
652
+ this.registerFormWidget(formField);
653
+ this._debouncedUpdateFieldSource();
654
+ if (this.parentForm) {
655
+ this.parentForm.formFields.push(formField);
656
+ this.parentForm.formfields[formField.key] = formField;
657
+ // inner formfields are pushed to parentForm, passing current innerForm's formdata to set innerFormdata to these innerFormFields
658
+ this.parentForm.setFormData(this.parentForm.formdata, this.formFields, this.formdata || {});
659
+ }
660
+ // WMS-18967: Applying formadata after formfields are ready
661
+ if (fieldCount === this.numberOfFields && !lodashEs.isEmpty(this.formdata)) {
662
+ this.onDataSourceChange();
663
+ lodashEs.isArray(this.formdata) ? this.setFormData(lodashEs.last(this.formdata)) : this.setFormData(this.formdata);
664
+ }
665
+ }
666
+ registerActions(formAction) {
667
+ this.buttonArray.push(formAction);
668
+ }
669
+ // Update the dataoutput whenever there is a change in inside form widget value
670
+ updateFormDataOutput(dataObject) {
671
+ // Set the values of the widgets inside the live form (other than form fields) in form data
672
+ lodashEs.forEach(this.ngform.value, (val, key) => {
673
+ if (!lodashEs.find(this.formFields, { key })) {
674
+ dataObject[key] = val;
675
+ }
676
+ });
677
+ this.dataoutput = dataObject;
678
+ }
679
+ // Construct the data object merging the form fields and custom widgets data
680
+ constructDataObject() {
681
+ const formData = {};
682
+ const formFields = this.getFormFields();
683
+ // Get all form fields and prepare form data as key value pairs
684
+ formFields.forEach(field => {
685
+ let fieldName, fieldValue;
686
+ fieldValue = field.datavalue || field._control.value;
687
+ fieldValue = (fieldValue === null || fieldValue === '') ? undefined : fieldValue;
688
+ if (field.type === 'file') {
689
+ fieldValue = i1$1.getFiles(this.name, field.key + '_formWidget', field.multiple);
690
+ }
691
+ fieldName = field.key || field.target || field.name;
692
+ // on current Form, when field is innerForm field then we group these fields under new object using formGroupName as key
693
+ // For suppose, applicantName, applicantID are formfields in currentForm
694
+ // This form is having innerform i.e. address, these fields are listed as
695
+ // {"applicantName": "", "applicantID": "", "address": {"street": ""}}
696
+ if (field.form.widgetId !== this.widgetId && field.form.formGroupName) {
697
+ const fd = lodashEs.get(formData, field.form.formGroupName, {});
698
+ fd[fieldName] = fieldValue;
699
+ lodashEs.set(formData, field.form.formGroupName, fd);
700
+ }
701
+ else if ((typeof field.form.formArrayIndex === 'number') && field.form.isParentList && !this.parentForm) { // Fix for [WMS-25806]: use formArrayIndex only if form has a parent form
702
+ // setting formdata based on formArrayIndex
703
+ const fd = lodashEs.get(formData, field.form.parentList.name, []);
704
+ fd[field.form.formArrayIndex] = fd[field.form.formArrayIndex] || {};
705
+ fd[field.form.formArrayIndex][fieldName] = fieldValue;
706
+ lodashEs.set(formData, field.form.parentList.name, fd);
707
+ }
708
+ else {
709
+ // In case of update the field will be already present in form data
710
+ lodashEs.set(formData, fieldName, fieldValue);
711
+ }
712
+ });
713
+ this.updateFormDataOutput(formData);
714
+ return this.dataoutput;
715
+ }
716
+ updateDataOutput() {
717
+ this.constructDataObject();
718
+ if (this.ngform.touched) {
719
+ this.setValidationMsgs(true);
720
+ }
721
+ }
722
+ // FormFields will contain all the fields in parent and inner form also.
723
+ // This returns the formFields in the form based on the form name.
724
+ getFormFields() {
725
+ return lodashEs.filter(this.formFields, formField => {
726
+ return formField.form.name === this.name;
727
+ });
728
+ }
729
+ setFieldValue(field, data, innerFormdata) {
730
+ const key = field.key || field.name;
731
+ // if customfield param value is not in the formdata then do not assign field value
732
+ // as it can contain default value which will again be overridden by undefined.
733
+ const fd = innerFormdata ? innerFormdata : data;
734
+ if (fd) {
735
+ if (!innerFormdata && field.defaultvalue) { // Fix for [WMS-31245]: when child form has no formdata and if its field has default value, then use default value instead of parent data
736
+ field.value = field.defaultvalue;
737
+ }
738
+ else if (fd.hasOwnProperty(key)) {
739
+ field.value = lodashEs.get(fd, key);
740
+ }
741
+ else if (lodashEs.includes(key, '.')) {
742
+ // key contains '.' when mapping the fields to child reference i.e. childCol is having key as "parent.childCol"
743
+ if (fd.hasOwnProperty(lodashEs.split(key, '.')[0])) {
744
+ field.value = lodashEs.get(fd, key);
745
+ }
746
+ }
747
+ // WMS-18906: For default value, do not mark the form as dirty.
748
+ if (this.dirty && !this._triggeredByUser) {
749
+ this.markAsPristine();
750
+ }
751
+ }
752
+ const formGroupName = field.form.formGroupName;
753
+ /**
754
+ * if formGroupName is defined which means field is inside the inner form
755
+ * then set the formdata on the field's form using formGroupName
756
+ */
757
+ if (formGroupName && lodashEs.get(data, formGroupName)) {
758
+ this.setFormData.call(field.form, data[formGroupName]);
759
+ }
760
+ // if formdata is assigned later then on propertyChangeHandler, even inner forms data also needs to be updated.
761
+ if (lodashEs.get(field.form, 'parentFormArray')) {
762
+ this.setFormDataFromParentFormData.call(field.form, data);
763
+ }
764
+ }
765
+ setFormData(data, innerFormFields, innerFormdata) {
766
+ // whereas formFields explicitly passed can contain innerform fields also.
767
+ const formFields = innerFormFields || this.formFields;
768
+ formFields.forEach(field => {
769
+ this.setFieldValue(field, data, innerFormdata);
770
+ if (field.fieldValidations) {
771
+ field.fieldValidations.setCustomValidationMessage();
772
+ }
773
+ });
774
+ this.constructDataObject();
775
+ }
776
+ resetFormState() {
777
+ // clearing the validationMessages on reset.
778
+ if (this.validationMessages.length) {
779
+ this.validationMessages = [];
780
+ }
781
+ if (!this.ngform) {
782
+ return;
783
+ }
784
+ this.ngform.markAsUntouched();
785
+ this.ngform.markAsPristine();
786
+ }
787
+ reset() {
788
+ this.resetFormState();
789
+ this.formFields.forEach(field => {
790
+ field.value = '';
791
+ if (field.widgettype === 'upload' || field.type === i1$1.DataType.BLOB) {
792
+ this.resetFileUploadWidget(field, true);
793
+ }
794
+ else if (field.widgettype === 'slider') {
795
+ this.resetSliderWidget(field);
796
+ }
797
+ field.nativeElement.querySelector('input')?.removeAttribute('aria-invalid');
798
+ });
799
+ this.constructDataObject();
800
+ this.clearMessage();
801
+ }
802
+ resetSliderWidget(field) {
803
+ const $formEle = this.$element;
804
+ const slider = $formEle.find('[name="' + field.key + '_formWidget"]').closest('.slider-control');
805
+ if (slider.length) {
806
+ slider.css('--end', `50%`);
807
+ }
808
+ }
809
+ savePrevformFields() {
810
+ this.prevformFields = i1$1.getClonedObject(this.formFields.map(field => {
811
+ return {
812
+ 'key': field.key,
813
+ 'type': field.type,
814
+ 'widgettype': field.widgettype,
815
+ 'outputformat': field.outputformat,
816
+ 'value': field.value
817
+ };
818
+ }));
819
+ }
820
+ savePrevDataValues() {
821
+ this.prevDataValues = this.formFields.map((obj) => {
822
+ return { 'key': obj.key, 'value': obj.value };
823
+ });
824
+ }
825
+ setReadonlyFields() {
826
+ this.formFields.forEach(field => {
827
+ field.setReadOnlyState();
828
+ });
829
+ }
830
+ resetFileUploadWidget(field, skipValueSet) {
831
+ const $formEle = this.$element;
832
+ $formEle.find('[name="' + field.key + '_formWidget"]').val('');
833
+ field._control.reset();
834
+ if (!skipValueSet) {
835
+ field.href = '';
836
+ field.value = null;
837
+ }
838
+ }
839
+ emptyDataModel() {
840
+ this.formFields.forEach(field => {
841
+ if (i1$1.isDefined(field)) {
842
+ if (field.type === i1$1.DataType.BLOB) {
843
+ this.resetFileUploadWidget(field);
844
+ }
845
+ else {
846
+ field.datavalue = '';
847
+ }
848
+ }
849
+ });
850
+ }
851
+ setDefaultValues() {
852
+ this.formFields.forEach(field => {
853
+ this.onFieldDefaultValueChange(field, field.defaultvalue);
854
+ });
855
+ }
856
+ setOperationType(mode) {
857
+ this.operationType = mode || 'insert';
858
+ }
859
+ new() {
860
+ this.resetFormState();
861
+ this.operationType = i5.Live_Operations.INSERT;
862
+ this.clearMessage();
863
+ if (this.isSelected) {
864
+ this.savePrevformFields();
865
+ }
866
+ this.emptyDataModel();
867
+ setTimeout(() => {
868
+ this.setDefaultValues();
869
+ this.savePrevDataValues();
870
+ this.constructDataObject();
871
+ });
872
+ this.isUpdateMode = true;
873
+ }
874
+ edit() {
875
+ this.resetFormState();
876
+ this.clearMessage();
877
+ this.operationType = i5.Live_Operations.UPDATE;
878
+ if (this.isSelected) {
879
+ this.savePrevformFields();
880
+ this.savePrevDataValues();
881
+ }
882
+ this.prevDataObject = i1$1.getClonedObject(this.formdata || {});
883
+ this.setReadonlyFields();
884
+ this.isUpdateMode = true;
885
+ i1$1.$appDigest();
886
+ }
887
+ triggerWMEvent(eventName) {
888
+ const tableId = this.nativeElement.getAttribute('dependsontable');
889
+ if (!tableId) {
890
+ return;
891
+ }
892
+ i1$1.$invokeWatchers(true);
893
+ this.app.notify('wm-event', { eventName, widgetName: tableId });
894
+ }
895
+ submitForm($event) {
896
+ let template, formData, result;
897
+ const dataSource = this.datasource;
898
+ // Disable the form submit if form is in invalid state.
899
+ if (this.validateFieldsOnSubmit()) {
900
+ return;
901
+ }
902
+ formData = i1$1.getClonedObject(this.constructDataObject());
903
+ const getParams = () => {
904
+ return { $event, $formData: formData, $data: formData };
905
+ };
906
+ if (this.onBeforeSubmitEvt) {
907
+ if (this.invokeEventCallback('beforesubmit', getParams()) === false) {
908
+ return;
909
+ }
910
+ else {
911
+ this.resetFormState();
912
+ }
913
+ }
914
+ else {
915
+ this.resetFormState();
916
+ }
917
+ if (this.onSubmitEvt || dataSource) {
918
+ // If on submit is there execute it and if it returns true do service variable invoke else return
919
+ // If its a service variable call setInput and assign form data and invoke the service
920
+ if (dataSource) {
921
+ const currentPageNum = dataSource.pagination && dataSource.pagination.number + 1;
922
+ const operationType = this.operationType ? this.operationType : 'insert';
923
+ i5.performDataOperation(dataSource, formData, { operationType: operationType })
924
+ .then((data) => {
925
+ if (dataSource.category === 'wm.CrudVariable') {
926
+ this.triggerWMEvent('resetEditMode');
927
+ this.datasource.execute(i1$1.DataSource.Operation.LIST_RECORDS, {
928
+ 'skipToggleState': true,
929
+ 'operation': 'list',
930
+ 'page': currentPageNum,
931
+ 'preventMissingOpMsg': true
932
+ });
933
+ if (this.dialogId) {
934
+ this.closeDialog();
935
+ }
936
+ }
937
+ if (i1$1.isDefined(data.body)) {
938
+ result = i1$1.getValidJSON(data.body);
939
+ result = i1$1.isDefined(result) ? result : data.body;
940
+ }
941
+ else {
942
+ result = data;
943
+ }
944
+ return {
945
+ 'result': result,
946
+ 'status': true,
947
+ 'message': this.postmessage,
948
+ 'type': 'success'
949
+ };
950
+ }, (error) => {
951
+ template = this.errormessage || error.error || error;
952
+ i1$1.$appDigest();
953
+ return {
954
+ 'result': lodashEs.get(error, 'error') || error,
955
+ 'status': false,
956
+ 'message': template,
957
+ 'type': 'error'
958
+ };
959
+ }).then(response => {
960
+ if ((response.type === 'error' && !this.onError) || (response.type === 'success' && !this.onSuccess)) {
961
+ this.toggleMessage(true, response.message, response.type);
962
+ }
963
+ this.invokeEventCallback('submit', getParams());
964
+ this.onResultCb(response.result, response.status, $event);
965
+ });
966
+ }
967
+ else {
968
+ this.invokeEventCallback('submit', getParams());
969
+ this.onResultCb({}, true, $event);
970
+ }
971
+ }
972
+ else {
973
+ this.onResultCb({}, true, $event);
974
+ }
975
+ }
976
+ closeDialog() {
977
+ this.dialogService.close(this.dialogId);
978
+ }
979
+ // Method to show/hide the panel header or footer based on the buttons
980
+ showButtons(position) {
981
+ return lodashEs.some(this.buttonArray, btn => {
982
+ return lodashEs.includes(btn.position, position) && btn.updateMode === this.isUpdateMode;
983
+ });
984
+ }
985
+ // Expand or collapse the panel
986
+ expandCollapsePanel() {
987
+ if (this.collapsible) {
988
+ // flip the active flag
989
+ this.expanded = !this.expanded;
990
+ }
991
+ }
992
+ onDataSourceUpdate(response, newForm, updateMode) {
993
+ if (newForm) {
994
+ this.new();
995
+ }
996
+ else {
997
+ this.setFormData(response);
998
+ this.closeDialog();
999
+ }
1000
+ this.isUpdateMode = i1$1.isDefined(updateMode) ? updateMode : true;
1001
+ }
1002
+ /**
1003
+ * This method tranverses through the parent containing formdata and returns the parent formdata.
1004
+ * @param form, represents the current form instance
1005
+ * @returns {any}
1006
+ */
1007
+ getNearestParentFormData(form) {
1008
+ if (!form.parentForm) {
1009
+ return {};
1010
+ }
1011
+ if (!form.bindformdata && lodashEs.get(form.parentForm, 'formdata') && !lodashEs.isEmpty(form.parentForm.formdata)) {
1012
+ return form.parentForm.formdata;
1013
+ }
1014
+ return this.getNearestParentFormData(form.parentForm);
1015
+ }
1016
+ setFormDataFromParentFormData(formdata) {
1017
+ if (lodashEs.isEmpty(this.formdata) && this.parentForm && formdata) {
1018
+ /**
1019
+ * If form is inside list,
1020
+ * 1. directly applying the formdata to the formArray to update the formdata on list of forms using patchValue.
1021
+ * 2. and also setting individual formdata to the form inside each item based on formArrayIndex, when form is not bound to formdata.
1022
+ * 3. explicitly invoking formdata as formFields will contain all the formfields including innerForm's fields
1023
+ * (if we do not invoke explicitly then formFields will just contain the fields inside current form and not inner form fields)
1024
+ * 4. if childFormArrayData is not available we will check for inner form data using "formGroupName" and will set the innerform data
1025
+ * If not inside list, just set the formdata on all the formfields including innerForm fields
1026
+ */
1027
+ if (this.parentFormArray) {
1028
+ let childFormArrayData = lodashEs.get(formdata, this.parentList.name);
1029
+ if (childFormArrayData) {
1030
+ if (!lodashEs.isArray(childFormArrayData)) {
1031
+ childFormArrayData = [childFormArrayData];
1032
+ }
1033
+ this.parentFormArray.patchValue(childFormArrayData);
1034
+ if (!this.bindformdata) {
1035
+ this.formdata = childFormArrayData[this.formArrayIndex];
1036
+ }
1037
+ this.setFormData(this.formdata);
1038
+ }
1039
+ else if (this.isParentList && this.parentForm.formGroupName) {
1040
+ const parentFormData = lodashEs.get(formdata, this.parentForm.formGroupName);
1041
+ this.setFormDataFromParentFormData(parentFormData);
1042
+ }
1043
+ }
1044
+ else {
1045
+ this.setFormData(formdata);
1046
+ }
1047
+ }
1048
+ }
1049
+ // On form data source change. This method is overridden by live form and live filter
1050
+ onDataSourceChange() {
1051
+ if (lodashEs.get(this.formFields, 'length') && !this.bindformdata) {
1052
+ this.isDataSourceUpdated = true;
1053
+ /**
1054
+ * formdata on the parent form will be set before the inner forms are rendered.
1055
+ * Hence handling formdata on the innerForms, which might be rendered slowly (suppose prefab with form)
1056
+ * setting inner form's formdata obtained from parent formdata
1057
+ * this applies only when formdata is not given on the inner form.
1058
+ */
1059
+ const formdata = this.getNearestParentFormData(this);
1060
+ this.setFormDataFromParentFormData(formdata);
1061
+ }
1062
+ }
1063
+ // On form data source change. This method is overridden by live form and live filter
1064
+ onFormDataSourceChange() {
1065
+ this.updateFieldSource();
1066
+ }
1067
+ // On form field default value change. This method is overridden by live form and live filter
1068
+ onFieldDefaultValueChange(field, nv) {
1069
+ field.value = i5.parseValueByType(nv, undefined, field.widgettype, field.trailingzero);
1070
+ // WMS-22434: For default value set on individual form fields, do not mark the form as dirty.
1071
+ if (this.dirty && !this._triggeredByUser) {
1072
+ this.markAsPristine();
1073
+ }
1074
+ }
1075
+ // On form field value change. This method is overridden by live form and live filter
1076
+ onFieldValueChange() {
1077
+ }
1078
+ // Function to generate and compile the form fields from the metadata
1079
+ async generateFormFields() {
1080
+ let noOfColumns;
1081
+ let $gridLayout;
1082
+ // Check if grid layout is present or not for first time
1083
+ if (lodashEs.isUndefined(this._isGridLayoutPresent)) {
1084
+ this._isGridLayoutPresent = this.$element.find('.panel-body [wmlayoutgrid]').length > 0;
1085
+ }
1086
+ if (this._isGridLayoutPresent) {
1087
+ $gridLayout = this.$element.find('.form-elements [wmlayoutgrid]').first();
1088
+ noOfColumns = Number($gridLayout.attr('columns')) || 1;
1089
+ }
1090
+ else {
1091
+ $gridLayout = this.$element.find('.form-elements .dynamic-form-container');
1092
+ if (!$gridLayout.length) {
1093
+ this.$element.find('.form-elements').prepend('<div class="dynamic-form-container"></div>');
1094
+ $gridLayout = this.$element.find('.form-elements .dynamic-form-container');
1095
+ }
1096
+ noOfColumns = 1;
1097
+ }
1098
+ const columnWidth = 12 / noOfColumns;
1099
+ let fieldTemplate = '';
1100
+ let colCount = 0;
1101
+ let index;
1102
+ let userFields;
1103
+ let fields = this.metadata ? this.metadata.data || this.metadata : [];
1104
+ this.formFields = []; // empty the form fields
1105
+ if (lodashEs.isEmpty(fields)) {
1106
+ return;
1107
+ }
1108
+ if (this.onBeforeRenderEvt) {
1109
+ userFields = this.invokeEventCallback('beforerender', { $metadata: fields });
1110
+ if (userFields) {
1111
+ fields = userFields;
1112
+ }
1113
+ }
1114
+ if (!lodashEs.isArray(fields)) {
1115
+ return;
1116
+ }
1117
+ while (fields[colCount]) {
1118
+ let colTmpl = '';
1119
+ for (index = 0; index < noOfColumns; index++) {
1120
+ if (fields[colCount]) {
1121
+ colTmpl += setMarkupForFormField(fields[colCount], columnWidth);
1122
+ }
1123
+ colCount++;
1124
+ }
1125
+ fieldTemplate += `<wm-gridrow>${colTmpl}</wm-gridrow>`;
1126
+ }
1127
+ if (!this._isGridLayoutPresent) {
1128
+ fieldTemplate = `<wm-layoutgrid>${fieldTemplate}</wm-layoutgrid>`;
1129
+ }
1130
+ this.dynamicFormRef.clear();
1131
+ // Setup dynamic context for the form component
1132
+ if (!this._dynamicContext) {
1133
+ this._dynamicContext = Object.create(this.viewParent);
1134
+ this._dynamicContext.form = this;
1135
+ }
1136
+ try {
1137
+ // Generate unique component selector for this dynamic form instance
1138
+ const componentSelector = `app-form-dynamic-${this.widgetId}`;
1139
+ // Get the dynamically compiled form component class
1140
+ const DynamicFormComponentClass = await this.dynamicComponentProvider.getComponentFactoryRef(componentSelector, fieldTemplate, {
1141
+ noCache: true,
1142
+ transpile: true
1143
+ });
1144
+ if (!DynamicFormComponentClass) {
1145
+ console.error(`Failed to create dynamic form component: ${componentSelector}`);
1146
+ return;
1147
+ }
1148
+ // Create component with both environmentInjector (for standalone imports/providers)
1149
+ // and injector (for element-level dependencies)
1150
+ const componentRef = this.dynamicFormRef.createComponent(DynamicFormComponentClass, {
1151
+ index: 0,
1152
+ environmentInjector: this.envInjector,
1153
+ injector: this.inj
1154
+ });
1155
+ // Extend component instance with dynamic context
1156
+ i1$1.extendProto(componentRef.instance, this._dynamicContext);
1157
+ // Append to DOM
1158
+ if ($gridLayout[0]) {
1159
+ $gridLayout[0].appendChild(componentRef.location.nativeElement);
1160
+ }
1161
+ else {
1162
+ console.error('Form grid layout element not found');
1163
+ }
1164
+ // Set form data after component creation
1165
+ this.setFormData(this.formdata);
1166
+ }
1167
+ catch (error) {
1168
+ console.error('Error creating dynamic form component:', error);
1169
+ }
1170
+ }
1171
+ get mode() {
1172
+ return this.operationType || this.findOperationType();
1173
+ }
1174
+ get dirty() {
1175
+ return this.ngform && this.ngform.dirty;
1176
+ }
1177
+ /**
1178
+ * This method sets the form state to pristine by internally calling angular markAsPristine method on the form
1179
+ * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false
1180
+ * @returns {void}
1181
+ */
1182
+ markAsPristine(value = false) {
1183
+ this.ngform.markAsPristine({ onlySelf: value });
1184
+ }
1185
+ /**
1186
+ * This method sets the form state to dirty by internally calling angular markAsDirty method on the form
1187
+ * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false
1188
+ * @returns {void}
1189
+ */
1190
+ markAsDirty(value = false) {
1191
+ this.ngform.markAsDirty({ onlySelf: value });
1192
+ }
1193
+ get invalid() {
1194
+ return this.ngform && this.ngform.invalid;
1195
+ }
1196
+ get touched() {
1197
+ return this.ngform && this.ngform.touched;
1198
+ }
1199
+ get valid() {
1200
+ return this.ngform && this.ngform.valid;
1201
+ }
1202
+ get pristine() {
1203
+ return this.ngform && this.ngform.pristine;
1204
+ }
1205
+ /**
1206
+ * This method sets the form state to touched by internally calling angular markAsTouched method on the form
1207
+ * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false
1208
+ * @returns {void}
1209
+ */
1210
+ markAsTouched(value = false) {
1211
+ this.ngform.markAsTouched({ onlySelf: value });
1212
+ }
1213
+ /**
1214
+ * This method sets the form state to untouched by internally calling angular markAsUntouched method on the form
1215
+ * @param value, When true, mark only this control. When false or not supplied, marks all direct ancestors. Default is false
1216
+ * @returns {void}
1217
+ */
1218
+ markAsUntouched(value = false) {
1219
+ this.ngform.markAsUntouched({ onlySelf: value });
1220
+ }
1221
+ invokeActionEvent($event, expression) {
1222
+ const fn = i1$1.$parseEvent(expression);
1223
+ fn(this.viewParent, Object.assign(this.context, { $event }));
1224
+ }
1225
+ ngOnDestroy() {
1226
+ // on form destroy, removing this form from the parentForm too.
1227
+ const controls = this.parentForm && lodashEs.get(this.parentForm, 'ngform.controls');
1228
+ if (controls) {
1229
+ // when current form is inside the list (i.e. incase of formArray).
1230
+ if (lodashEs.get(this.parentList, 'name') && controls.hasOwnProperty(this.parentList.name)) {
1231
+ //get the index of current form in the list and remove the FormControl from FormArray
1232
+ const index = lodashEs.findIndex(this.parentList.getWidgets(this.name), { widgetId: this.widgetId });
1233
+ this.parentForm.ngform.controls[this.parentList.name].removeAt(index);
1234
+ }
1235
+ // when we have formGroupName set i.e. multiple formInstance with counter appended to formName
1236
+ if (this.formGroupName && controls.hasOwnProperty(this.formGroupName)) {
1237
+ this.parentForm.ngform.removeControl(this.formGroupName);
1238
+ }
1239
+ else {
1240
+ this.parentForm.ngform.removeControl(this.name);
1241
+ }
1242
+ }
1243
+ // MEMORY LEAK FIX: Clear ViewContainerRef for dynamically generated form fields
1244
+ if (this.dynamicFormRef) {
1245
+ this.dynamicFormRef.clear();
1246
+ }
1247
+ // MEMORY LEAK FIX: Clear dynamic context object
1248
+ if (this._dynamicContext) {
1249
+ Object.keys(this._dynamicContext).forEach(key => {
1250
+ delete this._dynamicContext[key];
1251
+ });
1252
+ this._dynamicContext = null;
1253
+ }
1254
+ // MEMORY LEAK FIX: Clear all data arrays and objects
1255
+ this.formFields = [];
1256
+ this.formWidgets = {};
1257
+ this.filterWidgets = {};
1258
+ this.buttonArray = [];
1259
+ this.validationMessages = [];
1260
+ this.formdata = {};
1261
+ this.dataoutput = {};
1262
+ this.formfields = {};
1263
+ this.prevDataValues = null;
1264
+ this.prevDataObject = null;
1265
+ this.prevformFields = null;
1266
+ // MEMORY LEAK FIX: Nullify debounced function closures
1267
+ this._debouncedUpdateFieldSource = null;
1268
+ this._debouncedSubmitForm = null;
1269
+ super.ngOnDestroy();
1270
+ }
1271
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormComponent, deps: [{ token: i0__namespace.Injector }, { token: i0__namespace.EnvironmentInjector }, { token: i1__namespace.FormBuilder }, { token: i1$1__namespace.App }, { token: i1$1__namespace.AbstractDialogService }, { token: i1$1__namespace.DynamicComponentRefProvider }, { token: i0__namespace.NgZone }, { token: i3__namespace.ListComponent, optional: true }, { token: FormComponent, optional: true, skipSelf: true }, { token: i4__namespace.PrefabDirective, optional: true, skipSelf: true }, { token: i5__namespace.PartialDirective, optional: true, skipSelf: true }, { token: 'beforesubmit.event', attribute: true }, { token: 'submit.event', attribute: true }, { token: 'beforerender.event', attribute: true }, { token: 'dataset.bind', attribute: true }, { token: 'formdata.bind', attribute: true }, { token: 'wmLiveForm', attribute: true }, { token: 'wmLiveFilter', attribute: true }, { token: 'data-role', attribute: true }, { token: 'key', attribute: true }, { token: 'name', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
1272
+ static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: FormComponent, isStandalone: true, selector: "form[wmForm]", host: { listeners: { "submit": "submit($event)", "reset": "onReset()", "keydown": "onKeydownHandler($event)" }, properties: { "action": "this.action" } }, providers: [
1273
+ i5.provideAsWidgetRef(FormComponent)
1274
+ ], queries: [{ propertyName: "componentRefs", predicate: i5.WidgetRef, descendants: true }], viewQueries: [{ propertyName: "dynamicFormRef", first: true, predicate: ["dynamicForm"], descendants: true, read: i0.ViewContainerRef, static: true }, { propertyName: "messageRef", first: true, predicate: i5.MessageComponent, descendants: true }], usesInheritance: true, ngImport: i0__namespace, template: "<ng-template #content><ng-content></ng-content></ng-template>\n\n@if (formlayout === 'page') {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n @if (!isLayoutDialog && (title || subheading || iconclass || showButtons('header'))) {\n <div class=\"panel-heading\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n @if (iconclass) {\n <i class=\"app-icon panel-icon\" aria-hidden=\"true\" [ngClass]=\"iconclass\"></i>\n }\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n <div class=\"form-action panel-actions basic-btn-grp\">\n @for (btn of buttonArray | filter : 'position' : 'header'; track btn; let index = $index) {\n <ng-container\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_header_' + index, {btn:btn})\">\n </ng-container>\n }\n @if (collapsible) {\n <button type=\"button\" class=\"app-icon wi panel-action\" [title]=\"expanded? (appLocale?.LABEL_COLLAPSE||'Collapse'):(appLocale?.LABEL_EXPAND||'Expand')\"\n [ngClass]=\"expanded ? 'wi-minus': 'wi-plus'\" (click)=\"expandCollapsePanel();\"></button>\n }\n </div>\n </h3>\n </div>\n }\n <div class=\"panel-body\" [ngClass]=\"{'form-elements': isLayoutDialog, 'form-body': !isLayoutDialog}\" [class.hidden]=\"!expanded\">\n @if (!!statusMessage.caption) {\n <p wmMessage [attr.aria-hidden]=\"!statusMessage.caption\" [attr.aria-label]=\"statusMessage.caption\" caption.bind=\"statusMessage.caption\" type.bind=\"statusMessage.type\"></p>\n }\n <div [ngClass]=\"{'form-elements': !isLayoutDialog, 'form-content': isLayoutDialog}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"basic-btn-grp form-action panel-footer clearfix\" [ngClass]=\"{'modal-footer': isLayoutDialog}\" [class.hidden]=\"!expanded || !showButtons('footer')\">\n @for (btn of buttonArray | filter : 'position' : 'footer'; track btn; let index = $index) {\n <ng-container\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_footer_' + index, {btn:btn})\">\n </ng-container>\n }\n </div>\n </div>\n}\n\n\n\n<ng-template #buttonRef let-btn=\"btn\">\n <button wmButton name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" type.bind=\"btn.type\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\" disabled.bind=\"ngform.status === 'PENDING' || btn.disabled\"\n tabindex.bind=\"btn.tabindex\" [attr.aria-label]=\"btn.displayName\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></button>\n</ng-template>\n\n<ng-template #anchorRef let-btn=\"btn\">\n <a wmAnchor name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\"\n hyperlink.bind=\"btn.hyperlink\" target.bind=\"btn.target\"\n tabindex.bind=\"btn.tabindex\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></a>\n</ng-template>\n\n<ng-container #dynamicForm></ng-container>\n", dependencies: [{ kind: "ngmodule", type: i6.CommonModule }, { kind: "directive", type: i6__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: anchor.AnchorComponent, selector: "a[wmAnchor]", exportAs: ["wmAnchor"] }, { kind: "component", type: button.ButtonComponent, selector: "button[wmButton]", exportAs: ["wmButton"] }, { kind: "component", type: i5.MessageComponent, selector: "[wmMessage]", exportAs: ["wmMessage"] }, { kind: "pipe", type: i5.FilterPipe, name: "filter" }] }); }
1275
+ }
1276
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormComponent, decorators: [{
1277
+ type: i0.Component,
1278
+ args: [{ standalone: true, imports: [i6.CommonModule, i5.FilterPipe, anchor.AnchorComponent, button.ButtonComponent, i5.MessageComponent], selector: 'form[wmForm]', providers: [
1279
+ i5.provideAsWidgetRef(FormComponent)
1280
+ ], template: "<ng-template #content><ng-content></ng-content></ng-template>\n\n@if (formlayout === 'page') {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n @if (!isLayoutDialog && (title || subheading || iconclass || showButtons('header'))) {\n <div class=\"panel-heading\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n @if (iconclass) {\n <i class=\"app-icon panel-icon\" aria-hidden=\"true\" [ngClass]=\"iconclass\"></i>\n }\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n <div class=\"form-action panel-actions basic-btn-grp\">\n @for (btn of buttonArray | filter : 'position' : 'header'; track btn; let index = $index) {\n <ng-container\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_header_' + index, {btn:btn})\">\n </ng-container>\n }\n @if (collapsible) {\n <button type=\"button\" class=\"app-icon wi panel-action\" [title]=\"expanded? (appLocale?.LABEL_COLLAPSE||'Collapse'):(appLocale?.LABEL_EXPAND||'Expand')\"\n [ngClass]=\"expanded ? 'wi-minus': 'wi-plus'\" (click)=\"expandCollapsePanel();\"></button>\n }\n </div>\n </h3>\n </div>\n }\n <div class=\"panel-body\" [ngClass]=\"{'form-elements': isLayoutDialog, 'form-body': !isLayoutDialog}\" [class.hidden]=\"!expanded\">\n @if (!!statusMessage.caption) {\n <p wmMessage [attr.aria-hidden]=\"!statusMessage.caption\" [attr.aria-label]=\"statusMessage.caption\" caption.bind=\"statusMessage.caption\" type.bind=\"statusMessage.type\"></p>\n }\n <div [ngClass]=\"{'form-elements': !isLayoutDialog, 'form-content': isLayoutDialog}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"basic-btn-grp form-action panel-footer clearfix\" [ngClass]=\"{'modal-footer': isLayoutDialog}\" [class.hidden]=\"!expanded || !showButtons('footer')\">\n @for (btn of buttonArray | filter : 'position' : 'footer'; track btn; let index = $index) {\n <ng-container\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('action_footer_' + index, {btn:btn})\">\n </ng-container>\n }\n </div>\n </div>\n}\n\n\n\n<ng-template #buttonRef let-btn=\"btn\">\n <button wmButton name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" type.bind=\"btn.type\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\" disabled.bind=\"ngform.status === 'PENDING' || btn.disabled\"\n tabindex.bind=\"btn.tabindex\" [attr.aria-label]=\"btn.displayName\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></button>\n</ng-template>\n\n<ng-template #anchorRef let-btn=\"btn\">\n <a wmAnchor name=\"{{btn.key}}\" caption.bind=\"btn.displayName\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" show.bind=\"btn.show\"\n (click)=\"invokeActionEvent($event, btn.action)\" hint.bind=\"btn.title\" shortcutkey.bind=\"btn.shortcutkey\"\n hyperlink.bind=\"btn.hyperlink\" target.bind=\"btn.target\"\n tabindex.bind=\"btn.tabindex\" [class.hidden]=\"btn.updateMode ? !isUpdateMode : isUpdateMode\"></a>\n</ng-template>\n\n<ng-container #dynamicForm></ng-container>\n" }]
1281
+ }], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: i0__namespace.EnvironmentInjector }, { type: i1__namespace.FormBuilder }, { type: i1$1__namespace.App }, { type: i1$1__namespace.AbstractDialogService }, { type: i1$1__namespace.DynamicComponentRefProvider }, { type: i0__namespace.NgZone }, { type: i3__namespace.ListComponent, decorators: [{
1282
+ type: i0.Optional
1283
+ }] }, { type: FormComponent, decorators: [{
1284
+ type: i0.SkipSelf
1285
+ }, {
1286
+ type: i0.Optional
1287
+ }] }, { type: i4__namespace.PrefabDirective, decorators: [{
1288
+ type: i0.SkipSelf
1289
+ }, {
1290
+ type: i0.Optional
1291
+ }] }, { type: i5__namespace.PartialDirective, decorators: [{
1292
+ type: i0.SkipSelf
1293
+ }, {
1294
+ type: i0.Optional
1295
+ }] }, { type: undefined, decorators: [{
1296
+ type: i0.Attribute,
1297
+ args: ['beforesubmit.event']
1298
+ }] }, { type: undefined, decorators: [{
1299
+ type: i0.Attribute,
1300
+ args: ['submit.event']
1301
+ }] }, { type: undefined, decorators: [{
1302
+ type: i0.Attribute,
1303
+ args: ['beforerender.event']
1304
+ }] }, { type: undefined, decorators: [{
1305
+ type: i0.Attribute,
1306
+ args: ['dataset.bind']
1307
+ }] }, { type: undefined, decorators: [{
1308
+ type: i0.Attribute,
1309
+ args: ['formdata.bind']
1310
+ }] }, { type: undefined, decorators: [{
1311
+ type: i0.Attribute,
1312
+ args: ['wmLiveForm']
1313
+ }] }, { type: undefined, decorators: [{
1314
+ type: i0.Attribute,
1315
+ args: ['wmLiveFilter']
1316
+ }] }, { type: undefined, decorators: [{
1317
+ type: i0.Attribute,
1318
+ args: ['data-role']
1319
+ }] }, { type: undefined, decorators: [{
1320
+ type: i0.Attribute,
1321
+ args: ['key']
1322
+ }] }, { type: undefined, decorators: [{
1323
+ type: i0.Attribute,
1324
+ args: ['name']
1325
+ }] }, { type: undefined, decorators: [{
1326
+ type: i0.Inject,
1327
+ args: ['EXPLICIT_CONTEXT']
1328
+ }, {
1329
+ type: i0.Optional
1330
+ }] }], propDecorators: { dynamicFormRef: [{
1331
+ type: i0.ViewChild,
1332
+ args: ['dynamicForm', { static: true, read: i0.ViewContainerRef }]
1333
+ }], messageRef: [{
1334
+ type: i0.ViewChild,
1335
+ args: [i5.MessageComponent]
1336
+ }], componentRefs: [{
1337
+ type: i0.ContentChildren,
1338
+ args: [i5.WidgetRef, { descendants: true }]
1339
+ }], action: [{
1340
+ type: i0.HostBinding,
1341
+ args: ['action']
1342
+ }], submit: [{
1343
+ type: i0.HostListener,
1344
+ args: ['submit', ['$event']]
1345
+ }], onReset: [{
1346
+ type: i0.HostListener,
1347
+ args: ['reset']
1348
+ }], onKeydownHandler: [{
1349
+ type: i0.HostListener,
1350
+ args: ['keydown', ['$event']]
1351
+ }] } });
1352
+
1353
+ class FormWidgetDirective {
1354
+ constructor(form, table, componentInstance, fb, name, key) {
1355
+ this.componentInstance = componentInstance;
1356
+ this.name = name;
1357
+ this.key = key;
1358
+ this.fb = fb;
1359
+ this.parent = form || table;
1360
+ this.ngform = this.parent.ngform;
1361
+ this.componentInstance.registerPropertyChangeListener((k, nv) => {
1362
+ if (k === 'datavalue' && this._control) {
1363
+ this._control.setValue(nv);
1364
+ }
1365
+ else if (k === 'name' && !this._control) {
1366
+ this.addControl(this.key || nv);
1367
+ }
1368
+ });
1369
+ }
1370
+ get _control() {
1371
+ const fieldName = this.key || this.name;
1372
+ if (!fieldName) {
1373
+ return undefined;
1374
+ }
1375
+ return this.ngform && this.ngform.controls[fieldName];
1376
+ }
1377
+ addControl(fieldName) {
1378
+ this.ngform.addControl(fieldName, this.createControl());
1379
+ }
1380
+ createControl() {
1381
+ return this.fb.control(this.componentInstance.datavalue);
1382
+ }
1383
+ ngOnInit() {
1384
+ const fieldName = this.key || this.name;
1385
+ if (fieldName && !this._control) {
1386
+ this.addControl(fieldName);
1387
+ this.parent.registerFormWidget(this.componentInstance);
1388
+ }
1389
+ }
1390
+ ngOnDestroy() {
1391
+ // MEMORY LEAK FIX: Clear all references
1392
+ this.ngform = null;
1393
+ this.fb = null;
1394
+ this.parent = null;
1395
+ this.componentInstance = null;
1396
+ }
1397
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormWidgetDirective, deps: [{ token: FormComponent, optional: true }, { token: table.TableComponent, optional: true }, { token: i5.WidgetRef, self: true }, { token: i1__namespace.FormBuilder }, { token: 'name', attribute: true }, { token: 'key', attribute: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
1398
+ static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: FormWidgetDirective, isStandalone: true, selector: "[wmFormWidget]", ngImport: i0__namespace }); }
1399
+ }
1400
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormWidgetDirective, decorators: [{
1401
+ type: i0.Directive,
1402
+ args: [{
1403
+ standalone: true,
1404
+ selector: '[wmFormWidget]'
1405
+ }]
1406
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1407
+ type: i0.Optional
1408
+ }, {
1409
+ type: i0.Inject,
1410
+ args: [FormComponent]
1411
+ }] }, { type: undefined, decorators: [{
1412
+ type: i0.Optional
1413
+ }, {
1414
+ type: i0.Inject,
1415
+ args: [table.TableComponent]
1416
+ }] }, { type: undefined, decorators: [{
1417
+ type: i0.Self
1418
+ }, {
1419
+ type: i0.Inject,
1420
+ args: [i5.WidgetRef]
1421
+ }] }, { type: i1__namespace.FormBuilder }, { type: undefined, decorators: [{
1422
+ type: i0.Attribute,
1423
+ args: ['name']
1424
+ }] }, { type: undefined, decorators: [{
1425
+ type: i0.Attribute,
1426
+ args: ['key']
1427
+ }] }] });
1428
+
1429
+ const registerProps$1 = () => {
1430
+ i5.register('wm-form-action', new Map([
1431
+ ['accessroles', i5.PROP_STRING],
1432
+ ['action', i5.PROP_STRING],
1433
+ ['class', i5.PROP_STRING],
1434
+ ['binding', i5.PROP_STRING],
1435
+ ['disabled', i5.PROP_BOOLEAN],
1436
+ ['display-name', i5.PROP_STRING],
1437
+ ['hyperlink', i5.PROP_STRING],
1438
+ ['iconclass', i5.PROP_STRING],
1439
+ ['iconname', i5.PROP_STRING],
1440
+ ['key', i5.PROP_STRING],
1441
+ ['position', { value: 'footer', ...i5.PROP_STRING }],
1442
+ ['shortcutkey', i5.PROP_STRING],
1443
+ ['show', { value: true, ...i5.PROP_BOOLEAN }],
1444
+ ['tabindex', { value: 0, ...i5.PROP_NUMBER }],
1445
+ ['target', i5.PROP_STRING],
1446
+ ['title', i5.PROP_STRING],
1447
+ ['type', { value: 'button', ...i5.PROP_STRING }],
1448
+ ['update-mode', { value: true, ...i5.PROP_BOOLEAN }],
1449
+ ['widget-type', { value: 'button', ...i5.PROP_STRING }]
1450
+ ]));
1451
+ };
1452
+
1453
+ const WIDGET_CONFIG = { widgetType: 'wm-form-action', hostClass: '' };
1454
+ class FormActionDirective extends i5.BaseComponent {
1455
+ static { this.initializeProps = registerProps$1(); }
1456
+ constructor(inj, form, explicitContext) {
1457
+ super(inj, WIDGET_CONFIG, explicitContext);
1458
+ this.form = form;
1459
+ }
1460
+ populateAction() {
1461
+ this.buttonDef = {
1462
+ key: this.key || this.binding,
1463
+ displayName: this['display-name'],
1464
+ show: this.show,
1465
+ class: this.class ? this.class : (this['widget-type'] === 'button' ? 'btn-secondary' : ''),
1466
+ iconclass: this.iconclass || '',
1467
+ title: lodashEs.isUndefined(this.title) ? (this['display-name'] || '') : this.title,
1468
+ action: this.action,
1469
+ accessroles: this.accessroles,
1470
+ shortcutkey: this.shortcutkey,
1471
+ disabled: this.disabled || this.form.readonly,
1472
+ tabindex: this.tabindex,
1473
+ iconname: this.iconname,
1474
+ type: this.type,
1475
+ updateMode: this['update-mode'],
1476
+ position: this.position,
1477
+ widgetType: this['widget-type'],
1478
+ hyperlink: this.hyperlink,
1479
+ target: this.target
1480
+ };
1481
+ this._propsInitialized = true;
1482
+ }
1483
+ ngOnInit() {
1484
+ super.ngOnInit();
1485
+ this.populateAction();
1486
+ this.form.registerActions(this.buttonDef);
1487
+ }
1488
+ onPropertyChange(key, nv, ov) {
1489
+ if (!this._propsInitialized) {
1490
+ return;
1491
+ }
1492
+ switch (key) {
1493
+ case 'disabled':
1494
+ this.buttonDef[key] = nv || this.form.readonly;
1495
+ break;
1496
+ case 'display-name':
1497
+ this.buttonDef.displayName = nv;
1498
+ default:
1499
+ this.buttonDef[key] = nv;
1500
+ break;
1501
+ }
1502
+ }
1503
+ ngOnDestroy() {
1504
+ // MEMORY LEAK FIX: Clear references
1505
+ this.form = null;
1506
+ this.buttonDef = null;
1507
+ super.ngOnDestroy();
1508
+ }
1509
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormActionDirective, deps: [{ token: i0__namespace.Injector }, { token: FormComponent, optional: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
1510
+ static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: FormActionDirective, isStandalone: true, selector: "[wmFormAction]", providers: [
1511
+ i5.provideAsWidgetRef(FormActionDirective)
1512
+ ], usesInheritance: true, ngImport: i0__namespace }); }
1513
+ }
1514
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormActionDirective, decorators: [{
1515
+ type: i0.Directive,
1516
+ args: [{
1517
+ standalone: true,
1518
+ selector: '[wmFormAction]',
1519
+ providers: [
1520
+ i5.provideAsWidgetRef(FormActionDirective)
1521
+ ]
1522
+ }]
1523
+ }], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: FormComponent, decorators: [{
1524
+ type: i0.Optional
1525
+ }] }, { type: undefined, decorators: [{
1526
+ type: i0.Inject,
1527
+ args: ['EXPLICIT_CONTEXT']
1528
+ }, {
1529
+ type: i0.Optional
1530
+ }] }] });
1531
+
1532
+ const registerProps = () => {
1533
+ const formFieldMap = new Map([
1534
+ ['dataentrymode', { value: 'default', ...i5.PROP_STRING }],
1535
+ ['debouncetime', { value: 250, ...i5.PROP_NUMBER }],
1536
+ ['defaultvalue', i5.PROP_STRING],
1537
+ ['displayname', i5.PROP_STRING],
1538
+ ['display-name', i5.PROP_STRING],
1539
+ ['field', i5.PROP_STRING],
1540
+ ['filterexpressions', i5.PROP_STRING],
1541
+ ['filter-on', i5.PROP_STRING],
1542
+ ['generator', i5.PROP_STRING],
1543
+ ['hint', i5.PROP_STRING],
1544
+ ['inputtype', i5.PROP_STRING],
1545
+ ['is-primary-key', i5.PROP_BOOLEAN],
1546
+ ['is-range', i5.PROP_BOOLEAN],
1547
+ ['is-related', i5.PROP_BOOLEAN],
1548
+ ['isformfield', { value: true }],
1549
+ ['key', i5.PROP_STRING],
1550
+ ['limit', i5.PROP_NUMBER],
1551
+ ['lookup-type', i5.PROP_STRING],
1552
+ ['lookup-field', i5.PROP_STRING],
1553
+ ['name', i5.PROP_STRING],
1554
+ ['matchmode', i5.PROP_STRING],
1555
+ ['maxdefaultvalue', i5.PROP_STRING],
1556
+ ['maxplaceholder', i5.PROP_STRING],
1557
+ ['mobile-display', { value: true, ...i5.PROP_BOOLEAN }],
1558
+ ['period', i5.PROP_BOOLEAN],
1559
+ ['pc-display', { value: true, ...i5.PROP_BOOLEAN }],
1560
+ ['placeholder', i5.PROP_STRING],
1561
+ ['primary-key', i5.PROP_BOOLEAN],
1562
+ ['related-entity-name', i5.PROP_STRING],
1563
+ ['required', i5.PROP_BOOLEAN],
1564
+ ['show', { value: true, ...i5.PROP_BOOLEAN }],
1565
+ ['tablet-display', { value: true, ...i5.PROP_BOOLEAN }],
1566
+ ['type', i5.PROP_STRING],
1567
+ ['validationmessage', i5.PROP_STRING],
1568
+ ['viewmodewidget', i5.PROP_STRING],
1569
+ ['widgettype', i5.PROP_STRING]
1570
+ ]);
1571
+ for (const key in i1$1.FormWidgetType) {
1572
+ const widgetName = 'wm-form-field-' + i1$1.FormWidgetType[key];
1573
+ const widgetProps = i5.getWidgetPropsByType(widgetName);
1574
+ formFieldMap.forEach((v, k) => {
1575
+ if (widgetProps.get(k) == undefined) {
1576
+ widgetProps.set(k, v);
1577
+ }
1578
+ });
1579
+ }
1580
+ };
1581
+
1582
+ // Custom validator to show validation error, if setValidationMessage method is used
1583
+ const customValidatorFn = () => {
1584
+ return { custom: true };
1585
+ };
1586
+ const FILE_TYPES = {
1587
+ 'image': 'image/*',
1588
+ 'video': 'video/*',
1589
+ 'audio': 'audio/*'
1590
+ };
1591
+ class FormFieldDirective extends i5.StylableComponent {
1592
+ static { this.initializeProps = registerProps(); }
1593
+ onKeydownHandler(event) {
1594
+ this._triggeredByUser = true;
1595
+ }
1596
+ handleClick(event) {
1597
+ this._clicktriggeredByUser = true;
1598
+ }
1599
+ constructor(inj, form, fb, viewport, app, parentList, bindChipclass, binddataset, binddisplayexpression, binddisplaylabel, _widgetType, name, binddisplayimagesrc, key, isRange, pcDisplay, mobileDisplay, tabletDisplay, contexts, explicitContext) {
1600
+ const WIDGET_CONFIG = {
1601
+ widgetType: 'wm-form-field',
1602
+ hostClass: '',
1603
+ widgetSubType: 'wm-form-field-' + (_widgetType || i1$1.FormWidgetType.TEXT).trim()
1604
+ };
1605
+ let resolveFn = i1$1.noop;
1606
+ super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));
1607
+ this._initPropsRes = resolveFn;
1608
+ this.app = app;
1609
+ this.fieldDefConfig = {};
1610
+ this.class = '';
1611
+ this.binddataset = binddataset;
1612
+ this.binddisplayimagesrc = binddisplayimagesrc;
1613
+ this.binddisplayexpression = binddisplayexpression;
1614
+ this.bindChipclass = bindChipclass;
1615
+ this.binddisplaylabel = binddisplaylabel;
1616
+ this.form = form;
1617
+ this.fb = fb;
1618
+ this.viewport = viewport;
1619
+ this._fieldName = key || name;
1620
+ this.isRange = isRange;
1621
+ this.excludeProps = new Set(['type', 'name']);
1622
+ this.widgettype = _widgetType;
1623
+ this.parentList = parentList;
1624
+ this.notifyForFields = [];
1625
+ if (this.binddataset || this.$element.attr('dataset')) {
1626
+ this.isDataSetBound = true;
1627
+ }
1628
+ contexts[0]._onFocusField = this._onFocusField.bind(this);
1629
+ contexts[0]._onBlurField = this._onBlurField.bind(this);
1630
+ this._debounceSetUpValidators = i1$1.debounce(() => this.setUpValidators(), 500);
1631
+ }
1632
+ _onFocusField($evt) {
1633
+ this._activeField = true;
1634
+ $($evt.target).closest('.live-field').addClass('active');
1635
+ }
1636
+ // Function to get the active element markup based on widget type
1637
+ getActiveElement() {
1638
+ const widgetType = this.nativeElement.getAttribute('widgettype');
1639
+ switch (widgetType) {
1640
+ case 'select':
1641
+ return this.nativeElement.querySelector('select');
1642
+ case 'textarea':
1643
+ return this.nativeElement.querySelector('textarea');
1644
+ default:
1645
+ return this.nativeElement.querySelector('input');
1646
+ }
1647
+ }
1648
+ setAriaAttributes() {
1649
+ const element = this.getActiveElement();
1650
+ if (this.ngform.controls[this._fieldName].invalid && this.ngform.controls[this._fieldName].touched && this.form.isUpdateMode) {
1651
+ this.nativeElement.setAttribute('__errormsg', `${this.nativeElement.getAttribute('__validationId')}`);
1652
+ element?.setAttribute('aria-invalid', `${this.ngform.controls[this._fieldName].invalid}`);
1653
+ element?.setAttribute('aria-describedby', `${this.nativeElement.getAttribute('__validationId')}`);
1654
+ }
1655
+ else {
1656
+ this.nativeElement.removeAttribute('__errormsg');
1657
+ element?.removeAttribute('aria-invalid');
1658
+ element?.removeAttribute('aria-describedby');
1659
+ }
1660
+ }
1661
+ _onBlurField($evt) {
1662
+ $($evt.target).closest('.live-field').removeClass('active');
1663
+ this.nativeElement.querySelector('p.text-danger');
1664
+ // Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes
1665
+ this.setAriaAttributes();
1666
+ this._activeField = false;
1667
+ this._triggeredByUser = false;
1668
+ this._clicktriggeredByUser = false;
1669
+ }
1670
+ // Expression to be evaluated in view mode of form field
1671
+ evaluateExpr(object, displayField, displayExpr) {
1672
+ if (!displayExpr || !displayField) {
1673
+ displayField = Object.keys(object)[0];
1674
+ // If dataset is not ready, display expression will not be defined
1675
+ if (!displayField) {
1676
+ return;
1677
+ }
1678
+ }
1679
+ return i5.getEvaluatedData(object, {
1680
+ field: displayField,
1681
+ expression: displayExpr
1682
+ }, this.viewParent);
1683
+ }
1684
+ // Expression to be evaluated in view mode of form field
1685
+ getDisplayExpr() {
1686
+ const caption = [];
1687
+ const value = this.value;
1688
+ const displayField = this.displayfield || this.displaylabel;
1689
+ const displayExpr = this.displayexpression;
1690
+ if (lodashEs.isObject(value)) {
1691
+ if (lodashEs.isArray(value)) {
1692
+ lodashEs.forEach(value, obj => {
1693
+ if (lodashEs.isObject(obj)) {
1694
+ caption.push(this.evaluateExpr(obj, displayField, displayExpr));
1695
+ }
1696
+ });
1697
+ }
1698
+ else {
1699
+ caption.push(this.evaluateExpr(value, displayField, displayExpr));
1700
+ }
1701
+ return lodashEs.join(caption, ',');
1702
+ }
1703
+ return (value === undefined || value === null) ? '' : this.value;
1704
+ }
1705
+ getCaption() {
1706
+ return (this.value === undefined || this.value === null) ? (lodashEs.get(this.form.dataoutput, this._fieldName) || '') : this.value;
1707
+ }
1708
+ // Notifies changes to observing validation fields
1709
+ notifyChanges() {
1710
+ lodashEs.forEach(this.notifyForFields, field => {
1711
+ field.fieldValidations.validate();
1712
+ });
1713
+ }
1714
+ // Registers observer of validation fields
1715
+ observeOn(fields) {
1716
+ this.fieldValidations.observeOn(fields, 'formfields');
1717
+ }
1718
+ // Method to setup validators for reactive form control
1719
+ setUpValidators(customValidator) {
1720
+ this.fieldValidations.setUpValidators(customValidator);
1721
+ }
1722
+ // sets the custom async validation on the form field
1723
+ setAsyncValidators(validators) {
1724
+ this.fieldValidations.setAsyncValidators(validators);
1725
+ }
1726
+ // sets the default and custom sync validation on the form field
1727
+ setValidators(validators) {
1728
+ this.fieldValidations.setValidators(validators);
1729
+ }
1730
+ // Method to set the properties on inner form widget
1731
+ setFormWidget(key, val) {
1732
+ if (this.formWidget && this.formWidget.widget) {
1733
+ if (key === 'inputtype' && this.widgettype === i1$1.FormWidgetType.TEXT) {
1734
+ key = 'type';
1735
+ }
1736
+ this.formWidget.widget[key] = val;
1737
+ }
1738
+ }
1739
+ boundFn(fn) {
1740
+ return fn();
1741
+ }
1742
+ // Method to set the properties on inner max form widget (when range is selected)
1743
+ setMaxFormWidget(key, val) {
1744
+ if (this.formWidgetMax) {
1745
+ this.formWidgetMax.widget[key] = val;
1746
+ }
1747
+ }
1748
+ onPropertyChange(key, nv, ov) {
1749
+ const isFormDirty = this.form.dirty;
1750
+ if (key !== 'tabindex') {
1751
+ super.onPropertyChange(key, nv, ov);
1752
+ }
1753
+ if (this.excludeProps.has(key)) {
1754
+ return;
1755
+ }
1756
+ // As upload widget is an HTML widget, only required property is setup
1757
+ if (this.widgettype === i1$1.FormWidgetType.UPLOAD) {
1758
+ if (key === 'required') {
1759
+ this._debounceSetUpValidators();
1760
+ }
1761
+ super.onPropertyChange(key, nv, ov);
1762
+ return;
1763
+ }
1764
+ this.setFormWidget(key, nv);
1765
+ // Placeholder should not be setup on max widget
1766
+ if (key !== 'placeholder') {
1767
+ this.setMaxFormWidget(key, nv);
1768
+ }
1769
+ switch (key) {
1770
+ case 'defaultvalue':
1771
+ this.form.onFieldDefaultValueChange(this, nv);
1772
+ break;
1773
+ case 'maxdefaultvalue':
1774
+ this.maxValue = nv;
1775
+ this.setMaxFormWidget('datavalue', nv);
1776
+ this.form.onMaxDefaultValueChange();
1777
+ break;
1778
+ case 'maxplaceholder':
1779
+ this.setMaxFormWidget('placeholder', nv);
1780
+ break;
1781
+ case 'required':
1782
+ // WMS-18906 : Do not make form as dirty during required prop initialization
1783
+ if (isFormDirty !== this.form.dirty) {
1784
+ this.form.markAsPristine();
1785
+ }
1786
+ case 'maxchars':
1787
+ case 'minvalue':
1788
+ case 'maxvalue':
1789
+ case 'regexp':
1790
+ case 'show':
1791
+ this._debounceSetUpValidators();
1792
+ break;
1793
+ case 'primary-key':
1794
+ if (nv) {
1795
+ this.form.setPrimaryKey(this._fieldName);
1796
+ }
1797
+ break;
1798
+ case 'display-name':
1799
+ this.displayname = nv;
1800
+ break;
1801
+ case 'readonly':
1802
+ this.setReadOnlyState();
1803
+ break;
1804
+ }
1805
+ }
1806
+ onStyleChange(key, nv, ov) {
1807
+ if (key === "width") {
1808
+ this.$element.css("width", nv);
1809
+ }
1810
+ this.setFormWidget(key, nv);
1811
+ this.setMaxFormWidget(key, nv);
1812
+ super.onStyleChange(key, nv, ov);
1813
+ }
1814
+ get datavalue() {
1815
+ return this.formWidget && this.formWidget.datavalue;
1816
+ }
1817
+ set datavalue(val) {
1818
+ if (this._control && this.widgettype !== i1$1.FormWidgetType.UPLOAD) {
1819
+ this._control.setValue(val);
1820
+ }
1821
+ }
1822
+ get value() {
1823
+ return this.datavalue;
1824
+ }
1825
+ set value(val) {
1826
+ this.datavalue = val;
1827
+ }
1828
+ get maxValue() {
1829
+ return this.formWidgetMax && this.formWidgetMax.datavalue;
1830
+ }
1831
+ set maxValue(val) {
1832
+ if (this._maxControl) {
1833
+ this._maxControl.setValue(val);
1834
+ }
1835
+ }
1836
+ get minValue() {
1837
+ return this.value;
1838
+ }
1839
+ set minValue(val) {
1840
+ this.value = val;
1841
+ }
1842
+ // Get the reactive form control
1843
+ get _control() {
1844
+ return this.ngform && this.ngform.controls[this._fieldName];
1845
+ }
1846
+ // Get the reactive max form control
1847
+ get _maxControl() {
1848
+ return this.ngform && this.ngform.controls[this._fieldName + '_max'];
1849
+ }
1850
+ // Get the displayValue
1851
+ get displayValue() {
1852
+ return this.formWidget && this.formWidget.displayValue;
1853
+ }
1854
+ //Get the timestamp
1855
+ get timestamp() {
1856
+ return this.formWidget && this.formWidget.timestamp;
1857
+ }
1858
+ //Get the charlength
1859
+ get charlength() {
1860
+ return this.formWidget && this.formWidget.charlength;
1861
+ }
1862
+ // Create the reactive form control
1863
+ createControl() {
1864
+ return this.fb.control(undefined, {
1865
+ validators: this._validators
1866
+ });
1867
+ }
1868
+ // On field value change, propagate event to parent form
1869
+ onValueChange(val) {
1870
+ if (!this.isDestroyed) {
1871
+ const captionEl = $(this.nativeElement).find('.caption-floating');
1872
+ if (captionEl.length > 0) {
1873
+ // hasValue check whether form-field has a value from passed val attribute
1874
+ // Added sanity check on val to support values liked 0, false etc as input val - WMS-20084
1875
+ // explicitly checking for input value or -webkit-autofill to see whether there are any autofilled fields - WMS-20141
1876
+ const hasValue = ((i1$1.isDefined(val) && val !== '' && val !== null) || captionEl.find('input').val()) || captionEl.find('input:-webkit-autofill').length;
1877
+ this.app.notify('captionPositionAnimate', {
1878
+ displayVal: hasValue,
1879
+ nativeEl: captionEl,
1880
+ isSelectMultiple: this.formWidget && this.formWidget.multiple,
1881
+ isFocused: this._activeField
1882
+ });
1883
+ }
1884
+ // Fix for [WMS-23959]: ADA issue - adding aria-describedby, aria-invalid, __errormsg attributes only when the form field is invalid , else removing the attributes
1885
+ this.setAriaAttributes();
1886
+ this.form.onFieldValueChange(this, val);
1887
+ this.notifyChanges();
1888
+ // Do mark as touched, only incase when user has entered an input but not through the script. Hence added mousedown event check
1889
+ // active class checks whether user is on the current field, if so marking the field as touched. And form field validation happens once a field is touched
1890
+ // _triggeredByUser checks whether the field is touched by the user or triggered from external script
1891
+ // WMS-22456: _clicktriggeredByUser checks when user selects datetimetype from picker, mark the field as touched to show validation errors in mobile
1892
+ if (this.$element.find('.active').length > 0 || this.form.touched) {
1893
+ if (this._triggeredByUser || (i1$1.isMobile() && this._clicktriggeredByUser && i1$1.isDateTimeType(this.widgettype))) {
1894
+ this.ngform.controls[this._fieldName].markAsTouched();
1895
+ }
1896
+ this.fieldValidations.setCustomValidationMessage();
1897
+ }
1898
+ }
1899
+ }
1900
+ onStatusChange(status) {
1901
+ if (!this.isDestroyed) {
1902
+ this.showPendingSpinner = (status === 'PENDING');
1903
+ // while running validation, widget is disabled and spinner is shown
1904
+ // otherwise formWidget disabled state is reset to the state of the formField.
1905
+ if (status === 'PENDING') {
1906
+ this.formWidget.disabled = true;
1907
+ }
1908
+ else if (this.formWidget.disabled !== this.disabled) {
1909
+ this.formWidget.disabled = this.disabled;
1910
+ }
1911
+ }
1912
+ }
1913
+ // Method to expose validation message and set control to invalid
1914
+ setValidationMessage(val) {
1915
+ setTimeout(() => {
1916
+ this.validationmessage = val;
1917
+ this.setUpValidators(customValidatorFn);
1918
+ });
1919
+ }
1920
+ setReadOnlyState() {
1921
+ let readOnly;
1922
+ if (this.form.isUpdateMode) {
1923
+ if (this['primary-key'] && !this['is-related'] && !this.period) {
1924
+ /*If the field is primary but is assigned set readonly false.
1925
+ Assigned is where the user inputs the value while a new entry.
1926
+ This is not editable(in update mode) once entry is successful*/
1927
+ readOnly = !(this.generator === 'assigned' && this.form.operationType !== 'update');
1928
+ }
1929
+ else {
1930
+ readOnly = this.readonly;
1931
+ }
1932
+ }
1933
+ else {
1934
+ // In view mode, set widget state to readonly always
1935
+ readOnly = true;
1936
+ }
1937
+ readOnly = readOnly || this.form.readonly;
1938
+ this.setFormWidget('readonly', readOnly);
1939
+ }
1940
+ resetDisplayInput() {
1941
+ if ((!i1$1.isDefined(this.value) || this.value === '')) {
1942
+ this.formWidget && this.formWidget.resetDisplayInput && this.formWidget.resetDisplayInput();
1943
+ }
1944
+ }
1945
+ reset() {
1946
+ if (this._control)
1947
+ this._control.reset();
1948
+ }
1949
+ triggerUploadEvent($event, eventName) {
1950
+ const params = { $event };
1951
+ if (eventName === 'change') {
1952
+ params.newVal = $event.target.files;
1953
+ params.oldVal = this._oldUploadVal;
1954
+ this._oldUploadVal = params.newVal;
1955
+ }
1956
+ this.invokeEventCallback(eventName, params);
1957
+ }
1958
+ registerFormField() {
1959
+ const fieldName = this._fieldName;
1960
+ if (this.parentList && !(this.form.parentList === this.parentList)) {
1961
+ let counter = 1;
1962
+ let _fieldName = fieldName;
1963
+ while (this.ngform.controls.hasOwnProperty(_fieldName)) {
1964
+ _fieldName = `${fieldName}_${counter}`;
1965
+ counter++;
1966
+ }
1967
+ this.ngform.addControl(_fieldName, this.createControl());
1968
+ this._fieldName = _fieldName;
1969
+ }
1970
+ else {
1971
+ this.ngform.addControl(fieldName, this.createControl());
1972
+ }
1973
+ const onValueChangeSubscription = this._control.valueChanges
1974
+ .pipe(operators.debounceTime(200))
1975
+ .subscribe(this.onValueChange.bind(this));
1976
+ this.registerDestroyListener(() => onValueChangeSubscription.unsubscribe());
1977
+ const onStatusChangeSubscription = this._control.statusChanges
1978
+ .pipe(operators.debounceTime(100))
1979
+ .subscribe(this.onStatusChange.bind(this));
1980
+ this.registerDestroyListener(() => onStatusChangeSubscription.unsubscribe());
1981
+ if (this.isRange === 'true') {
1982
+ this.ngform.addControl(fieldName + '_max', this.createControl());
1983
+ // registering for valueChanges on MaxformWidget
1984
+ const onMaxValueChangeSubscription = this._maxControl.valueChanges
1985
+ .pipe(operators.debounceTime(200))
1986
+ .subscribe(this.onValueChange.bind(this));
1987
+ this.registerDestroyListener(() => onMaxValueChangeSubscription.unsubscribe());
1988
+ }
1989
+ this.value = lodashEs.get(this.form.formdata, this._fieldName);
1990
+ }
1991
+ ngOnInit() {
1992
+ this.ngform = this.form.ngform;
1993
+ this.registerFormField();
1994
+ // Instantiate custom validators class for form field
1995
+ this.fieldValidations = new i5.BaseFieldValidations(this, this.formWidget, this.widgettype, this._control, this.form);
1996
+ super.ngOnInit();
1997
+ }
1998
+ prepareFormWidget() {
1999
+ this._initPropsRes();
2000
+ // setting displayExpressions on the formwidget explicitly as expr was evaluated to "".
2001
+ this.setFormWidget('binddisplaylabel', this.binddisplaylabel);
2002
+ this.setFormWidget('binddisplayexpression', this.binddisplayexpression);
2003
+ this.setFormWidget('binddisplayimagesrc', this.binddisplayimagesrc);
2004
+ this.setFormWidget('bindChipclass', this.bindChipclass);
2005
+ this.setFormWidget('binddataset', this.binddataset);
2006
+ this.registerReadyStateListener(() => {
2007
+ this.key = this._fieldName || this.target || this.binding;
2008
+ this.viewmodewidget = this.viewmodewidget || i5.getDefaultViewModeWidget(this.widgettype);
2009
+ // For upload widget, generate the permitted field
2010
+ if (this.widgettype === i1$1.FormWidgetType.UPLOAD) {
2011
+ let fileType;
2012
+ // Create the accepts string from file type and extensions
2013
+ fileType = this.filetype ? FILE_TYPES[this.filetype] : '';
2014
+ this.permitted = fileType + (this.extensions ? (fileType ? ',' : '') + this.extensions : '');
2015
+ }
2016
+ if (i1$1.isMobile() && this.viewport.isMobileType) {
2017
+ if (!this['mobile-display']) {
2018
+ this.widget.show = false;
2019
+ }
2020
+ }
2021
+ else if (this.viewport.isTabletType) {
2022
+ if (!this['tablet-display']) {
2023
+ this.widget.show = false;
2024
+ }
2025
+ }
2026
+ else {
2027
+ if (!this['pc-display']) {
2028
+ this.widget.show = false;
2029
+ }
2030
+ }
2031
+ this.fieldDefConfig.displaname = this.displayname;
2032
+ this.fieldDefConfig.show = this.show;
2033
+ this.fieldDefConfig.isRelated = this['is-related'];
2034
+ this.fieldDefConfig.inputtype = this.inputtype;
2035
+ this.fieldDefConfig.generator = this.generator;
2036
+ this.fieldDefConfig.placeholder = this.placeholder;
2037
+ this.fieldDefConfig.primaryKey = this['primary-key'];
2038
+ this.fieldDefConfig.required = this.required;
2039
+ this.fieldDefConfig._readonly = this.readonly;
2040
+ this.fieldDefConfig.regexp = this.regexp;
2041
+ this.fieldDefConfig.type = this.type;
2042
+ this.fieldDefConfig.key = this.key;
2043
+ this.fieldDefConfig.mobileDisplay = this['mobile-display'];
2044
+ this.fieldDefConfig.name = this.name;
2045
+ this.fieldDefConfig.pcDisplay = this['pc-display'];
2046
+ this.fieldDefConfig.tabletDisplay = this['tablet-display'];
2047
+ this.fieldDefConfig.validationmessage = this.validationmessage;
2048
+ this.fieldDefConfig.viewmodewidget = this.viewmodewidget;
2049
+ this.fieldDefConfig.widget = this.widgettype;
2050
+ // Register the form field with parent form
2051
+ this.form.registerFormFields(this.widget);
2052
+ i1$1.addForIdAttributes(this.nativeElement);
2053
+ this.setReadOnlyState();
2054
+ });
2055
+ }
2056
+ ngAfterContentInit() {
2057
+ super.ngAfterContentInit();
2058
+ if (this.widgetSubType === "wm-form-field-custom-widget" && this.formWidget.nativeElement)
2059
+ this.formWidget = this.formWidget.nativeElement.widget;
2060
+ if (this.formWidget) {
2061
+ if (this.widgetSubType === "wm-form-field-custom-widget") {
2062
+ this.formWidget.configSubject.asObservable().subscribe(() => {
2063
+ this.prepareFormWidget();
2064
+ });
2065
+ }
2066
+ else {
2067
+ this.prepareFormWidget();
2068
+ }
2069
+ }
2070
+ }
2071
+ ngOnDestroy() {
2072
+ // MEMORY LEAK FIX: Destroy BaseFieldValidations instance
2073
+ if (this.fieldValidations) {
2074
+ try {
2075
+ this.fieldValidations.destroy();
2076
+ }
2077
+ catch (e) {
2078
+ // Silently handle cleanup errors
2079
+ }
2080
+ this.fieldValidations = null;
2081
+ }
2082
+ // MEMORY LEAK FIX: Clear notifyForFields array
2083
+ if (this.notifyForFields) {
2084
+ this.notifyForFields = [];
2085
+ }
2086
+ // MEMORY LEAK FIX: Nullify debounced function closure
2087
+ this._debounceSetUpValidators = null;
2088
+ // MEMORY LEAK FIX: Clear form widget references
2089
+ this.formWidget = null;
2090
+ this.formWidgetMax = null;
2091
+ // MEMORY LEAK FIX: Clear field definition config
2092
+ if (this.fieldDefConfig) {
2093
+ this.fieldDefConfig = {};
2094
+ }
2095
+ // Call parent ngOnDestroy (StylableComponent extends BaseComponent which has cleanup)
2096
+ super.ngOnDestroy();
2097
+ }
2098
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormFieldDirective, deps: [{ token: i0__namespace.Injector }, { token: FormComponent }, { token: i1__namespace.FormBuilder }, { token: i1$1__namespace.Viewport }, { token: i1$1__namespace.App }, { token: i3__namespace.ListComponent, optional: true }, { token: 'chipclass.bind', attribute: true }, { token: 'dataset.bind', attribute: true }, { token: 'displayexpression.bind', attribute: true }, { token: 'displaylabel.bind', attribute: true }, { token: 'widgettype', attribute: true }, { token: 'name', attribute: true }, { token: 'displayimagesrc.bind', attribute: true }, { token: 'key', attribute: true }, { token: 'is-range', attribute: true }, { token: 'pc-display', attribute: true }, { token: 'mobile-display', attribute: true }, { token: 'tablet-display', attribute: true }, { token: i5.Context, self: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
2099
+ static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: FormFieldDirective, isStandalone: true, selector: "[wmFormField]", host: { listeners: { "keydown": "onKeydownHandler($event)", "click": "handleClick($event)" } }, providers: [
2100
+ i5.provideAsWidgetRef(FormFieldDirective),
2101
+ i5.provideAs(FormFieldDirective, i1.NG_VALUE_ACCESSOR, true),
2102
+ { provide: i5.Context, useFactory: () => { return {}; }, multi: true }
2103
+ ], queries: [{ propertyName: "formWidget", first: true, predicate: ["formWidget"], descendants: true, static: true }, { propertyName: "formWidgetMax", first: true, predicate: ["formWidgetMax"], descendants: true }], exportAs: ["wmFormField"], usesInheritance: true, ngImport: i0__namespace }); }
2104
+ }
2105
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: FormFieldDirective, decorators: [{
2106
+ type: i0.Directive,
2107
+ args: [{
2108
+ standalone: true,
2109
+ selector: '[wmFormField]',
2110
+ exportAs: 'wmFormField',
2111
+ providers: [
2112
+ i5.provideAsWidgetRef(FormFieldDirective),
2113
+ i5.provideAs(FormFieldDirective, i1.NG_VALUE_ACCESSOR, true),
2114
+ { provide: i5.Context, useFactory: () => { return {}; }, multi: true }
2115
+ ]
2116
+ }]
2117
+ }], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: FormComponent }, { type: i1__namespace.FormBuilder }, { type: i1$1__namespace.Viewport }, { type: i1$1__namespace.App }, { type: i3__namespace.ListComponent, decorators: [{
2118
+ type: i0.Optional
2119
+ }] }, { type: undefined, decorators: [{
2120
+ type: i0.Attribute,
2121
+ args: ['chipclass.bind']
2122
+ }] }, { type: undefined, decorators: [{
2123
+ type: i0.Attribute,
2124
+ args: ['dataset.bind']
2125
+ }] }, { type: undefined, decorators: [{
2126
+ type: i0.Attribute,
2127
+ args: ['displayexpression.bind']
2128
+ }] }, { type: undefined, decorators: [{
2129
+ type: i0.Attribute,
2130
+ args: ['displaylabel.bind']
2131
+ }] }, { type: undefined, decorators: [{
2132
+ type: i0.Attribute,
2133
+ args: ['widgettype']
2134
+ }] }, { type: undefined, decorators: [{
2135
+ type: i0.Attribute,
2136
+ args: ['name']
2137
+ }] }, { type: String, decorators: [{
2138
+ type: i0.Attribute,
2139
+ args: ['displayimagesrc.bind']
2140
+ }] }, { type: undefined, decorators: [{
2141
+ type: i0.Attribute,
2142
+ args: ['key']
2143
+ }] }, { type: undefined, decorators: [{
2144
+ type: i0.Attribute,
2145
+ args: ['is-range']
2146
+ }] }, { type: undefined, decorators: [{
2147
+ type: i0.Attribute,
2148
+ args: ['pc-display']
2149
+ }] }, { type: undefined, decorators: [{
2150
+ type: i0.Attribute,
2151
+ args: ['mobile-display']
2152
+ }] }, { type: undefined, decorators: [{
2153
+ type: i0.Attribute,
2154
+ args: ['tablet-display']
2155
+ }] }, { type: Array, decorators: [{
2156
+ type: i0.Self
2157
+ }, {
2158
+ type: i0.Inject,
2159
+ args: [i5.Context]
2160
+ }] }, { type: undefined, decorators: [{
2161
+ type: i0.Inject,
2162
+ args: ['EXPLICIT_CONTEXT']
2163
+ }, {
2164
+ type: i0.Optional
2165
+ }] }], propDecorators: { formWidget: [{
2166
+ type: i0.ContentChild,
2167
+ args: ['formWidget', { static: true }]
2168
+ }], formWidgetMax: [{
2169
+ type: i0.ContentChild,
2170
+ args: ['formWidgetMax']
2171
+ }], onKeydownHandler: [{
2172
+ type: i0.HostListener,
2173
+ args: ['keydown', ['$event']]
2174
+ }], handleClick: [{
2175
+ type: i0.HostListener,
2176
+ args: ['click', ['$event']]
2177
+ }] } });
2178
+
2179
+ class LiveActionsDirective {
2180
+ constructor(subscribedWidget, app, dialogService) {
2181
+ this.subscribedWidget = subscribedWidget;
2182
+ this.app = app;
2183
+ this.dialogService = dialogService;
2184
+ subscribedWidget.addRow = this.addRow.bind(this);
2185
+ subscribedWidget.updateRow = this.updateRow.bind(this);
2186
+ subscribedWidget.deleteRow = this.deleteRow.bind(this);
2187
+ subscribedWidget.call = this.call.bind(this);
2188
+ }
2189
+ addRow() {
2190
+ this.app.notify('wm-event', { eventName: i5.Live_Operations.INSERT, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem });
2191
+ }
2192
+ updateRow() {
2193
+ this.app.notify('wm-event', { eventName: i5.Live_Operations.UPDATE, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem });
2194
+ }
2195
+ deleteRow() {
2196
+ this.app.notify('wm-event', { eventName: i5.Live_Operations.DELETE, widgetName: this.subscribedWidget.name, row: this.subscribedWidget.selecteditem });
2197
+ }
2198
+ successHandler(options, response) {
2199
+ i1$1.triggerFn(options.success, response);
2200
+ }
2201
+ errorHandler(options, error) {
2202
+ this.app.notifyApp(error, 'error', 'ERROR');
2203
+ i1$1.triggerFn(options.error, error);
2204
+ }
2205
+ getRecords(options, operation) {
2206
+ let index;
2207
+ let dataNavigator;
2208
+ if (this.subscribedWidget.navigation !== 'None' && this.subscribedWidget.dataNavigator) {
2209
+ dataNavigator = this.subscribedWidget.dataNavigator;
2210
+ // If operation is delete, decrease the data size and check if navigation to previous page is required
2211
+ if (operation === i5.Live_Operations.DELETE) {
2212
+ dataNavigator.dataSize -= 1;
2213
+ dataNavigator.calculatePagingValues();
2214
+ index = dataNavigator.pageCount < dataNavigator.dn.currentPage ? 'prev' : undefined;
2215
+ }
2216
+ else {
2217
+ // If operation is insert, go to last page. If update operation, stay on current page
2218
+ index = operation === i5.Live_Operations.INSERT ? 'last' : 'current';
2219
+ if (index === 'last') {
2220
+ dataNavigator.dataSize += 1;
2221
+ }
2222
+ dataNavigator.calculatePagingValues();
2223
+ }
2224
+ dataNavigator.navigatePage(index, null, true, response => {
2225
+ this.successHandler(options, response);
2226
+ });
2227
+ }
2228
+ else {
2229
+ this.subscribedWidget.datasource.execute(i1$1.DataSource.Operation.LIST_RECORDS, {
2230
+ 'skipToggleState': true
2231
+ }).then(response => {
2232
+ this.successHandler(options, response);
2233
+ }, err => {
2234
+ this.errorHandler(options, err);
2235
+ });
2236
+ }
2237
+ }
2238
+ performCUDOperation(requestData, operation, options) {
2239
+ i5.performDataOperation(this.subscribedWidget.datasource, requestData, {
2240
+ operationType: operation
2241
+ }).then(response => {
2242
+ if (response.error) {
2243
+ this.errorHandler(options, response.error);
2244
+ return;
2245
+ }
2246
+ if (this.subscribedWidget.datasource.category === 'wm.CrudVariable' && operation === 'delete') {
2247
+ this.subscribedWidget.datasource.execute(i1$1.DataSource.Operation.LIST_RECORDS, {
2248
+ 'skipToggleState': true
2249
+ }).then(response => {
2250
+ this.successHandler(options, response);
2251
+ }, err => {
2252
+ this.errorHandler(options, err);
2253
+ });
2254
+ }
2255
+ else {
2256
+ this.getRecords(options, operation);
2257
+ }
2258
+ // show delete success toaster
2259
+ if (operation === 'delete') {
2260
+ this.app.notifyApp(this.app.appLocale.MESSAGE_DELETE_RECORD_SUCCESS, 'success');
2261
+ }
2262
+ }, (error) => {
2263
+ this.errorHandler(options, error);
2264
+ });
2265
+ }
2266
+ insertRecord(requestData, operation, options) {
2267
+ this.performCUDOperation(requestData, operation, options);
2268
+ }
2269
+ updateRecord(requestData, operation, options) {
2270
+ this.performCUDOperation(requestData, operation, options);
2271
+ }
2272
+ deleteRecord(requestData, operation, options) {
2273
+ // Show the delete confirmation dialog. On Ok, delete the record.
2274
+ this.dialogService.showAppConfirmDialog({
2275
+ title: this.app.appLocale.MESSAGE_DELETE_RECORD || 'Delete Record',
2276
+ iconclass: 'wi wi-delete fa-lg',
2277
+ message: this.subscribedWidget.confirmdelete || 'Are you sure you want to delete this?',
2278
+ oktext: this.subscribedWidget.deleteoktext || 'Ok',
2279
+ canceltext: this.subscribedWidget.deletecanceltext || 'Cancel',
2280
+ onOk: () => {
2281
+ this.performCUDOperation(requestData, operation, options);
2282
+ this.dialogService.closeAppConfirmDialog();
2283
+ },
2284
+ onCancel: () => {
2285
+ i1$1.triggerFn(options.cancelDeleteCallback);
2286
+ this.dialogService.closeAppConfirmDialog();
2287
+ }
2288
+ });
2289
+ }
2290
+ performOperation(operation, options) {
2291
+ const requestData = {
2292
+ row: options.row,
2293
+ prevData: {},
2294
+ rowData: {},
2295
+ transform: true,
2296
+ skipNotification: true
2297
+ };
2298
+ if (operation === i5.Live_Operations.UPDATE) {
2299
+ requestData.rowData = options.rowData;
2300
+ requestData.prevData = options.prevData;
2301
+ }
2302
+ /* decide routine based on CRUD operation to be performed */
2303
+ switch (operation) {
2304
+ case i5.Live_Operations.INSERT:
2305
+ this.insertRecord(requestData, operation, options);
2306
+ break;
2307
+ case i5.Live_Operations.UPDATE:
2308
+ this.updateRecord(requestData, operation, options);
2309
+ break;
2310
+ case i5.Live_Operations.DELETE:
2311
+ this.deleteRecord(requestData, operation, options);
2312
+ break;
2313
+ case i5.Live_Operations.READ:
2314
+ this.getRecords(options, operation);
2315
+ break;
2316
+ }
2317
+ }
2318
+ // API exposed to make CRUD operations
2319
+ call(operation, options, success, error) {
2320
+ options.success = success;
2321
+ options.error = error;
2322
+ this.performOperation(operation, options);
2323
+ }
2324
+ ngOnDestroy() {
2325
+ // MEMORY LEAK FIX: Clear references
2326
+ this.subscribedWidget = null;
2327
+ this.app = null;
2328
+ this.dialogService = null;
2329
+ }
2330
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: LiveActionsDirective, deps: [{ token: i3.ListComponent, self: true }, { token: i1$1__namespace.App }, { token: i1$1__namespace.AbstractDialogService }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
2331
+ static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: LiveActionsDirective, isStandalone: true, selector: "[wmLiveActions]", ngImport: i0__namespace }); }
2332
+ }
2333
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: LiveActionsDirective, decorators: [{
2334
+ type: i0.Directive,
2335
+ args: [{
2336
+ standalone: true,
2337
+ selector: '[wmLiveActions]'
2338
+ }]
2339
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2340
+ type: i0.Self
2341
+ }, {
2342
+ type: i0.Inject,
2343
+ args: [i3.ListComponent]
2344
+ }] }, { type: i1$1__namespace.App }, { type: i1$1__namespace.AbstractDialogService }] });
2345
+
2346
+ class DependsonDirective {
2347
+ constructor(dialogId, dependson, dialogService, app) {
2348
+ this.dialogService = dialogService;
2349
+ this.app = app;
2350
+ // If dialogId is present, form is in dialog mode
2351
+ if (dialogId) {
2352
+ this.isLayoutDialog = true;
2353
+ this.dialogId = dialogId;
2354
+ }
2355
+ this.dependson = dependson;
2356
+ // Listen to the wm-event called from subscribed widgets
2357
+ this.eventSubscription = this.app.subscribe('wm-event', this.handleEvent.bind(this));
2358
+ }
2359
+ openFormDialog() {
2360
+ this.dialogService.open(this.dialogId);
2361
+ }
2362
+ onUpdate(newValue, table, editClicked) {
2363
+ this.editMode = editClicked || this.editMode;
2364
+ this.form.operationType = i5.Live_Operations.UPDATE;
2365
+ this.form.isSelected = true;
2366
+ let rowData = this.currentFormData;
2367
+ if (newValue && table) {
2368
+ if (table.multiselect) {
2369
+ rowData = newValue[0];
2370
+ }
2371
+ else {
2372
+ rowData = newValue[newValue.length - 1];
2373
+ }
2374
+ }
2375
+ this.form.setFormData(rowData);
2376
+ this.form.edit();
2377
+ if (!this.editMode) {
2378
+ this.form.isUpdateMode = false;
2379
+ }
2380
+ }
2381
+ onInsert() {
2382
+ this.form.operationType = i5.Live_Operations.INSERT;
2383
+ this.form.isSelected = true;
2384
+ this.form.setFormData({});
2385
+ this.form.new();
2386
+ }
2387
+ handleEvent(options) {
2388
+ if (this.dependson !== options.widgetName) {
2389
+ return;
2390
+ }
2391
+ this.currentOp = options.eventName;
2392
+ switch (options.eventName) {
2393
+ case i5.Live_Operations.UPDATE:
2394
+ this.currentFormData = options.row;
2395
+ if (this.isLayoutDialog) {
2396
+ this.openFormDialog();
2397
+ }
2398
+ else {
2399
+ this.onUpdate(undefined, undefined, true);
2400
+ }
2401
+ break;
2402
+ case i5.Live_Operations.INSERT:
2403
+ if (this.isLayoutDialog) {
2404
+ this.openFormDialog();
2405
+ }
2406
+ else {
2407
+ this.onInsert();
2408
+ }
2409
+ break;
2410
+ case i5.Live_Operations.DELETE:
2411
+ this.app.Widgets[this.dependson].call('delete', { row: options.row });
2412
+ break;
2413
+ case i5.Live_Operations.READ:
2414
+ if (!this.isLayoutDialog) {
2415
+ this.form.isUpdateMode = false;
2416
+ }
2417
+ break;
2418
+ case 'rerender':
2419
+ if (options.dataSource) {
2420
+ options.dataSource.execute(i1$1.DataSource.Operation.LIST_RECORDS, {
2421
+ 'skipToggleState': true,
2422
+ 'operation': 'list'
2423
+ });
2424
+ }
2425
+ break;
2426
+ case 'selectedItemChange':
2427
+ if (options.table) {
2428
+ this.onUpdate(options.row, options.table);
2429
+ }
2430
+ break;
2431
+ case 'resetEditMode':
2432
+ this.editMode = false;
2433
+ }
2434
+ }
2435
+ onFormRender() {
2436
+ // On opening the form in dialog mode, complete the pending operations
2437
+ if (this.form && this.isLayoutDialog) {
2438
+ this.form.isLayoutDialog = true;
2439
+ setTimeout(() => {
2440
+ if (this.currentOp === i5.Live_Operations.UPDATE) {
2441
+ this.onUpdate(undefined, undefined, true);
2442
+ }
2443
+ else if (this.currentOp === i5.Live_Operations.INSERT) {
2444
+ this.onInsert();
2445
+ }
2446
+ }, 250);
2447
+ }
2448
+ }
2449
+ ngAfterContentInit() {
2450
+ // If form instance is present, form is in inline mode. Else, it is in dialog mode and listen to form instance changes
2451
+ if (this.formChildren.first) {
2452
+ this.form = this.formChildren.first;
2453
+ }
2454
+ else {
2455
+ this.formSubscription = this.formChildren.changes.subscribe((val) => {
2456
+ this.form = val.first;
2457
+ this.onFormRender();
2458
+ });
2459
+ }
2460
+ // find the dependent widget (table/list)
2461
+ this.app.notify('setup-cud-listener', this.dependson);
2462
+ }
2463
+ ngOnDestroy() {
2464
+ if (this.formSubscription) {
2465
+ this.formSubscription.unsubscribe();
2466
+ }
2467
+ if (this.eventSubscription) {
2468
+ this.eventSubscription();
2469
+ }
2470
+ }
2471
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: DependsonDirective, deps: [{ token: 'dialogid', attribute: true }, { token: 'dependson', attribute: true }, { token: i1$1__namespace.AbstractDialogService }, { token: i1$1__namespace.App }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
2472
+ static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: DependsonDirective, isStandalone: true, selector: "[dependson]", queries: [{ propertyName: "formChildren", predicate: FormComponent, descendants: true }], ngImport: i0__namespace }); }
2473
+ }
2474
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: DependsonDirective, decorators: [{
2475
+ type: i0.Directive,
2476
+ args: [{
2477
+ standalone: true,
2478
+ selector: '[dependson]'
2479
+ }]
2480
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2481
+ type: i0.Attribute,
2482
+ args: ['dialogid']
2483
+ }] }, { type: undefined, decorators: [{
2484
+ type: i0.Attribute,
2485
+ args: ['dependson']
2486
+ }] }, { type: i1$1__namespace.AbstractDialogService }, { type: i1$1__namespace.App }], propDecorators: { formChildren: [{
2487
+ type: i0.ContentChildren,
2488
+ args: [FormComponent, { descendants: true }]
2489
+ }] } });
2490
+
2491
+ const FILTER_CONSTANTS = {
2492
+ 'EMPTY_KEY': 'EMPTY_NULL_FILTER'
2493
+ };
2494
+ class LiveFilterDirective {
2495
+ static { this.initializeProps = registerLiveFilterProps(); }
2496
+ constructor(form) {
2497
+ this.form = form;
2498
+ // debounce the filter function. If multiple filter calls are made at same time, calls will be delayed and last call is fired
2499
+ this._filter = i1$1.debounce(options => {
2500
+ this.filter(options);
2501
+ }, 250);
2502
+ form.clearFilter = this.clearFilter.bind(this);
2503
+ form.applyFilter = this.applyFilter.bind(this);
2504
+ form.filter = this.filter.bind(this);
2505
+ form.filterOnDefault = this.filterOnDefault.bind(this);
2506
+ form.execute = this.execute.bind(this);
2507
+ form.onFieldDefaultValueChange = this.onFieldDefaultValueChange.bind(this);
2508
+ form.onMaxDefaultValueChange = this.onMaxDefaultValueChange.bind(this);
2509
+ form.onDataSourceChange = this.onDataSourceChange.bind(this);
2510
+ form.onFieldValueChange = this.onFieldValueChange.bind(this);
2511
+ form.submitForm = this.submitForm.bind(this);
2512
+ form.registerFormWidget = this.registerFormWidget.bind(this);
2513
+ }
2514
+ execute(operation, options) {
2515
+ if (operation === i1$1.DataSource.Operation.LIST_RECORDS || operation === i1$1.DataSource.Operation.DOWNLOAD) {
2516
+ return this.applyFilter(options);
2517
+ }
2518
+ if (operation === i1$1.DataSource.Operation.GET_OPTIONS) {
2519
+ return this._options || {};
2520
+ }
2521
+ if (operation === i1$1.DataSource.Operation.GET_PAGING_OPTIONS) {
2522
+ return this.form.pagination;
2523
+ }
2524
+ if (!this.form.datasource) {
2525
+ return {};
2526
+ }
2527
+ if (operation === i1$1.DataSource.Operation.FETCH_DISTINCT_VALUES) {
2528
+ return i5.fetchDistinctValues(this.form.datasource, this.form.formFields, {
2529
+ widget: 'widgettype',
2530
+ enableemptyfilter: this.form.enableemptyfilter,
2531
+ EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE
2532
+ });
2533
+ }
2534
+ return this.form.datasource.execute(operation, options);
2535
+ }
2536
+ onFieldDefaultValueChange(field, nv) {
2537
+ field.minValue = nv;
2538
+ field.value = nv;
2539
+ this.filterOnDefault();
2540
+ }
2541
+ onFieldValueChange(field, nv) {
2542
+ i5.applyFilterOnField(this.form.datasource, field.widget, this.form.formFields, nv, {
2543
+ EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE
2544
+ });
2545
+ if (this.form.autoupdate && i1$1.isDefined(nv)) {
2546
+ this._filter();
2547
+ }
2548
+ }
2549
+ onMaxDefaultValueChange() {
2550
+ setTimeout(() => {
2551
+ this.filterOnDefault();
2552
+ });
2553
+ }
2554
+ onDataSourceChange() {
2555
+ const dataSource = this.form.datasource;
2556
+ if (!dataSource) {
2557
+ return;
2558
+ }
2559
+ this.form.formFields.forEach(field => {
2560
+ if (i5.isDataSetWidget(field.widgettype)) {
2561
+ i5.getDistinctValuesForField(dataSource, field.widget, {
2562
+ widget: 'widgettype',
2563
+ enableemptyfilter: this.form.enableemptyfilter,
2564
+ EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE
2565
+ });
2566
+ i5.applyFilterOnField(dataSource, field.widget, this.form.formFields, field.value, {
2567
+ isFirst: true,
2568
+ EMPTY_VALUE: this.form.appLocale.LABEL_NO_VALUE
2569
+ });
2570
+ }
2571
+ });
2572
+ // On load check if default value exists and apply filter, Call the filter with the result options
2573
+ this._filter(this._options);
2574
+ }
2575
+ clearFilter() {
2576
+ this.form.resetFormState();
2577
+ this.form.formFields.forEach(filterField => {
2578
+ // Added check for range field
2579
+ if (!filterField.readonly && filterField.show) {
2580
+ if (filterField.widgettype === i1$1.FormWidgetType.AUTOCOMPLETE || filterField.widgettype === i1$1.FormWidgetType.TYPEAHEAD) {
2581
+ this.form.$element.find('div[name=' + filterField.name + '] input').val('');
2582
+ }
2583
+ if (filterField['is-range']) {
2584
+ filterField.minValue = '';
2585
+ filterField.maxValue = '';
2586
+ }
2587
+ else {
2588
+ filterField.value = '';
2589
+ filterField.resetDisplayInput();
2590
+ }
2591
+ }
2592
+ });
2593
+ // If variable has any bindings, wait for the bindings to be updated
2594
+ setTimeout(() => {
2595
+ // Setting result to the default data
2596
+ this._filter();
2597
+ });
2598
+ }
2599
+ submitForm() {
2600
+ this.filter();
2601
+ }
2602
+ applyFilter(options) {
2603
+ options = options ? (options.data || options) : {};
2604
+ options.page = options.page || 1;
2605
+ options.orderBy = i1$1.isDefined(options.orderBy) ? options.orderBy : this.orderBy;
2606
+ return this.filter(options);
2607
+ }
2608
+ filter(options) {
2609
+ if (!this.form.datasource) {
2610
+ return;
2611
+ }
2612
+ const filterFields = {};
2613
+ const dataModel = {};
2614
+ let page = 1, orderBy, isValid;
2615
+ options = options || {};
2616
+ page = options.page || page;
2617
+ orderBy = i1$1.isDefined(options.orderBy) ? options.orderBy : (this.orderBy || '');
2618
+ this.orderBy = orderBy; // Store the order by in scope. This can be used to retain the sort after filtering
2619
+ // Copy the values to be sent to the user as '$data' before servicecall
2620
+ this.form.formFields.forEach(field => {
2621
+ const fieldSelector = 'div[name=' + field.name + '] input';
2622
+ const $el = this.form.$element;
2623
+ let fieldEle;
2624
+ if ((field.widgettype === i1$1.FormWidgetType.AUTOCOMPLETE || field.widgettype === i1$1.FormWidgetType.TYPEAHEAD) && $el) {
2625
+ fieldEle = $el.find(fieldSelector);
2626
+ if (!field['is-range']) {
2627
+ dataModel[field.field] = {
2628
+ 'value': i1$1.isDefined(field.value) ? field.value : fieldEle.val() // For autocomplete, set the datavalue. If not present, set query value
2629
+ };
2630
+ }
2631
+ else {
2632
+ dataModel[field.field] = {
2633
+ 'minValue': i1$1.isDefined(field.minValue) ? field.minValue : fieldEle.first().val(),
2634
+ 'maxValue': i1$1.isDefined(field.maxValue) ? field.maxValue : fieldEle.last().val()
2635
+ };
2636
+ }
2637
+ return;
2638
+ }
2639
+ if (!field['is-range']) {
2640
+ dataModel[field.field] = {
2641
+ 'value': field.value
2642
+ };
2643
+ }
2644
+ else {
2645
+ dataModel[field.field] = {
2646
+ 'minValue': field.minValue,
2647
+ 'maxValue': field.maxValue
2648
+ };
2649
+ }
2650
+ });
2651
+ /*Perform this function for the event onBeforeservicecall*/
2652
+ try {
2653
+ isValid = this.form.invokeEventCallback('beforeservicecall', { $data: dataModel });
2654
+ if (isValid === false) {
2655
+ return;
2656
+ }
2657
+ if (isValid && isValid.error) {
2658
+ this.form.toggleMessage(true, isValid.error, 'error', 'ERROR');
2659
+ return;
2660
+ }
2661
+ /*Update these values in the formFields with new reference, inorder to maintain the UI values*/
2662
+ this.form.formFields.forEach(filterField => {
2663
+ if (!filterField['is-range']) {
2664
+ filterField._value = dataModel[filterField.field].value;
2665
+ }
2666
+ else {
2667
+ filterField._minValue = dataModel[filterField.field].minValue;
2668
+ filterField._maxValue = dataModel[filterField.field].maxValue;
2669
+ }
2670
+ });
2671
+ }
2672
+ catch (err) {
2673
+ if (err.message === 'Abort') {
2674
+ return;
2675
+ }
2676
+ }
2677
+ /* Construct the formFields Variable to send it to the queryBuilder */
2678
+ this.form.formFields.forEach(filterField => {
2679
+ let fieldValue;
2680
+ let matchMode;
2681
+ let colName = filterField.field;
2682
+ const minValue = filterField._minValue;
2683
+ const maxvalue = filterField._maxValue;
2684
+ /* if field is part of a related entity, column name will be 'entity.fieldName' */
2685
+ if (filterField['is-related']) {
2686
+ colName += '.' + filterField['lookup-field'];
2687
+ }
2688
+ if (filterField['is-range']) {
2689
+ /*Based on the min and max values, decide the matchmode condition*/
2690
+ fieldValue = i5.getRangeFieldValue(minValue, maxvalue);
2691
+ matchMode = i5.getRangeMatchMode(minValue, maxvalue);
2692
+ if (i1$1.isDefined(fieldValue)) {
2693
+ filterFields[colName] = {
2694
+ 'value': fieldValue,
2695
+ 'matchMode': matchMode,
2696
+ 'logicalOp': 'AND'
2697
+ };
2698
+ }
2699
+ }
2700
+ else {
2701
+ switch (filterField.widgettype) {
2702
+ case i1$1.FormWidgetType.SELECT:
2703
+ case i1$1.FormWidgetType.RADIOSET:
2704
+ if (i5.getEnableEmptyFilter(this.form.enableemptyfilter) && filterField._value === FILTER_CONSTANTS.EMPTY_KEY) {
2705
+ matchMode = i5.getEmptyMatchMode(this.form.enableemptyfilter);
2706
+ fieldValue = filterField._value;
2707
+ }
2708
+ else {
2709
+ if (filterField.type === i1$1.DataType.BOOLEAN) {
2710
+ if (i1$1.isDefined(filterField._value) && filterField._value !== '') {
2711
+ fieldValue = JSON.parse(filterField._value);
2712
+ }
2713
+ }
2714
+ else {
2715
+ fieldValue = filterField._value;
2716
+ }
2717
+ }
2718
+ break;
2719
+ case i1$1.FormWidgetType.CHECKBOXSET:
2720
+ case i1$1.FormWidgetType.CHIPS:
2721
+ if (filterField._value && filterField._value.length) {
2722
+ fieldValue = filterField._value;
2723
+ }
2724
+ break;
2725
+ case i1$1.FormWidgetType.CHECKBOX:
2726
+ case i1$1.FormWidgetType.TOGGLE:
2727
+ case i1$1.FormWidgetType.ICONBUTTONTOGGLE:
2728
+ if (i1$1.isDefined(filterField._value) && filterField._value !== '') {
2729
+ fieldValue = filterField.type === i1$1.DataType.BOOLEAN ? JSON.parse(filterField._value) : filterField._value;
2730
+ }
2731
+ break;
2732
+ default:
2733
+ fieldValue = filterField._value;
2734
+ break;
2735
+ }
2736
+ if (i1$1.isDefined(fieldValue) && fieldValue !== '' && fieldValue !== null) {
2737
+ filterFields[colName] = {};
2738
+ if (matchMode) {
2739
+ filterFields[colName].matchMode = matchMode;
2740
+ fieldValue = undefined;
2741
+ }
2742
+ else if (filterField.type === i1$1.DataType.STRING || filterField.isRelated) { // Only for string types and related fields, custom match modes are enabled.
2743
+ filterFields[colName].matchMode = matchMode || filterField.matchmode ||
2744
+ this.form.datasource.execute(i1$1.DataSource.Operation.GET_MATCH_MODE);
2745
+ }
2746
+ filterFields[colName].value = fieldValue;
2747
+ filterFields[colName].logicalOp = 'AND';
2748
+ filterFields[colName].type = filterField.type;
2749
+ }
2750
+ }
2751
+ });
2752
+ if (options.exportType) {
2753
+ return this.form.datasource.execute(i1$1.DataSource.Operation.DOWNLOAD, {
2754
+ data: {
2755
+ matchMode: 'anywhereignorecase',
2756
+ filterFields: filterFields,
2757
+ orderBy: orderBy,
2758
+ exportType: options.exportType,
2759
+ logicalOp: 'AND',
2760
+ exportSize: options.exportSize,
2761
+ fields: options.fields,
2762
+ fileName: options.fileName
2763
+ }
2764
+ });
2765
+ }
2766
+ return this.form.datasource.execute(i1$1.DataSource.Operation.LIST_RECORDS, {
2767
+ filterFields: filterFields,
2768
+ orderBy: orderBy,
2769
+ page: page,
2770
+ pagesize: this.form.pagesize || 20,
2771
+ skipDataSetUpdate: true, // dont update the actual variable dataset,
2772
+ inFlightBehavior: 'executeAll'
2773
+ }).then(response => {
2774
+ const data = response.data;
2775
+ this.form.pagination = response.pagination;
2776
+ if (data.error) {
2777
+ // disable readonly and show the appropriate error
2778
+ this.form.toggleMessage(true, data.error, 'error', 'ERROR');
2779
+ this.form.onResultCb(data, false);
2780
+ }
2781
+ else {
2782
+ this._options = {
2783
+ 'page': page,
2784
+ 'orderBy': orderBy
2785
+ };
2786
+ this.form.result = i1$1.getClonedObject(data);
2787
+ this.form.onResultCb(data, true);
2788
+ }
2789
+ i1$1.$appDigest();
2790
+ return this.form.result;
2791
+ }, error => {
2792
+ this.form.toggleMessage(true, error, 'error', 'ERROR');
2793
+ this.form.onResultCb(error, false);
2794
+ return error;
2795
+ });
2796
+ }
2797
+ // Calls the filter function if default values are present
2798
+ filterOnDefault() {
2799
+ /*Check if default value is present for any filter field*/
2800
+ const defaultObj = lodashEs.find(this.form.formFields, obj => {
2801
+ return i1$1.isDefined(obj.value) || i1$1.isDefined(obj.minValue) || i1$1.isDefined(obj.maxValue);
2802
+ });
2803
+ /*If default value exists and data is loaded, apply the filter*/
2804
+ if (defaultObj) {
2805
+ this._filter(this._options);
2806
+ }
2807
+ }
2808
+ registerFormWidget(widget) {
2809
+ const name = widget.key || widget.name;
2810
+ this.form.filterWidgets[name] = widget;
2811
+ }
2812
+ ngOnDestroy() {
2813
+ // MEMORY LEAK FIX: Cancel debounced function
2814
+ if (this._filter && this._filter.cancel) {
2815
+ this._filter.cancel();
2816
+ this._filter = null;
2817
+ }
2818
+ // MEMORY LEAK FIX: Clear form reference
2819
+ this.form = null;
2820
+ this._options = null;
2821
+ this.orderBy = null;
2822
+ }
2823
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: LiveFilterDirective, deps: [{ token: FormComponent, self: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
2824
+ static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: LiveFilterDirective, isStandalone: true, selector: "[wmLiveFilter]", ngImport: i0__namespace }); }
2825
+ }
2826
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: LiveFilterDirective, decorators: [{
2827
+ type: i0.Directive,
2828
+ args: [{
2829
+ standalone: true,
2830
+ selector: '[wmLiveFilter]'
2831
+ }]
2832
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2833
+ type: i0.Self
2834
+ }, {
2835
+ type: i0.Inject,
2836
+ args: [FormComponent]
2837
+ }] }] });
2838
+
2839
+ const isTimeType = field => field.widgettype === i1$1.DataType.TIME || (field.type === i1$1.DataType.TIME && !field.widgettype);
2840
+ const getValidTime = val => {
2841
+ if (val) {
2842
+ const date = (new Date()).toDateString();
2843
+ return (new Date(`${date} ${val}`)).getTime();
2844
+ }
2845
+ return undefined;
2846
+ };
2847
+ class LiveFormDirective {
2848
+ static { this.initializeProps = registerLiveFormProps(); }
2849
+ onKeydownHandler(event) {
2850
+ this._triggeredByUser = true;
2851
+ }
2852
+ constructor(form, liveTable, datePipe, dialogService, formlayout) {
2853
+ this.form = form;
2854
+ this.datePipe = datePipe;
2855
+ this.dialogService = dialogService;
2856
+ this._debouncedSavePrevDataValues = i1$1.debounce(() => {
2857
+ this.savePrevDataValues();
2858
+ }, 250);
2859
+ // If parent live table is present and this form is first child of live table, set this form instance on livetable
2860
+ if (liveTable) {
2861
+ if (!this.form.parentForm) {
2862
+ this.form._liveTableParent = liveTable;
2863
+ }
2864
+ this.form.isLayoutDialog = liveTable.isLayoutDialog;
2865
+ liveTable.onFormReady(this.form);
2866
+ }
2867
+ else {
2868
+ this.form.isLayoutDialog = formlayout === 'dialog';
2869
+ }
2870
+ // CUD operations
2871
+ form.cancel = this.cancel.bind(this);
2872
+ form.reset = this.reset.bind(this);
2873
+ form.delete = this.delete.bind(this);
2874
+ form.save = this.save.bind(this);
2875
+ form.saveAndNew = this.saveAndNew.bind(this);
2876
+ form.saveAndView = this.saveAndView.bind(this);
2877
+ form.setPrimaryKey = this.setPrimaryKey.bind(this);
2878
+ form.constructDataObject = this.constructDataObject.bind(this);
2879
+ form.changeDataObject = this.setFormData.bind(this);
2880
+ form.setFormData = this.setFormData.bind(this);
2881
+ form.findOperationType = this.findOperationType.bind(this);
2882
+ form.clearData = this.clearData.bind(this);
2883
+ form.onFieldDefaultValueChange = this.onFieldDefaultValueChange.bind(this);
2884
+ form.onDataSourceChange = this.onDataSourceChange.bind(this);
2885
+ form.onFieldValueChange = this.onFieldValueChange.bind(this);
2886
+ form.submitForm = this.submitForm.bind(this);
2887
+ form.form_registerFormFields = form.registerFormFields;
2888
+ form.registerFormFields = this.registerFormFields.bind(this);
2889
+ }
2890
+ /*
2891
+ WMS:18583
2892
+ Overriding 'registerFormFields' for liveForms,
2893
+ On Each field added, check if the dataSource is updated or not
2894
+ if the field is added after the dataSource is updated at LiveForm, retrigger
2895
+ */
2896
+ registerFormFields(formField) {
2897
+ const formFields = this.form.getFormFields();
2898
+ this.form.form_registerFormFields(formField);
2899
+ if (this.form.isDataSourceUpdated) {
2900
+ this._updateFieldOnDataSourceChange(formField, formFields);
2901
+ }
2902
+ }
2903
+ _updateFieldOnDataSourceChange(field, formFields) {
2904
+ if (!field.isDataSetBound && i5.isDataSetWidget(field.widgettype)) {
2905
+ if (field['is-related']) {
2906
+ field.isDataSetBound = true;
2907
+ i5.fetchRelatedFieldData(this.form.datasource, field.widget, {
2908
+ relatedField: field.key,
2909
+ datafield: i5.ALLFIELDS,
2910
+ widget: 'widgettype',
2911
+ });
2912
+ }
2913
+ else {
2914
+ i5.getDistinctValuesForField(this.form.datasource, field.widget, {
2915
+ widget: 'widgettype',
2916
+ enableemptyfilter: this.form.enableemptyfilter
2917
+ });
2918
+ i5.applyFilterOnField(this.form.datasource, field.widget, formFields, field.value, { isFirst: true });
2919
+ }
2920
+ }
2921
+ }
2922
+ onDataSourceChange() {
2923
+ if (lodashEs.get(this.form.formFields, 'length')) {
2924
+ this.form.isDataSourceUpdated = true;
2925
+ }
2926
+ const formFields = this.form.getFormFields();
2927
+ formFields.forEach(field => {
2928
+ this._updateFieldOnDataSourceChange(field, formFields);
2929
+ });
2930
+ }
2931
+ onFieldDefaultValueChange(field, nv) {
2932
+ // In Edit, do not set default values
2933
+ if (this.form.operationType === 'update') {
2934
+ return;
2935
+ }
2936
+ // Set the default value only if it exists.
2937
+ if (i1$1.isDefined(nv) && nv !== null && nv !== '' && nv !== 'null') {
2938
+ field.value = i5.parseValueByType(nv, field.type, field.widgettype, field.trailingzero);
2939
+ }
2940
+ else {
2941
+ field.value = undefined;
2942
+ }
2943
+ // WMS-22434: For default value set on individual form fields, do not mark the form as dirty.
2944
+ if (this.form.dirty && !this._triggeredByUser) {
2945
+ this.form.markAsPristine();
2946
+ }
2947
+ this._debouncedSavePrevDataValues();
2948
+ }
2949
+ onFieldValueChange(field, nv) {
2950
+ i5.applyFilterOnField(this.form.datasource, field.widget, this.form.formFields, nv);
2951
+ }
2952
+ getBlobURL(dataObj, key, value) {
2953
+ let href = '';
2954
+ let primaryKeys;
2955
+ let primaryKey;
2956
+ if (value === null || value === undefined || !this.form.datasource) {
2957
+ return href;
2958
+ }
2959
+ primaryKeys = this.form.datasource.execute(i1$1.DataSource.Operation.GET_PRIMARY_KEY) || [];
2960
+ primaryKey = dataObj[primaryKeys[0]];
2961
+ href += this.form.datasource.execute(i1$1.DataSource.Operation.GET_BLOB_URL, {
2962
+ primaryValue: primaryKey,
2963
+ columnName: key
2964
+ });
2965
+ href += '?' + Math.random();
2966
+ return href;
2967
+ }
2968
+ setFormData(dataObj, formFields) {
2969
+ if (!dataObj) {
2970
+ return;
2971
+ }
2972
+ formFields = formFields || this.form.formFields;
2973
+ formFields.forEach(field => {
2974
+ const value = lodashEs.get(dataObj, field.key || field.name);
2975
+ if (isTimeType(field)) {
2976
+ field.value = getValidTime(value);
2977
+ }
2978
+ else if (field.type === i1$1.DataType.BLOB) {
2979
+ this.form.resetFileUploadWidget(field, true);
2980
+ field.href = this.getBlobURL(dataObj, field.key, value);
2981
+ field.value = lodashEs.isString(value) ? '' : value;
2982
+ }
2983
+ else {
2984
+ this.form.setFieldValue(field, dataObj);
2985
+ }
2986
+ });
2987
+ this.savePrevDataValues();
2988
+ this.form.constructDataObject();
2989
+ }
2990
+ onDataSourceUpdate(response, newForm, updateMode) {
2991
+ if (newForm) {
2992
+ this.form.new();
2993
+ }
2994
+ else {
2995
+ this.form.setFormData(response);
2996
+ this.closeDialog();
2997
+ }
2998
+ this.form.isUpdateMode = i1$1.isDefined(updateMode) ? updateMode : true;
2999
+ }
3000
+ savePrevformFields() {
3001
+ this.form.prevformFields = i1$1.getClonedObject(this.form.formFields.map(field => {
3002
+ return {
3003
+ 'key': field.key,
3004
+ 'type': field.type,
3005
+ 'widgettype': field.widgettype,
3006
+ 'outputformat': field.outputformat,
3007
+ 'value': field.value
3008
+ };
3009
+ }));
3010
+ }
3011
+ getPrevformFields() {
3012
+ this.form.formFields.map(field => {
3013
+ const prevField = this.form.prevformFields.find(pField => pField.key === field.key);
3014
+ field.value = prevField.value;
3015
+ });
3016
+ }
3017
+ getDataObject() {
3018
+ if (this.form.operationType === i5.Live_Operations.INSERT) {
3019
+ return {};
3020
+ }
3021
+ if (i1$1.isDefined(this.form.prevDataObject) && !i1$1.isEmptyObject(this.form.prevDataObject)) {
3022
+ return i1$1.getClonedObject(this.form.prevDataObject);
3023
+ }
3024
+ return i1$1.getClonedObject(this.form.formdata || {});
3025
+ }
3026
+ constructDataObject(isPreviousData) {
3027
+ const dataObject = this.getDataObject();
3028
+ const formName = this.form.name;
3029
+ let formFields;
3030
+ formFields = isPreviousData ? this.form.prevformFields : this.form.getFormFields();
3031
+ formFields.forEach(field => {
3032
+ let dateTime, fieldValue;
3033
+ const fieldTarget = lodashEs.split(field.key, '.');
3034
+ const fieldName = fieldTarget[0] || field.key;
3035
+ /*collect the values from the fields and construct the object*/
3036
+ /*Format the output of date time widgets to the given output format*/
3037
+ if ((field.widgettype && i1$1.isDateTimeType(field.widgettype)) || i1$1.isDateTimeType(field.type)) {
3038
+ if (field.value) {
3039
+ dateTime = i1$1.getValidDateObject(field.value);
3040
+ if (field.outputformat === i1$1.DataType.TIMESTAMP || field.type === i1$1.DataType.TIMESTAMP) {
3041
+ fieldValue = field.value ? dateTime : null;
3042
+ }
3043
+ else if (field.outputformat) {
3044
+ fieldValue = this.datePipe.transform(dateTime, field.outputformat);
3045
+ }
3046
+ else {
3047
+ fieldValue = field.value;
3048
+ }
3049
+ }
3050
+ else {
3051
+ fieldValue = undefined;
3052
+ }
3053
+ }
3054
+ else if (field.type === i1$1.DataType.BLOB) {
3055
+ fieldValue = i1$1.getFiles(formName, fieldName + '_formWidget', field.multiple);
3056
+ }
3057
+ else if (field.type === i1$1.DataType.LIST) {
3058
+ fieldValue = field.value || undefined;
3059
+ }
3060
+ else {
3061
+ fieldValue = (field.value === null || field.value === '') ? undefined : field.value;
3062
+ }
3063
+ if (fieldTarget.length === 1) {
3064
+ dataObject[fieldName] = fieldValue;
3065
+ }
3066
+ else {
3067
+ dataObject[fieldName] = dataObject[fieldName] || {};
3068
+ dataObject[fieldName][fieldTarget[1]] = fieldValue;
3069
+ }
3070
+ });
3071
+ if (!isPreviousData) {
3072
+ this.form.updateFormDataOutput(dataObject);
3073
+ return this.form.dataoutput;
3074
+ }
3075
+ return dataObject;
3076
+ }
3077
+ setPrimaryKey(fieldName) {
3078
+ /*Store the primary key of data*/
3079
+ this.form.primaryKey = this.form.primaryKey || [];
3080
+ if (this.form.primaryKey.indexOf(fieldName) === -1) {
3081
+ this.form.primaryKey.push(fieldName);
3082
+ }
3083
+ }
3084
+ findOperationType() {
3085
+ let operation;
3086
+ let isPrimary = false;
3087
+ const sourceOperation = this.form.datasource && this.form.datasource.execute(i1$1.DataSource.Operation.GET_OPERATION_TYPE);
3088
+ if (sourceOperation && sourceOperation !== 'read') {
3089
+ return sourceOperation;
3090
+ }
3091
+ /*If OperationType is not set then based on the formdata object return the operation type,
3092
+ this case occurs only if the form is outside a livegrid*/
3093
+ /*If the formdata object has primary key value then return update else insert*/
3094
+ if (this.form.primaryKey && !lodashEs.isEmpty(this.form.formdata)) {
3095
+ /*If only one column is primary key*/
3096
+ if (this.form.primaryKey.length === 1) {
3097
+ if (this.form.formdata[this.form.primaryKey[0]]) {
3098
+ operation = i5.Live_Operations.UPDATE;
3099
+ }
3100
+ /*If only no column is primary key*/
3101
+ }
3102
+ else if (this.form.primaryKey.length === 0) {
3103
+ lodashEs.forEach(this.form.formdata, (value) => {
3104
+ if (value) {
3105
+ isPrimary = true;
3106
+ }
3107
+ });
3108
+ if (isPrimary) {
3109
+ operation = i5.Live_Operations.UPDATE;
3110
+ }
3111
+ /*If multiple columns are primary key*/
3112
+ }
3113
+ else {
3114
+ isPrimary = lodashEs.some(this.form.primaryKey, (primaryKey) => {
3115
+ if (this.form.formdata[primaryKey]) {
3116
+ return true;
3117
+ }
3118
+ });
3119
+ if (isPrimary) {
3120
+ operation = i5.Live_Operations.UPDATE;
3121
+ }
3122
+ }
3123
+ }
3124
+ return operation || i5.Live_Operations.INSERT;
3125
+ }
3126
+ getPrevDataValues() {
3127
+ const prevDataValues = lodashEs.fromPairs(lodashEs.map(this.form.prevDataValues, (item) => {
3128
+ return [item.key, item.value];
3129
+ })); // Convert of array of values to an object
3130
+ this.form.formFields.forEach(field => {
3131
+ field.value = prevDataValues[field.key] || '';
3132
+ field.resetDisplayInput();
3133
+ });
3134
+ return prevDataValues;
3135
+ }
3136
+ savePrevDataValues() {
3137
+ this.form.prevDataValues = this.form.formFields.map((obj) => {
3138
+ return { 'key': obj.key, 'value': obj.value };
3139
+ });
3140
+ }
3141
+ clearData() {
3142
+ this.form.toggleMessage(false);
3143
+ this.form.emptyDataModel();
3144
+ }
3145
+ setReadonlyFields() {
3146
+ this.form.formFields.forEach(field => {
3147
+ field.setReadOnlyState();
3148
+ });
3149
+ }
3150
+ reset() {
3151
+ let prevDataValues;
3152
+ this.form.resetFormState();
3153
+ prevDataValues = this.getPrevDataValues();
3154
+ this.form.formFields.forEach(field => {
3155
+ if (field.type === i1$1.DataType.BLOB || field.widgettype === 'upload') {
3156
+ this.form.resetFileUploadWidget(field, true);
3157
+ field.href = this.getBlobURL(prevDataValues, field.key, field.value);
3158
+ }
3159
+ field.nativeElement.querySelector('input')?.removeAttribute('aria-invalid');
3160
+ });
3161
+ this.form.constructDataObject();
3162
+ }
3163
+ closeDialog() {
3164
+ if (this.form.isLayoutDialog) {
3165
+ this.dialogService.close(this.form.dialogId);
3166
+ }
3167
+ }
3168
+ cancel() {
3169
+ this.form.clearMessage();
3170
+ this.form.isUpdateMode = false;
3171
+ this.form.reset();
3172
+ /*Show the previous selected data*/
3173
+ if (this.form.isSelected) {
3174
+ this.getPrevformFields();
3175
+ }
3176
+ this.form.isUpdateMode = false;
3177
+ if (this.form._liveTableParent) {
3178
+ this.form._liveTableParent.onCancel();
3179
+ }
3180
+ else {
3181
+ /*
3182
+ WMS-18759: dialog close is calling twice and dialog onHidden subscription is calling once from the library
3183
+ due to this if we have another dialog inside liveform and if we click on cancel of second dialog the library
3184
+ subscription is calling for both the dialogs.
3185
+ */
3186
+ this.closeDialog();
3187
+ }
3188
+ i1$1.$appDigest();
3189
+ }
3190
+ delete(callBackFn) {
3191
+ this.form.resetFormState();
3192
+ this.form.operationType = i5.Live_Operations.DELETE;
3193
+ this.form.prevDataObject = i1$1.getClonedObject(this.form.formdata || {});
3194
+ this.form.save(undefined, undefined, undefined, callBackFn);
3195
+ }
3196
+ // Function use to save the form and open new form after save
3197
+ saveAndNew() {
3198
+ this.save(undefined, true, true);
3199
+ }
3200
+ // Function use to save the form and open new form after save
3201
+ saveAndView() {
3202
+ this.save(undefined, false);
3203
+ }
3204
+ submitForm($event) {
3205
+ this.save($event);
3206
+ }
3207
+ save(event, updateMode, newForm) {
3208
+ if (!this.form.datasource) {
3209
+ return;
3210
+ }
3211
+ let data, prevData, operationType, isValid;
3212
+ const requestData = {};
3213
+ operationType = this.form.operationType = this.form.operationType || this.findOperationType();
3214
+ // Disable the form submit if form is in invalid state.
3215
+ if (this.form.validateFieldsOnSubmit()) {
3216
+ return;
3217
+ }
3218
+ data = i1$1.getClonedObject(this.form.constructDataObject());
3219
+ prevData = this.form.prevformFields ? this.form.constructDataObject(true) : data;
3220
+ try {
3221
+ isValid = this.form.invokeEventCallback('beforeservicecall', { $event: event, $operation: this.form.operationType, $data: data, options: requestData });
3222
+ if (isValid === false) {
3223
+ return;
3224
+ }
3225
+ if (isValid && isValid.error) {
3226
+ this.form.toggleMessage(true, isValid.error, 'error');
3227
+ return;
3228
+ }
3229
+ }
3230
+ catch (err) {
3231
+ if (err.message === 'Abort') {
3232
+ return;
3233
+ }
3234
+ }
3235
+ // If operation is update, form is not touched and current data and previous data is same, Show no changes detected message
3236
+ if (this.form.operationType === i5.Live_Operations.UPDATE && this.form.ngform && this.form.ngform.pristine &&
3237
+ (this.form.isSelected && lodashEs.isEqual(data, prevData))) {
3238
+ this.form.toggleMessage(true, this.form.appLocale.MESSAGE_NO_CHANGES, 'info', '');
3239
+ i1$1.$appDigest();
3240
+ return;
3241
+ }
3242
+ requestData.row = data;
3243
+ requestData.transform = true;
3244
+ requestData.skipNotification = true;
3245
+ if (operationType === i5.Live_Operations.UPDATE) {
3246
+ requestData.rowData = this.form.formdata;
3247
+ requestData.prevData = prevData;
3248
+ }
3249
+ i5.performDataOperation(this.form.datasource, requestData, {
3250
+ operationType: operationType
3251
+ }).then((response) => {
3252
+ const msg = operationType === i5.Live_Operations.INSERT ? this.form.insertmessage : (operationType === i5.Live_Operations.UPDATE ?
3253
+ this.form.updatemessage : this.form.deletemessage);
3254
+ let result;
3255
+ if (operationType === i5.Live_Operations.DELETE) {
3256
+ result = requestData.row;
3257
+ this.form.emptyDataModel();
3258
+ this.form.prevDataValues = [];
3259
+ this.form.isSelected = false;
3260
+ }
3261
+ else {
3262
+ result = response;
3263
+ }
3264
+ if (!this.form.onSuccess) {
3265
+ this.form.toggleMessage(true, msg, 'success');
3266
+ }
3267
+ if (this.form._liveTableParent) {
3268
+ // highlight the current updated row
3269
+ this.form._liveTableParent.onResult(operationType, response, newForm, updateMode);
3270
+ }
3271
+ else {
3272
+ /*get updated data without refreshing page*/
3273
+ this.form.datasource.execute(i1$1.DataSource.Operation.LIST_RECORDS, {
3274
+ 'skipToggleState': true
3275
+ });
3276
+ this.onDataSourceUpdate(response, newForm, updateMode);
3277
+ }
3278
+ return {
3279
+ 'result': result,
3280
+ 'status': true
3281
+ };
3282
+ }, (error) => {
3283
+ if (!this.form.onError) {
3284
+ this.form.toggleMessage(true, error, 'error');
3285
+ }
3286
+ i1$1.$appDigest();
3287
+ return {
3288
+ 'result': error,
3289
+ 'status': false
3290
+ };
3291
+ }).then(response => {
3292
+ // reset the form to pristine state
3293
+ this.form.resetFormState();
3294
+ this.form.onResultCb(response.result, response.status, event);
3295
+ });
3296
+ }
3297
+ ngOnDestroy() {
3298
+ // MEMORY LEAK FIX: Cancel debounced function
3299
+ if (this._debouncedSavePrevDataValues && this._debouncedSavePrevDataValues.cancel) {
3300
+ this._debouncedSavePrevDataValues.cancel();
3301
+ this._debouncedSavePrevDataValues = null;
3302
+ }
3303
+ // MEMORY LEAK FIX: Clear form reference
3304
+ this.form = null;
3305
+ }
3306
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: LiveFormDirective, deps: [{ token: FormComponent, self: true }, { token: i1$2__namespace.LiveTableComponent, optional: true }, { token: i5__namespace.ToDatePipe }, { token: i1$1__namespace.AbstractDialogService }, { token: 'formlayout', attribute: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
3307
+ static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: LiveFormDirective, isStandalone: true, selector: "[wmLiveForm]", host: { listeners: { "keydown": "onKeydownHandler($event)" } }, ngImport: i0__namespace }); }
3308
+ }
3309
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: LiveFormDirective, decorators: [{
3310
+ type: i0.Directive,
3311
+ args: [{
3312
+ standalone: true,
3313
+ selector: '[wmLiveForm]'
3314
+ }]
3315
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
3316
+ type: i0.Self
3317
+ }, {
3318
+ type: i0.Inject,
3319
+ args: [FormComponent]
3320
+ }] }, { type: i1$2__namespace.LiveTableComponent, decorators: [{
3321
+ type: i0.Optional
3322
+ }] }, { type: i5__namespace.ToDatePipe }, { type: i1$1__namespace.AbstractDialogService }, { type: undefined, decorators: [{
3323
+ type: i0.Attribute,
3324
+ args: ['formlayout']
3325
+ }] }], propDecorators: { onKeydownHandler: [{
3326
+ type: i0.HostListener,
3327
+ args: ['keydown', ['$event']]
3328
+ }] } });
3329
+
3330
+ exports.DependsonDirective = DependsonDirective;
3331
+ exports.FormActionDirective = FormActionDirective;
3332
+ exports.FormComponent = FormComponent;
3333
+ exports.FormFieldDirective = FormFieldDirective;
3334
+ exports.FormWidgetDirective = FormWidgetDirective;
3335
+ exports.LiveActionsDirective = LiveActionsDirective;
3336
+ exports.LiveFilterDirective = LiveFilterDirective;
3337
+ exports.LiveFormDirective = LiveFormDirective;
3338
+
3339
+ }));