libre-jqgrid 4.15.9

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 (421) hide show
  1. package/.github/workflows/npm.yml +23 -0
  2. package/.jscsrc +13 -0
  3. package/LICENSE +674 -0
  4. package/LICENSE.md +304 -0
  5. package/README.md +2 -0
  6. package/bower.json +53 -0
  7. package/css/ui.jqgrid.css +1618 -0
  8. package/css/ui.jqgrid.min.css +4 -0
  9. package/css/ui.jqgrid.min.css.map +1 -0
  10. package/dist/css/ui.jqgrid.css +1618 -0
  11. package/dist/css/ui.jqgrid.min.css +4 -0
  12. package/dist/css/ui.jqgrid.min.css.map +1 -0
  13. package/dist/i18n/grid.locale-ar.js +198 -0
  14. package/dist/i18n/grid.locale-bg.js +201 -0
  15. package/dist/i18n/grid.locale-bs.js +230 -0
  16. package/dist/i18n/grid.locale-ca.js +204 -0
  17. package/dist/i18n/grid.locale-cn.js +237 -0
  18. package/dist/i18n/grid.locale-cs.js +197 -0
  19. package/dist/i18n/grid.locale-da.js +196 -0
  20. package/dist/i18n/grid.locale-de.js +240 -0
  21. package/dist/i18n/grid.locale-el.js +195 -0
  22. package/dist/i18n/grid.locale-en.js +256 -0
  23. package/dist/i18n/grid.locale-es.js +202 -0
  24. package/dist/i18n/grid.locale-fa.js +211 -0
  25. package/dist/i18n/grid.locale-fi.js +201 -0
  26. package/dist/i18n/grid.locale-fr.js +197 -0
  27. package/dist/i18n/grid.locale-gl.js +197 -0
  28. package/dist/i18n/grid.locale-he.js +198 -0
  29. package/dist/i18n/grid.locale-hr.js +231 -0
  30. package/dist/i18n/grid.locale-hu.js +196 -0
  31. package/dist/i18n/grid.locale-id.js +238 -0
  32. package/dist/i18n/grid.locale-is.js +197 -0
  33. package/dist/i18n/grid.locale-it.js +189 -0
  34. package/dist/i18n/grid.locale-ja.js +203 -0
  35. package/dist/i18n/grid.locale-kr.js +194 -0
  36. package/dist/i18n/grid.locale-lt.js +199 -0
  37. package/dist/i18n/grid.locale-me.js +198 -0
  38. package/dist/i18n/grid.locale-nl.js +208 -0
  39. package/dist/i18n/grid.locale-no.js +180 -0
  40. package/dist/i18n/grid.locale-pl.js +204 -0
  41. package/dist/i18n/grid.locale-pt-br.js +210 -0
  42. package/dist/i18n/grid.locale-pt.js +196 -0
  43. package/dist/i18n/grid.locale-ro.js +210 -0
  44. package/dist/i18n/grid.locale-ru.js +196 -0
  45. package/dist/i18n/grid.locale-sk.js +198 -0
  46. package/dist/i18n/grid.locale-sl.js +230 -0
  47. package/dist/i18n/grid.locale-sr.js +199 -0
  48. package/dist/i18n/grid.locale-sv.js +198 -0
  49. package/dist/i18n/grid.locale-th.js +195 -0
  50. package/dist/i18n/grid.locale-tr.js +197 -0
  51. package/dist/i18n/grid.locale-tw.js +199 -0
  52. package/dist/i18n/grid.locale-ua.js +199 -0
  53. package/dist/i18n/grid.locale-vi.js +238 -0
  54. package/dist/i18n/min/grid.locale-ar.js +10 -0
  55. package/dist/i18n/min/grid.locale-ar.js.map +1 -0
  56. package/dist/i18n/min/grid.locale-bg.js +10 -0
  57. package/dist/i18n/min/grid.locale-bg.js.map +1 -0
  58. package/dist/i18n/min/grid.locale-ca.js +15 -0
  59. package/dist/i18n/min/grid.locale-ca.js.map +1 -0
  60. package/dist/i18n/min/grid.locale-cn.js +10 -0
  61. package/dist/i18n/min/grid.locale-cn.js.map +1 -0
  62. package/dist/i18n/min/grid.locale-cs.js +11 -0
  63. package/dist/i18n/min/grid.locale-cs.js.map +1 -0
  64. package/dist/i18n/min/grid.locale-da.js +10 -0
  65. package/dist/i18n/min/grid.locale-da.js.map +1 -0
  66. package/dist/i18n/min/grid.locale-de.js +21 -0
  67. package/dist/i18n/min/grid.locale-de.js.map +1 -0
  68. package/dist/i18n/min/grid.locale-el.js +10 -0
  69. package/dist/i18n/min/grid.locale-el.js.map +1 -0
  70. package/dist/i18n/min/grid.locale-en.js +11 -0
  71. package/dist/i18n/min/grid.locale-en.js.map +1 -0
  72. package/dist/i18n/min/grid.locale-es.js +16 -0
  73. package/dist/i18n/min/grid.locale-es.js.map +1 -0
  74. package/dist/i18n/min/grid.locale-fa.js +8 -0
  75. package/dist/i18n/min/grid.locale-fa.js.map +1 -0
  76. package/dist/i18n/min/grid.locale-fi.js +11 -0
  77. package/dist/i18n/min/grid.locale-fi.js.map +1 -0
  78. package/dist/i18n/min/grid.locale-fr.js +10 -0
  79. package/dist/i18n/min/grid.locale-fr.js.map +1 -0
  80. package/dist/i18n/min/grid.locale-gl.js +9 -0
  81. package/dist/i18n/min/grid.locale-gl.js.map +1 -0
  82. package/dist/i18n/min/grid.locale-he.js +10 -0
  83. package/dist/i18n/min/grid.locale-he.js.map +1 -0
  84. package/dist/i18n/min/grid.locale-hr.js +11 -0
  85. package/dist/i18n/min/grid.locale-hr.js.map +1 -0
  86. package/dist/i18n/min/grid.locale-hu.js +10 -0
  87. package/dist/i18n/min/grid.locale-hu.js.map +1 -0
  88. package/dist/i18n/min/grid.locale-id.js +10 -0
  89. package/dist/i18n/min/grid.locale-id.js.map +1 -0
  90. package/dist/i18n/min/grid.locale-is.js +9 -0
  91. package/dist/i18n/min/grid.locale-is.js.map +1 -0
  92. package/dist/i18n/min/grid.locale-it.js +2 -0
  93. package/dist/i18n/min/grid.locale-it.js.map +1 -0
  94. package/dist/i18n/min/grid.locale-ja.js +10 -0
  95. package/dist/i18n/min/grid.locale-ja.js.map +1 -0
  96. package/dist/i18n/min/grid.locale-kr.js +2 -0
  97. package/dist/i18n/min/grid.locale-kr.js.map +1 -0
  98. package/dist/i18n/min/grid.locale-lt.js +10 -0
  99. package/dist/i18n/min/grid.locale-lt.js.map +1 -0
  100. package/dist/i18n/min/grid.locale-me.js +10 -0
  101. package/dist/i18n/min/grid.locale-me.js.map +1 -0
  102. package/dist/i18n/min/grid.locale-nl.js +2 -0
  103. package/dist/i18n/min/grid.locale-nl.js.map +1 -0
  104. package/dist/i18n/min/grid.locale-no.js +2 -0
  105. package/dist/i18n/min/grid.locale-no.js.map +1 -0
  106. package/dist/i18n/min/grid.locale-pl.js +18 -0
  107. package/dist/i18n/min/grid.locale-pl.js.map +1 -0
  108. package/dist/i18n/min/grid.locale-pt-br.js +21 -0
  109. package/dist/i18n/min/grid.locale-pt-br.js.map +1 -0
  110. package/dist/i18n/min/grid.locale-pt.js +9 -0
  111. package/dist/i18n/min/grid.locale-pt.js.map +1 -0
  112. package/dist/i18n/min/grid.locale-ro.js +10 -0
  113. package/dist/i18n/min/grid.locale-ro.js.map +1 -0
  114. package/dist/i18n/min/grid.locale-ru.js +10 -0
  115. package/dist/i18n/min/grid.locale-ru.js.map +1 -0
  116. package/dist/i18n/min/grid.locale-sk.js +10 -0
  117. package/dist/i18n/min/grid.locale-sk.js.map +1 -0
  118. package/dist/i18n/min/grid.locale-sr.js +10 -0
  119. package/dist/i18n/min/grid.locale-sr.js.map +1 -0
  120. package/dist/i18n/min/grid.locale-sv.js +10 -0
  121. package/dist/i18n/min/grid.locale-sv.js.map +1 -0
  122. package/dist/i18n/min/grid.locale-th.js +10 -0
  123. package/dist/i18n/min/grid.locale-th.js.map +1 -0
  124. package/dist/i18n/min/grid.locale-tr.js +10 -0
  125. package/dist/i18n/min/grid.locale-tr.js.map +1 -0
  126. package/dist/i18n/min/grid.locale-tw.js +11 -0
  127. package/dist/i18n/min/grid.locale-tw.js.map +1 -0
  128. package/dist/i18n/min/grid.locale-ua.js +10 -0
  129. package/dist/i18n/min/grid.locale-ua.js.map +1 -0
  130. package/dist/i18n/min/grid.locale-vi.js +10 -0
  131. package/dist/i18n/min/grid.locale-vi.js.map +1 -0
  132. package/dist/jquery.jqgrid.min.js +21144 -0
  133. package/dist/jquery.jqgrid.min.js.map +1 -0
  134. package/dist/jquery.jqgrid.src.js +21144 -0
  135. package/dist/modules/grid.base.js +8518 -0
  136. package/dist/modules/grid.celledit.js +673 -0
  137. package/dist/modules/grid.common.js +844 -0
  138. package/dist/modules/grid.custom.js +1795 -0
  139. package/dist/modules/grid.filter.js +897 -0
  140. package/dist/modules/grid.formedit.js +2537 -0
  141. package/dist/modules/grid.grouping.js +737 -0
  142. package/dist/modules/grid.import.js +251 -0
  143. package/dist/modules/grid.inlinedit.js +784 -0
  144. package/dist/modules/grid.jqueryui.js +965 -0
  145. package/dist/modules/grid.pivot.js +862 -0
  146. package/dist/modules/grid.subgrid.js +379 -0
  147. package/dist/modules/grid.tbltogrid.js +141 -0
  148. package/dist/modules/grid.treegrid.js +683 -0
  149. package/dist/modules/jqdnr.js +188 -0
  150. package/dist/modules/jqmodal.js +292 -0
  151. package/dist/modules/jquery.fmatter.js +1061 -0
  152. package/dist/modules/jsonxml.js +343 -0
  153. package/dist/modules/min/grid.base.js +11 -0
  154. package/dist/modules/min/grid.base.js.map +1 -0
  155. package/dist/modules/min/grid.celledit.js +2 -0
  156. package/dist/modules/min/grid.celledit.js.map +1 -0
  157. package/dist/modules/min/grid.common.js +2 -0
  158. package/dist/modules/min/grid.common.js.map +1 -0
  159. package/dist/modules/min/grid.custom.js +2 -0
  160. package/dist/modules/min/grid.custom.js.map +1 -0
  161. package/dist/modules/min/grid.filter.js +2 -0
  162. package/dist/modules/min/grid.filter.js.map +1 -0
  163. package/dist/modules/min/grid.formedit.js +2 -0
  164. package/dist/modules/min/grid.formedit.js.map +1 -0
  165. package/dist/modules/min/grid.grouping.js +2 -0
  166. package/dist/modules/min/grid.grouping.js.map +1 -0
  167. package/dist/modules/min/grid.import.js +2 -0
  168. package/dist/modules/min/grid.import.js.map +1 -0
  169. package/dist/modules/min/grid.inlinedit.js +2 -0
  170. package/dist/modules/min/grid.inlinedit.js.map +1 -0
  171. package/dist/modules/min/grid.jqueryui.js +2 -0
  172. package/dist/modules/min/grid.jqueryui.js.map +1 -0
  173. package/dist/modules/min/grid.pivot.js +2 -0
  174. package/dist/modules/min/grid.pivot.js.map +1 -0
  175. package/dist/modules/min/grid.subgrid.js +2 -0
  176. package/dist/modules/min/grid.subgrid.js.map +1 -0
  177. package/dist/modules/min/grid.tbltogrid.js +2 -0
  178. package/dist/modules/min/grid.tbltogrid.js.map +1 -0
  179. package/dist/modules/min/grid.treegrid.js +2 -0
  180. package/dist/modules/min/grid.treegrid.js.map +1 -0
  181. package/dist/modules/min/jqdnr.js +2 -0
  182. package/dist/modules/min/jqdnr.js.map +1 -0
  183. package/dist/modules/min/jqmodal.js +2 -0
  184. package/dist/modules/min/jqmodal.js.map +1 -0
  185. package/dist/modules/min/jquery.fmatter.js +2 -0
  186. package/dist/modules/min/jquery.fmatter.js.map +1 -0
  187. package/dist/modules/min/jsonxml.js +2 -0
  188. package/dist/modules/min/jsonxml.js.map +1 -0
  189. package/dist/plugins/css/ui.multiselect.css +30 -0
  190. package/dist/plugins/css/ui.multiselect.min.css +2 -0
  191. package/dist/plugins/css/ui.multiselect.min.css.map +1 -0
  192. package/dist/plugins/grid.odata.js +1313 -0
  193. package/dist/plugins/jqgrid_download.js +109 -0
  194. package/dist/plugins/jquery.contextmenu-ui.js +304 -0
  195. package/dist/plugins/jquery.contextmenu.js +174 -0
  196. package/dist/plugins/jquery.createcontexmenufromnavigatorbuttons.js +172 -0
  197. package/dist/plugins/jquery.jqgrid.showhidecolumnmenu.js +201 -0
  198. package/dist/plugins/min/grid.odata.js +11 -0
  199. package/dist/plugins/min/grid.odata.js.map +1 -0
  200. package/dist/plugins/min/jquery.contextmenu-ui.js +26 -0
  201. package/dist/plugins/min/jquery.contextmenu-ui.js.map +1 -0
  202. package/dist/plugins/min/jquery.contextmenu.js +19 -0
  203. package/dist/plugins/min/jquery.contextmenu.js.map +1 -0
  204. package/dist/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js +12 -0
  205. package/dist/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js.map +1 -0
  206. package/dist/plugins/min/jquery.jqgrid.showhidecolumnmenu.js +10 -0
  207. package/dist/plugins/min/jquery.jqgrid.showhidecolumnmenu.js.map +1 -0
  208. package/dist/plugins/min/ui.multiselect.js +30 -0
  209. package/dist/plugins/min/ui.multiselect.js.map +1 -0
  210. package/dist/plugins/ui.multiselect.js +389 -0
  211. package/dist/ts/free-jqgrid.d.ts +2132 -0
  212. package/github /workflows/npm.yml +23 -0
  213. package/gruntfile.js +397 -0
  214. package/js/grid.base.js +8518 -0
  215. package/js/grid.celledit.js +673 -0
  216. package/js/grid.common.js +844 -0
  217. package/js/grid.custom.js +1795 -0
  218. package/js/grid.filter.js +897 -0
  219. package/js/grid.formedit.js +2537 -0
  220. package/js/grid.grouping.js +737 -0
  221. package/js/grid.import.js +251 -0
  222. package/js/grid.inlinedit.js +784 -0
  223. package/js/grid.jqueryui.js +965 -0
  224. package/js/grid.pivot.js +862 -0
  225. package/js/grid.subgrid.js +379 -0
  226. package/js/grid.tbltogrid.js +141 -0
  227. package/js/grid.treegrid.js +683 -0
  228. package/js/i18n/grid.locale-ar.js +198 -0
  229. package/js/i18n/grid.locale-bg.js +201 -0
  230. package/js/i18n/grid.locale-bs.js +230 -0
  231. package/js/i18n/grid.locale-ca.js +204 -0
  232. package/js/i18n/grid.locale-cn.js +237 -0
  233. package/js/i18n/grid.locale-cs.js +197 -0
  234. package/js/i18n/grid.locale-da.js +196 -0
  235. package/js/i18n/grid.locale-de.js +240 -0
  236. package/js/i18n/grid.locale-el.js +195 -0
  237. package/js/i18n/grid.locale-en.js +256 -0
  238. package/js/i18n/grid.locale-es.js +202 -0
  239. package/js/i18n/grid.locale-fa.js +211 -0
  240. package/js/i18n/grid.locale-fi.js +201 -0
  241. package/js/i18n/grid.locale-fr.js +197 -0
  242. package/js/i18n/grid.locale-gl.js +197 -0
  243. package/js/i18n/grid.locale-he.js +198 -0
  244. package/js/i18n/grid.locale-hr.js +231 -0
  245. package/js/i18n/grid.locale-hu.js +196 -0
  246. package/js/i18n/grid.locale-id.js +238 -0
  247. package/js/i18n/grid.locale-is.js +197 -0
  248. package/js/i18n/grid.locale-it.js +189 -0
  249. package/js/i18n/grid.locale-ja.js +203 -0
  250. package/js/i18n/grid.locale-kr.js +194 -0
  251. package/js/i18n/grid.locale-lt.js +199 -0
  252. package/js/i18n/grid.locale-me.js +198 -0
  253. package/js/i18n/grid.locale-nl.js +208 -0
  254. package/js/i18n/grid.locale-no.js +180 -0
  255. package/js/i18n/grid.locale-pl.js +204 -0
  256. package/js/i18n/grid.locale-pt-br.js +210 -0
  257. package/js/i18n/grid.locale-pt.js +196 -0
  258. package/js/i18n/grid.locale-ro.js +210 -0
  259. package/js/i18n/grid.locale-ru.js +196 -0
  260. package/js/i18n/grid.locale-sk.js +198 -0
  261. package/js/i18n/grid.locale-sl.js +230 -0
  262. package/js/i18n/grid.locale-sr.js +199 -0
  263. package/js/i18n/grid.locale-sv.js +198 -0
  264. package/js/i18n/grid.locale-th.js +195 -0
  265. package/js/i18n/grid.locale-tr.js +197 -0
  266. package/js/i18n/grid.locale-tw.js +199 -0
  267. package/js/i18n/grid.locale-ua.js +199 -0
  268. package/js/i18n/grid.locale-vi.js +238 -0
  269. package/js/i18n/min/grid.locale-ar.js +10 -0
  270. package/js/i18n/min/grid.locale-ar.js.map +1 -0
  271. package/js/i18n/min/grid.locale-bg.js +10 -0
  272. package/js/i18n/min/grid.locale-bg.js.map +1 -0
  273. package/js/i18n/min/grid.locale-ca.js +15 -0
  274. package/js/i18n/min/grid.locale-ca.js.map +1 -0
  275. package/js/i18n/min/grid.locale-cn.js +10 -0
  276. package/js/i18n/min/grid.locale-cn.js.map +1 -0
  277. package/js/i18n/min/grid.locale-cs.js +11 -0
  278. package/js/i18n/min/grid.locale-cs.js.map +1 -0
  279. package/js/i18n/min/grid.locale-da.js +10 -0
  280. package/js/i18n/min/grid.locale-da.js.map +1 -0
  281. package/js/i18n/min/grid.locale-de.js +21 -0
  282. package/js/i18n/min/grid.locale-de.js.map +1 -0
  283. package/js/i18n/min/grid.locale-el.js +10 -0
  284. package/js/i18n/min/grid.locale-el.js.map +1 -0
  285. package/js/i18n/min/grid.locale-en.js +11 -0
  286. package/js/i18n/min/grid.locale-en.js.map +1 -0
  287. package/js/i18n/min/grid.locale-es.js +16 -0
  288. package/js/i18n/min/grid.locale-es.js.map +1 -0
  289. package/js/i18n/min/grid.locale-fa.js +8 -0
  290. package/js/i18n/min/grid.locale-fa.js.map +1 -0
  291. package/js/i18n/min/grid.locale-fi.js +11 -0
  292. package/js/i18n/min/grid.locale-fi.js.map +1 -0
  293. package/js/i18n/min/grid.locale-fr.js +10 -0
  294. package/js/i18n/min/grid.locale-fr.js.map +1 -0
  295. package/js/i18n/min/grid.locale-gl.js +9 -0
  296. package/js/i18n/min/grid.locale-gl.js.map +1 -0
  297. package/js/i18n/min/grid.locale-he.js +10 -0
  298. package/js/i18n/min/grid.locale-he.js.map +1 -0
  299. package/js/i18n/min/grid.locale-hr.js +11 -0
  300. package/js/i18n/min/grid.locale-hr.js.map +1 -0
  301. package/js/i18n/min/grid.locale-hu.js +10 -0
  302. package/js/i18n/min/grid.locale-hu.js.map +1 -0
  303. package/js/i18n/min/grid.locale-id.js +10 -0
  304. package/js/i18n/min/grid.locale-id.js.map +1 -0
  305. package/js/i18n/min/grid.locale-is.js +9 -0
  306. package/js/i18n/min/grid.locale-is.js.map +1 -0
  307. package/js/i18n/min/grid.locale-it.js +2 -0
  308. package/js/i18n/min/grid.locale-it.js.map +1 -0
  309. package/js/i18n/min/grid.locale-ja.js +10 -0
  310. package/js/i18n/min/grid.locale-ja.js.map +1 -0
  311. package/js/i18n/min/grid.locale-kr.js +2 -0
  312. package/js/i18n/min/grid.locale-kr.js.map +1 -0
  313. package/js/i18n/min/grid.locale-lt.js +10 -0
  314. package/js/i18n/min/grid.locale-lt.js.map +1 -0
  315. package/js/i18n/min/grid.locale-me.js +10 -0
  316. package/js/i18n/min/grid.locale-me.js.map +1 -0
  317. package/js/i18n/min/grid.locale-nl.js +2 -0
  318. package/js/i18n/min/grid.locale-nl.js.map +1 -0
  319. package/js/i18n/min/grid.locale-no.js +2 -0
  320. package/js/i18n/min/grid.locale-no.js.map +1 -0
  321. package/js/i18n/min/grid.locale-pl.js +18 -0
  322. package/js/i18n/min/grid.locale-pl.js.map +1 -0
  323. package/js/i18n/min/grid.locale-pt-br.js +21 -0
  324. package/js/i18n/min/grid.locale-pt-br.js.map +1 -0
  325. package/js/i18n/min/grid.locale-pt.js +9 -0
  326. package/js/i18n/min/grid.locale-pt.js.map +1 -0
  327. package/js/i18n/min/grid.locale-ro.js +10 -0
  328. package/js/i18n/min/grid.locale-ro.js.map +1 -0
  329. package/js/i18n/min/grid.locale-ru.js +10 -0
  330. package/js/i18n/min/grid.locale-ru.js.map +1 -0
  331. package/js/i18n/min/grid.locale-sk.js +10 -0
  332. package/js/i18n/min/grid.locale-sk.js.map +1 -0
  333. package/js/i18n/min/grid.locale-sr.js +10 -0
  334. package/js/i18n/min/grid.locale-sr.js.map +1 -0
  335. package/js/i18n/min/grid.locale-sv.js +10 -0
  336. package/js/i18n/min/grid.locale-sv.js.map +1 -0
  337. package/js/i18n/min/grid.locale-th.js +10 -0
  338. package/js/i18n/min/grid.locale-th.js.map +1 -0
  339. package/js/i18n/min/grid.locale-tr.js +10 -0
  340. package/js/i18n/min/grid.locale-tr.js.map +1 -0
  341. package/js/i18n/min/grid.locale-tw.js +11 -0
  342. package/js/i18n/min/grid.locale-tw.js.map +1 -0
  343. package/js/i18n/min/grid.locale-ua.js +10 -0
  344. package/js/i18n/min/grid.locale-ua.js.map +1 -0
  345. package/js/i18n/min/grid.locale-vi.js +10 -0
  346. package/js/i18n/min/grid.locale-vi.js.map +1 -0
  347. package/js/jqdnr.js +188 -0
  348. package/js/jqmodal.js +292 -0
  349. package/js/jquery.fmatter.js +1061 -0
  350. package/js/jquery.jqgrid.min.js +11 -0
  351. package/js/jquery.jqgrid.min.js.map +1 -0
  352. package/js/jquery.jqgrid.src.js +21144 -0
  353. package/js/jsonxml.js +343 -0
  354. package/js/min/grid.base.js +11 -0
  355. package/js/min/grid.base.js.map +1 -0
  356. package/js/min/grid.celledit.js +2 -0
  357. package/js/min/grid.celledit.js.map +1 -0
  358. package/js/min/grid.common.js +2 -0
  359. package/js/min/grid.common.js.map +1 -0
  360. package/js/min/grid.custom.js +2 -0
  361. package/js/min/grid.custom.js.map +1 -0
  362. package/js/min/grid.filter.js +2 -0
  363. package/js/min/grid.filter.js.map +1 -0
  364. package/js/min/grid.formedit.js +2 -0
  365. package/js/min/grid.formedit.js.map +1 -0
  366. package/js/min/grid.grouping.js +2 -0
  367. package/js/min/grid.grouping.js.map +1 -0
  368. package/js/min/grid.import.js +2 -0
  369. package/js/min/grid.import.js.map +1 -0
  370. package/js/min/grid.inlinedit.js +2 -0
  371. package/js/min/grid.inlinedit.js.map +1 -0
  372. package/js/min/grid.jqueryui.js +2 -0
  373. package/js/min/grid.jqueryui.js.map +1 -0
  374. package/js/min/grid.pivot.js +2 -0
  375. package/js/min/grid.pivot.js.map +1 -0
  376. package/js/min/grid.subgrid.js +2 -0
  377. package/js/min/grid.subgrid.js.map +1 -0
  378. package/js/min/grid.tbltogrid.js +2 -0
  379. package/js/min/grid.tbltogrid.js.map +1 -0
  380. package/js/min/grid.treegrid.js +2 -0
  381. package/js/min/grid.treegrid.js.map +1 -0
  382. package/js/min/jqdnr.js +2 -0
  383. package/js/min/jqdnr.js.map +1 -0
  384. package/js/min/jqmodal.js +2 -0
  385. package/js/min/jqmodal.js.map +1 -0
  386. package/js/min/jquery.fmatter.js +2 -0
  387. package/js/min/jquery.fmatter.js.map +1 -0
  388. package/js/min/jsonxml.js +2 -0
  389. package/js/min/jsonxml.js.map +1 -0
  390. package/package.json +79 -0
  391. package/plugins/css/ui.multiselect.css +30 -0
  392. package/plugins/css/ui.multiselect.min.css +2 -0
  393. package/plugins/css/ui.multiselect.min.css.map +1 -0
  394. package/plugins/grid.odata.js +1313 -0
  395. package/plugins/jqgrid_download.js +109 -0
  396. package/plugins/jquery.contextmenu-ui.js +304 -0
  397. package/plugins/jquery.contextmenu.js +174 -0
  398. package/plugins/jquery.createcontexmenufromnavigatorbuttons.js +172 -0
  399. package/plugins/jquery.jqgrid.showhidecolumnmenu.js +201 -0
  400. package/plugins/min/grid.odata.js +11 -0
  401. package/plugins/min/grid.odata.js.map +1 -0
  402. package/plugins/min/jquery.contextmenu-ui.js +26 -0
  403. package/plugins/min/jquery.contextmenu-ui.js.map +1 -0
  404. package/plugins/min/jquery.contextmenu.js +19 -0
  405. package/plugins/min/jquery.contextmenu.js.map +1 -0
  406. package/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js +12 -0
  407. package/plugins/min/jquery.createcontexmenufromnavigatorbuttons.js.map +1 -0
  408. package/plugins/min/jquery.jqgrid.showhidecolumnmenu.js +10 -0
  409. package/plugins/min/jquery.jqgrid.showhidecolumnmenu.js.map +1 -0
  410. package/plugins/min/ui.multiselect.js +30 -0
  411. package/plugins/min/ui.multiselect.js.map +1 -0
  412. package/plugins/ui.multiselect.js +389 -0
  413. package/tests/fillingTest.htm +210 -0
  414. package/ts/free-jqgrid.d.ts +2132 -0
  415. package/ts/tests/README.txt +4 -0
  416. package/ts/tests/test.html +50 -0
  417. package/ts/tests/test.js +55 -0
  418. package/ts/tests/test.js.map +1 -0
  419. package/ts/tests/test.ts +149 -0
  420. package/ts/tests/tsconfig.json +7 -0
  421. package/tslint.json +20 -0
