@wavemaker-ai/app-ng-runtime 1.0.0-next.27766

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