@@ -0,0 +1,673 @@
1
+ /**
2
+ * jqGrid extension for cellediting Grid Data
3
+ * Copyright (c) 2008-2014, Tony Tomov, tony@trirand.com, http://trirand.com/blog/
4
+ * Copyright (c) 2014-2019, Oleg Kiriljuk, oleg.kiriljuk@ok-soft-gmbh.com
5
+ * Copyright (c) 2023, rany2, ranygh@riseup.net
6
+ * Dual licensed under the MIT and GPL licenses:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ * http://www.gnu.org/licenses/gpl-2.0.html
9
+ **/
10
+
11
+ /**
12
+ * all events and options here are added anonymous and not in the base grid
13
+ * since the array is to big. Here is the order of execution.
14
+ * From this point we use jQuery isFunction
15
+ * formatCell
16
+ * beforeEditCell,
17
+ * onSelectCell (used only for non-editable cells)
18
+ * afterEditCell,
19
+ * beforeSaveCell, (called before validation of values if any)
20
+ * beforeSubmitCell (if cellsubmit remote (Ajax))
21
+ * afterSubmitCell(if cellsubmit remote (Ajax)),
22
+ * afterSaveCell,
23
+ * errorCell,
24
+ * serializeCellData - new
25
+ * Options
26
+ * cellsubmit ("remote","clientArray") (added in grid options)
27
+ * cellurl
28
+ * ajaxCellOptions
29
+ **/
30
+
31
+ /*jshint eqeqeq:false */
32
+ /*global jQuery, define, exports, module, require */
33
+ /*jslint browser: true, eqeq: true, plusplus: true, vars: true, white: true, todo: true */
34
+ (function (factory) {
35
+ "use strict";
36
+ if (typeof define === "function" && define.amd) {
37
+ // AMD. Register as an anonymous module.
38
+ define([
39
+ "jquery",
40
+ "./grid.base",
41
+ "./jquery.fmatter",
42
+ "./grid.common"
43
+ ], factory);
44
+ } else if (typeof module === "object" && module.exports) {
45
+ // Node/CommonJS
46
+ module.exports = function (root, $) {
47
+ if (!root) {
48
+ root = window;
49
+ }
50
+ if ($ === undefined) {
51
+ // require("jquery") returns a factory that requires window to
52
+ // build a jQuery instance, we normalize how we use modules
53
+ // that require this pattern but the window provided is a noop
54
+ // if it's defined (how jquery works)
55
+ $ = typeof window !== "undefined" ?
56
+ require("jquery") :
57
+ require("jquery")(root);
58
+ }
59
+ require("./grid.base");
60
+ require("./jquery.fmatter");
61
+ require("./grid.common");
62
+ factory($, root);
63
+ return $;
64
+ };
65
+ } else {
66
+ // Browser globals
67
+ factory(jQuery);
68
+ }
69
+ }(function ($) {
70
+ "use strict";
71
+ var jgrid = $.jgrid,
72
+ feedback = function () {
73
+ // short form of $.jgrid.feedback to save usage this.p as the first parameter
74
+ var args = $.makeArray(arguments);
75
+ args.unshift("");
76
+ args.unshift("");
77
+ args.unshift(this.p);
78
+ return jgrid.feedback.apply(this, args);
79
+ };
80
+ // begin module grid.celledit
81
+ var getTdByColumnIndex = function (tr, iCol) {
82
+ var $t = this, frozenRows = $t.grid.fbRows;
83
+ tr = frozenRows != null && frozenRows[0].cells.length > iCol ? frozenRows[tr.rowIndex] : tr;
84
+ return tr != null && tr.cells != null ? $(tr.cells[iCol]) : $();
85
+ },
86
+ safeHeightSet = function ($elem, newHeight) {
87
+ var height = $elem.height();
88
+ if (Math.abs(height - newHeight) >= 1 && newHeight > 0) {
89
+ $elem.height(newHeight);
90
+ height = $elem.height();
91
+ if (Math.abs(newHeight - height) >= 1) {
92
+ $elem.height(newHeight + Math.round((newHeight - height)));
93
+ }
94
+ }
95
+ };
96
+ jgrid.extend({
97
+ editCell: function (iRow, iCol, ed) {
98
+ return this.each(function () {
99
+ var $t = this, $self = $($t), p = $t.p, nm, tmp, $td, cm, rows = $t.rows;
100
+ if (!$t.grid || p.cellEdit !== true || rows == null || rows[iRow] == null) {
101
+ return;
102
+ }
103
+ iRow = parseInt(iRow, 10); // we change iRow and rows[iRow] can be change too
104
+ iCol = parseInt(iCol, 10);
105
+ if (isNaN(iRow) || isNaN(iCol)) {
106
+ return;
107
+ }
108
+ var tr = rows[iRow], rowid = tr != null ? tr.id : null, $tr = $(tr), edittype,
109
+ iColOld = parseInt(p.iCol, 10), iRowOld = parseInt(p.iRow, 10),
110
+ $trOld = $(rows[iRowOld]), savedRow = p.savedRow;
111
+ // select the row that can be used for other methods
112
+ if (rowid == null) {
113
+ return;
114
+ }
115
+ p.selrow = rowid;
116
+ if (!p.knv) {
117
+ $self.jqGrid("GridNav");
118
+ }
119
+ // check to see if we have already edited cell
120
+ if (savedRow.length > 0 && $trOld.length > 0) {
121
+ // prevent second click on that field and enable selects
122
+ if (ed === true) {
123
+ if (iRow === iRowOld && iCol === iColOld) {
124
+ return;
125
+ }
126
+ }
127
+ // save the cell
128
+ $self.jqGrid("saveCell", savedRow[0].id, savedRow[0].ic);
129
+ } else {
130
+ setTimeout(function () {
131
+ $("#" + jgrid.jqID(p.knv)).attr("tabindex", "-1").focus();
132
+ }, 1);
133
+ }
134
+ cm = p.colModel[iCol];
135
+ nm = cm.name;
136
+ if (nm === "subgrid" || nm === "cb" || nm === "rn") {
137
+ return;
138
+ }
139
+ $td = getTdByColumnIndex.call($t, tr, iCol);
140
+ var editable = cm.editable, mode = "cell";
141
+ if ($.jgrid.isFunction(editable)) {
142
+ editable = editable.call($t, {
143
+ rowid: rowid,
144
+ iCol: iCol,
145
+ iRow: iRow,
146
+ cmName: nm,
147
+ cm: cm,
148
+ mode: mode
149
+ });
150
+ }
151
+ var highlightClasses = $self.jqGrid("getGuiStyles", "states.select", "edit-cell"),
152
+ hoverClasses = $self.jqGrid("getGuiStyles", "states.hover", "selected-row");
153
+ if (editable === true && ed === true && !$td.hasClass("not-editable-cell")) {
154
+ if (!p.noCellSelection) {
155
+ if (iColOld >= 0 && iRowOld >= 0) {
156
+ getTdByColumnIndex.call($t, $trOld[0], iColOld).removeClass(highlightClasses);
157
+ $trOld.removeClass(hoverClasses);
158
+ }
159
+ $td.addClass(highlightClasses);
160
+ $tr.addClass(hoverClasses);
161
+ }
162
+ if (!cm.edittype) {
163
+ cm.edittype = "text";
164
+ }
165
+ edittype = cm.edittype;
166
+ try {
167
+ tmp = $.unformat.call($t, $td, { rowId: rowid, colModel: cm }, iCol);
168
+ } catch (ex) {
169
+ tmp = edittype === "textarea" ? $td.text() : $td.html();
170
+ }
171
+ if (p.autoEncodeOnEdit) {
172
+ tmp = jgrid.oldDecodePostedData(tmp);
173
+ }
174
+ if (tmp === " " || tmp === " " || (tmp.length === 1 && tmp.charCodeAt(0) === 160)) {
175
+ tmp = "";
176
+ }
177
+ if ($.jgrid.isFunction(p.formatCell)) {
178
+ var tmp2 = p.formatCell.call($t, rowid, nm, tmp, iRow, iCol);
179
+ if (tmp2 !== undefined) {
180
+ tmp = tmp2;
181
+ }
182
+ }
183
+ feedback.call($t, "beforeEditCell", rowid, nm, tmp, iRow, iCol);
184
+ savedRow.push({ id: iRow, ic: iCol, name: nm, v: tmp });
185
+ p.editingInfo[rowid] = {
186
+ mode: "cellEditing",
187
+ savedRow: savedRow[savedRow.length - 1],
188
+ editable: {}
189
+ };
190
+ p.editingInfo[rowid].editable[nm] = editable;
191
+ var opt = $.extend({}, cm.editoptions || {},
192
+ { id: iRow + "_" + nm, name: nm, rowId: rowid, mode: mode, cm: cm, iCol: iCol });
193
+ var elc = jgrid.createEl.call($t, edittype, opt, tmp, true, $.extend({}, jgrid.ajaxOptions, p.ajaxSelectOptions || {})),
194
+ $dataFiled = $td,
195
+ editingColumnWithTreeGridIcon = p.treeGrid === true && nm === p.ExpandColumn;
196
+ if (editingColumnWithTreeGridIcon) {
197
+ $dataFiled = $td.children("span.cell-wrapperleaf,span.cell-wrapper");
198
+ }
199
+ $dataFiled.html("").append(elc).attr("tabindex", "0");
200
+ if (editingColumnWithTreeGridIcon) { // && elc.style.width === "100%"
201
+ $(elc).width($td.width() - $td.children("div.tree-wrap").outerWidth());
202
+ }
203
+ jgrid.bindEv.call($t, elc, opt);
204
+ if (p.frozenColumns && iCol < $self.jqGrid("getNumberOfFrozenColumns")) {
205
+ safeHeightSet($($t.rows[tr.rowIndex].cells[iCol]), $td.height());
206
+ }
207
+ setTimeout(function () {
208
+ $(elc).focus();
209
+ }, 0);
210
+ $("input, select, textarea", $td).on("keydown", function (e) {
211
+ if (e.keyCode === 27) {
212
+ if ($("input.hasDatepicker", $td).length > 0) {
213
+ if ($(".ui-datepicker").is(":hidden")) {
214
+ $self.jqGrid("restoreCell", iRow, iCol);
215
+ } else {
216
+ $("input.hasDatepicker", $td).datepicker("hide");
217
+ }
218
+ } else {
219
+ $self.jqGrid("restoreCell", iRow, iCol);
220
+ }
221
+ } //ESC
222
+ if (e.keyCode === 13 && !e.shiftKey) {
223
+ $self.jqGrid("saveCell", iRow, iCol);
224
+ // Prevent default action
225
+ return false;
226
+ } //Enter
227
+ if (e.keyCode === 9) {
228
+ if (!$t.grid.hDiv.loading) {
229
+ if (e.shiftKey) {
230
+ $self.jqGrid("prevCell", iRow, iCol); //Shift TAb
231
+ } else {
232
+ $self.jqGrid("nextCell", iRow, iCol); //Tab
233
+ }
234
+ } else {
235
+ return false;
236
+ }
237
+ }
238
+ e.stopPropagation();
239
+ });
240
+ feedback.call($t, "afterEditCell", rowid, nm, tmp, iRow, iCol);
241
+ } else {
242
+ if (!p.noCellSelection) {
243
+ if (iColOld >= 0 && iRowOld >= 0) {
244
+ getTdByColumnIndex.call($t, $trOld[0], iColOld).removeClass(highlightClasses);
245
+ $trOld.removeClass(hoverClasses);
246
+ }
247
+ $td.addClass(highlightClasses);
248
+ $tr.addClass(hoverClasses);
249
+ }
250
+ tmp = $td.html().replace(/&#160;/ig, "");
251
+ feedback.call($t, "onSelectCell", rowid, nm, tmp, iRow, iCol);
252
+ }
253
+ p.iCol = iCol;
254
+ p.iRow = iRow;
255
+ });
256
+ },
257
+ saveCell: function (iRow, iCol) {
258
+ return this.each(function () {
259
+ var $t = this, $self = $($t), p = $t.p, grid = $t.grid, infoDialog = jgrid.info_dialog, jqID = jgrid.jqID;
260
+
261
+ if (!grid || p.cellEdit !== true) {
262
+ return;
263
+ }
264
+ var errors = $self.jqGrid("getGridRes", "errors"), errcap = errors.errcap,
265
+ edit = $self.jqGrid("getGridRes", "edit"), bClose = edit.bClose,
266
+ savedRow = p.savedRow, fr = savedRow.length >= 1 ? 0 : null;
267
+ if (fr !== null) {
268
+ var tr = $t.rows[iRow], rowid = tr != null ? tr.id : null, $tr = tr != null ? $(tr) : $(), cm = p.colModel[iCol], nm = cm.name, vv,
269
+ $td = getTdByColumnIndex.call($t, tr, iCol), valueText = {},
270
+ v = jgrid.getEditedValue.call($t, $td, cm, valueText);
271
+
272
+ // The common approach is if nothing changed do not do anything
273
+ if (v !== savedRow[fr].v) {
274
+ vv = $self.triggerHandler("jqGridBeforeSaveCell", [rowid, nm, v, iRow, iCol]);
275
+ if (vv !== undefined) {
276
+ v = vv;
277
+ }
278
+ if ($.jgrid.isFunction(p.beforeSaveCell)) {
279
+ vv = p.beforeSaveCell.call($t, rowid, nm, v, iRow, iCol);
280
+ if (vv !== undefined) {
281
+ v = vv;
282
+ }
283
+ }
284
+ var cv = jgrid.checkValues.call($t, v, iCol, undefined, undefined, {
285
+ oldValue: savedRow[fr].v,
286
+ newValue: v,
287
+ cmName: nm,
288
+ rowid: rowid,
289
+ iCol: iCol,
290
+ iRow: iRow,
291
+ cm: cm,
292
+ tr: tr,
293
+ td: $td,
294
+ mode: "cell"
295
+ }),
296
+ formatoptions = cm.formatoptions || {};
297
+ if (cv == null || cv === true || cv[0] === true) {
298
+ var addpost = $self.triggerHandler("jqGridBeforeSubmitCell", [rowid, nm, v, iRow, iCol]) || {};
299
+ if ($.jgrid.isFunction(p.beforeSubmitCell)) {
300
+ addpost = p.beforeSubmitCell.call($t, rowid, nm, v, iRow, iCol);
301
+ if (!addpost) {
302
+ addpost = {};
303
+ }
304
+ }
305
+ if ($("input.hasDatepicker", $td).length > 0) {
306
+ $("input.hasDatepicker", $td).datepicker("hide");
307
+ }
308
+ if (cm.formatter === "date" && formatoptions.sendFormatted !== true) {
309
+ // TODO: call all other predefined formatters!!! Not only formatter: "date" have the problem.
310
+ // Floating point separator for example
311
+ v = $.unformat.date.call($t, v, cm);
312
+ }
313
+ if (p.cellsubmit === "remote") {
314
+ if (p.cellurl) {
315
+ var postdata = {};
316
+ postdata[nm] = v;
317
+ var opers = p.prmNames, idname = opers.id, oper = opers.oper;
318
+ postdata[idname] = jgrid.stripPref(p.idPrefix, rowid);
319
+ postdata[oper] = opers.editoper;
320
+ postdata = $.extend(addpost, postdata);
321
+ if (p.autoEncodeOnEdit) {
322
+ $.each(postdata, function (n, val) {
323
+ if (!$.jgrid.isFunction(val)) {
324
+ postdata[n] = jgrid.oldEncodePostedData(val);
325
+ }
326
+ });
327
+ }
328
+ $self.jqGrid("progressBar", { method: "show", loadtype: p.loadui, htmlcontent: $self.jqGrid("getGridRes", "defaults.savetext") || "Saving..." });
329
+ grid.hDiv.loading = true;
330
+ $.ajax($.extend({
331
+ url: $.jgrid.isFunction(p.cellurl) ? p.cellurl.call($t, p.cellurl, iRow, iCol, rowid, v, nm) : p.cellurl,
332
+ //data :$.jgrid.isFunction(p.serializeCellData) ? p.serializeCellData.call($t, postdata) : postdata,
333
+ data: jgrid.serializeFeedback.call($t, p.serializeCellData, "jqGridSerializeCellData", postdata),
334
+ type: "POST",
335
+ complete: function (jqXHR) {
336
+ grid.endReq.call($t);
337
+ if ((jqXHR.status < 300 || jqXHR.status === 304) && (jqXHR.status !== 0 || jqXHR.readyState !== 4)) {
338
+ var ret = $self.triggerHandler("jqGridAfterSubmitCell", [$t, jqXHR, postdata.id, nm, v, iRow, iCol]) || [true, ""];
339
+ if (ret === true || (ret[0] === true && $.jgrid.isFunction(p.afterSubmitCell))) {
340
+ ret = p.afterSubmitCell.call($t, jqXHR, postdata.id, nm, v, iRow, iCol);
341
+ }
342
+ if (ret == null || ret === true || ret[0] === true) {
343
+ $self.jqGrid("setCell", rowid, iCol, v, false, false, true);
344
+ $td.addClass("dirty-cell");
345
+ $tr.addClass("edited");
346
+ feedback.call($t, "afterSaveCell", rowid, nm, v, iRow, iCol);
347
+ savedRow.splice(0, 1);
348
+ delete p.editingInfo[rowid];
349
+ } else {
350
+ infoDialog.call($t, errcap, ret[1], bClose);
351
+ $self.jqGrid("restoreCell", iRow, iCol);
352
+ }
353
+ }
354
+ },
355
+ error: function (jqXHR, textStatus, errorThrown) {
356
+ $self.triggerHandler("jqGridErrorCell", [jqXHR, textStatus, errorThrown]);
357
+ if ($.jgrid.isFunction(p.errorCell)) {
358
+ p.errorCell.call($t, jqXHR, textStatus, errorThrown);
359
+ $self.jqGrid("restoreCell", iRow, iCol);
360
+ } else {
361
+ infoDialog.call($t, errcap, jqXHR.status + " : " + jqXHR.statusText + "<br/>" + textStatus, bClose);
362
+ $self.jqGrid("restoreCell", iRow, iCol);
363
+ }
364
+ }
365
+ }, jgrid.ajaxOptions, p.ajaxCellOptions || {}));
366
+ } else {
367
+ try {
368
+ infoDialog.call($t, errcap, errors.nourl, bClose);
369
+ $self.jqGrid("restoreCell", iRow, iCol);
370
+ } catch (ignore) { }
371
+ }
372
+ }
373
+ if (p.cellsubmit === "clientArray") {
374
+ $self.jqGrid("setCell", rowid, iCol,
375
+ cm.edittype === "select" && cm.formatter !== "select" ? valueText.text : v,
376
+ false, false, true);
377
+ $td.addClass("dirty-cell");
378
+ $tr.addClass("edited");
379
+ feedback.call($t, "afterSaveCell", rowid, nm, v, iRow, iCol);
380
+ if (p.frozenColumns && iCol < $self.jqGrid("getNumberOfFrozenColumns")) {
381
+ try {
382
+ $t.rows[tr.rowIndex].cells[iCol].style.height = "";
383
+ } catch (ignore) { }
384
+ }
385
+ savedRow.splice(0, 1);
386
+ delete p.editingInfo[rowid];
387
+ }
388
+ } else {
389
+ try {
390
+ setTimeout(function () {
391
+ var relativeRect = jgrid.getRelativeRect.call($t, $td);
392
+ infoDialog.call($t, errcap, v + " " + cv[1], bClose, {
393
+ top: relativeRect.top,
394
+ left: relativeRect.left + $($t).closest(".ui-jqgrid").offset().left
395
+ });
396
+ }, 50);
397
+ $self.jqGrid("restoreCell", iRow, iCol);
398
+ } catch (ignore) { }
399
+ }
400
+ } else {
401
+ $self.jqGrid("restoreCell", iRow, iCol);
402
+ }
403
+ }
404
+ setTimeout(function () {
405
+ $("#" + jqID(p.knv)).attr("tabindex", "-1").focus();
406
+ }, 0);
407
+ });
408
+ },
409
+ restoreCell: function (iRow, iCol) {
410
+ return this.each(function () {
411
+ var $t = this, p = $t.p, tr = $t.rows[iRow], rowid = tr.id, v, cm, formatoptions;
412
+ if (!$t.grid || p.cellEdit !== true) {
413
+ return;
414
+ }
415
+ var savedRow = p.savedRow, $td = getTdByColumnIndex.call($t, tr, iCol);
416
+ if (savedRow.length >= 1) {
417
+ // datepicker fix
418
+ if ($.jgrid.isFunction($.fn.datepicker)) {
419
+ try {
420
+ $("input.hasDatepicker", $td).datepicker("hide");
421
+ } catch (ignore) { }
422
+ }
423
+ cm = p.colModel[iCol];
424
+ if (p.treeGrid === true && cm != null && cm.name === p.ExpandColumn) {
425
+ $td.children("span.cell-wrapperleaf,span.cell-wrapper").empty();
426
+ } else {
427
+ $td.empty();
428
+ }
429
+ $td.attr("tabindex", "-1");
430
+ v = savedRow[0].v;
431
+ if (cm != null) {
432
+ formatoptions = cm.formatoptions || {};
433
+ if (cm.formatter === "date" && formatoptions.sendFormatted !== true) {
434
+ // TODO: call all other predefined formatters!!! Not only formatter: "date" have the problem.
435
+ // Floating point separator for example
436
+ v = $.unformat.date.call($t, v, cm);
437
+ }
438
+ $($t).jqGrid("setCell", rowid, iCol, v, false, false, true);
439
+ if (p.frozenColumns && iCol < $($t).jqGrid("getNumberOfFrozenColumns")) {
440
+ try {
441
+ $t.rows[tr.rowIndex].cells[iCol].style.height = "";
442
+ } catch (ignore) { }
443
+ }
444
+ }
445
+ feedback.call($t, "afterRestoreCell", rowid, v, iRow, iCol);
446
+ savedRow.splice(0, 1);
447
+ delete p.editingInfo[rowid];
448
+ }
449
+ setTimeout(function () {
450
+ $("#" + p.knv).attr("tabindex", "-1").focus();
451
+ }, 0);
452
+ });
453
+ },
454
+ nextCell: function (iRow, iCol) {
455
+ return this.each(function () {
456
+ var $t = this, $self = $($t), p = $t.p, nCol = false, i, editable, cm, rows = $t.rows;
457
+ if (!$t.grid || p.cellEdit !== true || rows == null || rows[iRow] == null) {
458
+ return;
459
+ }
460
+ // try to find next editable cell
461
+ for (i = iCol + 1; i < p.colModel.length; i++) {
462
+ cm = p.colModel[i];
463
+ editable = cm.editable;
464
+ if ($.jgrid.isFunction(editable)) {
465
+ editable = editable.call($t, {
466
+ rowid: rows[iRow].id,
467
+ iCol: i,
468
+ iRow: iRow,
469
+ cmName: cm.name,
470
+ cm: cm,
471
+ mode: "cell"
472
+ });
473
+ }
474
+ if (editable === true) {
475
+ nCol = i;
476
+ break;
477
+ }
478
+ }
479
+ if (nCol !== false) {
480
+ $self.jqGrid("editCell", iRow, nCol, true);
481
+ } else {
482
+ if (p.savedRow.length > 0) {
483
+ $self.jqGrid("saveCell", iRow, iCol);
484
+ }
485
+ }
486
+ });
487
+ },
488
+ prevCell: function (iRow, iCol) {
489
+ return this.each(function () {
490
+ var $t = this, $self = $($t), p = $t.p, nCol = false, i, editable, cm, rows = $t.rows;
491
+ if (!$t.grid || p.cellEdit !== true || rows == null || rows[iRow] == null) {
492
+ return;
493
+ }
494
+ // try to find next editable cell
495
+ for (i = iCol - 1; i >= 0; i--) {
496
+ cm = p.colModel[i];
497
+ editable = cm.editable;
498
+ if ($.jgrid.isFunction(editable)) {
499
+ editable = editable.call($t, {
500
+ rowid: rows[iRow].id,
501
+ iCol: i,
502
+ iRow: iRow,
503
+ cmName: cm.name,
504
+ cm: cm,
505
+ mode: "cell"
506
+ });
507
+ }
508
+ if (editable === true) {
509
+ nCol = i;
510
+ break;
511
+ }
512
+ }
513
+ if (nCol !== false) {
514
+ $self.jqGrid("editCell", iRow, nCol, true);
515
+ } else {
516
+ if (p.savedRow.length > 0) {
517
+ $self.jqGrid("saveCell", iRow, iCol);
518
+ }
519
+ }
520
+ });
521
+ },
522
+ GridNav: function () {
523
+ return this.each(function () {
524
+ var $t = this, $self = $($t), p = $t.p, grid = $t.grid, i, kdir;
525
+ if (!grid || p.cellEdit !== true) {
526
+ return;
527
+ }
528
+ var bDiv = grid.bDiv;
529
+ // trick to process keydown on non input elements
530
+ p.knv = p.id + "_kn";
531
+ var selection = $("<div style='position:fixed;top:0px;width:1px;height:1px;' tabindex='0'><div tabindex='-1' style='width:1px;height:1px;' id='" + p.knv + "'></div></div>");
532
+ function scrollGrid(iR, iC, tp) {
533
+ var tr = $t.rows[iR];
534
+ if (tp.substr(0, 1) === "v") {
535
+ var ch = bDiv.clientHeight,
536
+ st = bDiv.scrollTop,
537
+ nRot = tr.offsetTop + tr.clientHeight,
538
+ pRot = tr.offsetTop;
539
+
540
+ if (tp === "vd") {
541
+ if (nRot >= st + ch) {
542
+ bDiv.scrollTop = bDiv.scrollTop + tr.clientHeight;
543
+ }
544
+ }
545
+ if (tp === "vu") {
546
+ if (pRot < st) {
547
+ bDiv.scrollTop = bDiv.scrollTop - tr.clientHeight;
548
+ }
549
+ }
550
+ }
551
+ if (tp === "h") {
552
+ var cw = bDiv.clientWidth,
553
+ sl = bDiv.scrollLeft,
554
+ td = tr.cells[iC],
555
+ nCol = td.offsetLeft + td.clientWidth,
556
+ pCol = td.offsetLeft;
557
+
558
+ if (nCol >= cw + parseInt(sl, 10)) {
559
+ bDiv.scrollLeft = bDiv.scrollLeft + td.clientWidth;
560
+ } else if (pCol < sl) {
561
+ bDiv.scrollLeft = bDiv.scrollLeft - td.clientWidth;
562
+ }
563
+ }
564
+ }
565
+ function findNextVisible(iC, act) {
566
+ var ind = 0, j, colModel = p.colModel;
567
+ if (act === "lft") {
568
+ ind = iC + 1;
569
+ for (j = iC; j >= 0; j--) {
570
+ if (colModel[j].hidden !== true) {
571
+ ind = j;
572
+ break;
573
+ }
574
+ }
575
+ }
576
+ if (act === "rgt") {
577
+ ind = iC - 1;
578
+ for (j = iC; j < colModel.length; j++) {
579
+ if (colModel[j].hidden !== true) {
580
+ ind = j;
581
+ break;
582
+ }
583
+ }
584
+ }
585
+ return ind;
586
+ }
587
+
588
+ $(selection).insertBefore(grid.cDiv);
589
+ $("#" + p.knv)
590
+ .focus()
591
+ .keydown(function (e) {
592
+ var iRowOld = parseInt(p.iRow, 10), iColOld = parseInt(p.iCol, 10);
593
+ kdir = e.keyCode;
594
+ if (p.direction === "rtl") {
595
+ if (kdir === 37) {
596
+ kdir = 39;
597
+ } else if (kdir === 39) {
598
+ kdir = 37;
599
+ }
600
+ }
601
+ switch (kdir) {
602
+ case 38:
603
+ if (iRowOld - 1 > 0) {
604
+ scrollGrid(iRowOld - 1, iColOld, "vu");
605
+ $self.jqGrid("editCell", iRowOld - 1, iColOld, false);
606
+ }
607
+ break;
608
+ case 40:
609
+ if (iRowOld + 1 <= $t.rows.length - 1) {
610
+ scrollGrid(iRowOld + 1, iColOld, "vd");
611
+ $self.jqGrid("editCell", iRowOld + 1, iColOld, false);
612
+ }
613
+ break;
614
+ case 37:
615
+ if (iColOld - 1 >= 0) {
616
+ i = findNextVisible(iColOld - 1, "lft");
617
+ scrollGrid(iRowOld, i, "h");
618
+ $self.jqGrid("editCell", iRowOld, i, false);
619
+ }
620
+ break;
621
+ case 39:
622
+ if (iColOld + 1 <= p.colModel.length - 1) {
623
+ i = findNextVisible(iColOld + 1, "rgt");
624
+ scrollGrid(iRowOld, i, "h");
625
+ $self.jqGrid("editCell", iRowOld, i, false);
626
+ }
627
+ break;
628
+ case 13:
629
+ if (iColOld >= 0 && iRowOld >= 0) {
630
+ $self.jqGrid("editCell", iRowOld, iColOld, true);
631
+ }
632
+ break;
633
+ default:
634
+ return true;
635
+ }
636
+ return false;
637
+ });
638
+ });
639
+ },
640
+ getChangedCells: function (mthd) {
641
+ var ret = [];
642
+ if (!mthd) {
643
+ mthd = "all";
644
+ }
645
+ this.each(function () {
646
+ var $t = this, p = $t.p, htmlDecode = jgrid.htmlDecode, rows = $t.rows;
647
+ if (!$t.grid || p.cellEdit !== true) {
648
+ return;
649
+ }
650
+ $(rows).each(function (j) {
651
+ var res = {};
652
+ if ($(this).hasClass("edited")) {
653
+ var tr = this;
654
+ $(this.cells).each(function (i) {
655
+ var cm = p.colModel[i], nm = cm.name, $td = getTdByColumnIndex.call($t, tr, i); // $td = $(this);
656
+ if (nm !== "cb" && nm !== "subgrid" && nm !== "rn" && (mthd !== "dirty" || $td.hasClass("dirty-cell"))) {
657
+ try {
658
+ res[nm] = $.unformat.call($t, $td[0], { rowId: rows[j].id, colModel: cm }, i);
659
+ } catch (e) {
660
+ res[nm] = htmlDecode($td.html());
661
+ }
662
+ }
663
+ });
664
+ res.id = this.id;
665
+ ret.push(res);
666
+ }
667
+ });
668
+ });
669
+ return ret;
670
+ }
671
+ });
672
+ // end module grid.celledit
673
+ }));