@toclocoinc/lattice-grid 1.115.0 → 1.115.2

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 (441) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/angular/package.json +1 -1
  4. package/docs/API.html +4 -4
  5. package/docs/api/adapters.html +1 -1
  6. package/docs/api/ai.html +1 -1
  7. package/docs/api/alarms.html +1 -1
  8. package/docs/api/calendar.html +1 -1
  9. package/docs/api/charts.html +1 -1
  10. package/docs/api/dashboard.html +1 -1
  11. package/docs/api/data-router.html +1 -1
  12. package/docs/api/dataview.html +1 -1
  13. package/docs/api/deckgl.html +1 -1
  14. package/docs/api/designer.html +1 -1
  15. package/docs/api/form.html +1 -1
  16. package/docs/api/gantt.html +1 -1
  17. package/docs/api/geometry.html +1 -1
  18. package/docs/api/grid.html +2 -2
  19. package/docs/api/index.html +1 -1
  20. package/docs/api/kanban.html +1 -1
  21. package/docs/api/kpi.html +1 -1
  22. package/docs/api/layout.html +1 -1
  23. package/docs/api/leaflet.html +1 -1
  24. package/docs/api/list.html +1 -1
  25. package/docs/api/listview.html +1 -1
  26. package/docs/api/mapview.html +1 -1
  27. package/docs/api/mock-socket.html +1 -1
  28. package/docs/api/presets.html +1 -1
  29. package/docs/api/scheduler.html +1 -1
  30. package/docs/api/shell.html +1 -1
  31. package/docs/api/tabs.html +1 -1
  32. package/docs/api/tree.html +1 -1
  33. package/docs/api/types.html +1 -1
  34. package/docs/api-detail.html +5 -5
  35. package/docs/warnings.json +1 -1
  36. package/lattice-grid.d.ts +1 -1
  37. package/lattice-grid.esm.min.js +2 -2
  38. package/lattice-grid.min.cjs +2 -2
  39. package/lattice-grid.min.js +2 -2
  40. package/locales/all.d.ts +1 -1
  41. package/locales/all.esm.min.js +1 -1
  42. package/locales/all.min.cjs +1 -1
  43. package/locales/all.min.js +1 -1
  44. package/locales/ar.d.ts +1 -1
  45. package/locales/ar.esm.min.js +1 -1
  46. package/locales/ar.min.cjs +1 -1
  47. package/locales/ar.min.js +1 -1
  48. package/locales/cs-CZ.d.ts +1 -1
  49. package/locales/cs-CZ.esm.min.js +1 -1
  50. package/locales/cs-CZ.min.cjs +1 -1
  51. package/locales/cs-CZ.min.js +1 -1
  52. package/locales/da-DK.d.ts +1 -1
  53. package/locales/da-DK.esm.min.js +1 -1
  54. package/locales/da-DK.min.cjs +1 -1
  55. package/locales/da-DK.min.js +1 -1
  56. package/locales/de-DE.d.ts +1 -1
  57. package/locales/de-DE.esm.min.js +1 -1
  58. package/locales/de-DE.min.cjs +1 -1
  59. package/locales/de-DE.min.js +1 -1
  60. package/locales/el-GR.d.ts +1 -1
  61. package/locales/el-GR.esm.min.js +1 -1
  62. package/locales/el-GR.min.cjs +1 -1
  63. package/locales/el-GR.min.js +1 -1
  64. package/locales/en-US.d.ts +1 -1
  65. package/locales/en-US.esm.min.js +1 -1
  66. package/locales/en-US.min.cjs +1 -1
  67. package/locales/en-US.min.js +1 -1
  68. package/locales/es-ES.d.ts +1 -1
  69. package/locales/es-ES.esm.min.js +1 -1
  70. package/locales/es-ES.min.cjs +1 -1
  71. package/locales/es-ES.min.js +1 -1
  72. package/locales/fi-FI.d.ts +1 -1
  73. package/locales/fi-FI.esm.min.js +1 -1
  74. package/locales/fi-FI.min.cjs +1 -1
  75. package/locales/fi-FI.min.js +1 -1
  76. package/locales/fr-CA.d.ts +1 -1
  77. package/locales/fr-CA.esm.min.js +1 -1
  78. package/locales/fr-CA.min.cjs +1 -1
  79. package/locales/fr-CA.min.js +1 -1
  80. package/locales/fr-FR.d.ts +1 -1
  81. package/locales/fr-FR.esm.min.js +1 -1
  82. package/locales/fr-FR.min.cjs +1 -1
  83. package/locales/fr-FR.min.js +1 -1
  84. package/locales/hu-HU.d.ts +1 -1
  85. package/locales/hu-HU.esm.min.js +1 -1
  86. package/locales/hu-HU.min.cjs +1 -1
  87. package/locales/hu-HU.min.js +1 -1
  88. package/locales/it-IT.d.ts +1 -1
  89. package/locales/it-IT.esm.min.js +1 -1
  90. package/locales/it-IT.min.cjs +1 -1
  91. package/locales/it-IT.min.js +1 -1
  92. package/locales/ja-JP.d.ts +1 -1
  93. package/locales/ja-JP.esm.min.js +1 -1
  94. package/locales/ja-JP.min.cjs +1 -1
  95. package/locales/ja-JP.min.js +1 -1
  96. package/locales/nb-NO.d.ts +1 -1
  97. package/locales/nb-NO.esm.min.js +1 -1
  98. package/locales/nb-NO.min.cjs +1 -1
  99. package/locales/nb-NO.min.js +1 -1
  100. package/locales/nl-NL.d.ts +1 -1
  101. package/locales/nl-NL.esm.min.js +1 -1
  102. package/locales/nl-NL.min.cjs +1 -1
  103. package/locales/nl-NL.min.js +1 -1
  104. package/locales/pl-PL.d.ts +1 -1
  105. package/locales/pl-PL.esm.min.js +1 -1
  106. package/locales/pl-PL.min.cjs +1 -1
  107. package/locales/pl-PL.min.js +1 -1
  108. package/locales/pt-BR.d.ts +1 -1
  109. package/locales/pt-BR.esm.min.js +1 -1
  110. package/locales/pt-BR.min.cjs +1 -1
  111. package/locales/pt-BR.min.js +1 -1
  112. package/locales/ro-RO.d.ts +1 -1
  113. package/locales/ro-RO.esm.min.js +1 -1
  114. package/locales/ro-RO.min.cjs +1 -1
  115. package/locales/ro-RO.min.js +1 -1
  116. package/locales/sv-SE.d.ts +1 -1
  117. package/locales/sv-SE.esm.min.js +1 -1
  118. package/locales/sv-SE.min.cjs +1 -1
  119. package/locales/sv-SE.min.js +1 -1
  120. package/locales/uk-UA.d.ts +1 -1
  121. package/locales/uk-UA.esm.min.js +1 -1
  122. package/locales/uk-UA.min.cjs +1 -1
  123. package/locales/uk-UA.min.js +1 -1
  124. package/modules/ai.d.ts +1 -1
  125. package/modules/ai.esm.min.js +1 -1
  126. package/modules/ai.min.cjs +1 -1
  127. package/modules/ai.min.js +1 -1
  128. package/modules/alarms.d.ts +1 -1
  129. package/modules/alarms.esm.min.js +1 -1
  130. package/modules/alarms.min.cjs +1 -1
  131. package/modules/alarms.min.js +1 -1
  132. package/modules/angular.d.ts +1 -1
  133. package/modules/angular.esm.min.js +1 -1
  134. package/modules/angular.min.cjs +1 -1
  135. package/modules/angular.min.js +1 -1
  136. package/modules/calendar.d.ts +1 -1
  137. package/modules/calendar.esm.min.js +1 -1
  138. package/modules/calendar.min.cjs +1 -1
  139. package/modules/calendar.min.js +1 -1
  140. package/modules/chart-alluvial.d.ts +1 -1
  141. package/modules/chart-alluvial.esm.min.js +1 -1
  142. package/modules/chart-alluvial.min.cjs +1 -1
  143. package/modules/chart-alluvial.min.js +1 -1
  144. package/modules/chart-arc.d.ts +1 -1
  145. package/modules/chart-arc.esm.min.js +1 -1
  146. package/modules/chart-arc.min.cjs +1 -1
  147. package/modules/chart-arc.min.js +1 -1
  148. package/modules/chart-barrace.d.ts +1 -1
  149. package/modules/chart-barrace.esm.min.js +1 -1
  150. package/modules/chart-barrace.min.cjs +1 -1
  151. package/modules/chart-barrace.min.js +1 -1
  152. package/modules/chart-bubblemap.d.ts +1 -1
  153. package/modules/chart-bubblemap.esm.min.js +1 -1
  154. package/modules/chart-bubblemap.min.cjs +1 -1
  155. package/modules/chart-bubblemap.min.js +1 -1
  156. package/modules/chart-bump.d.ts +1 -1
  157. package/modules/chart-bump.esm.min.js +1 -1
  158. package/modules/chart-bump.min.cjs +1 -1
  159. package/modules/chart-bump.min.js +1 -1
  160. package/modules/chart-calendar.d.ts +1 -1
  161. package/modules/chart-calendar.esm.min.js +1 -1
  162. package/modules/chart-calendar.min.cjs +1 -1
  163. package/modules/chart-calendar.min.js +1 -1
  164. package/modules/chart-choropleth.d.ts +1 -1
  165. package/modules/chart-choropleth.esm.min.js +1 -1
  166. package/modules/chart-choropleth.min.cjs +1 -1
  167. package/modules/chart-choropleth.min.js +1 -1
  168. package/modules/chart-decomposition.d.ts +1 -1
  169. package/modules/chart-decomposition.esm.min.js +1 -1
  170. package/modules/chart-decomposition.min.cjs +1 -1
  171. package/modules/chart-decomposition.min.js +1 -1
  172. package/modules/chart-diverging.d.ts +1 -1
  173. package/modules/chart-diverging.esm.min.js +1 -1
  174. package/modules/chart-diverging.min.cjs +1 -1
  175. package/modules/chart-diverging.min.js +1 -1
  176. package/modules/chart-dumbbell.d.ts +1 -1
  177. package/modules/chart-dumbbell.esm.min.js +1 -1
  178. package/modules/chart-dumbbell.min.cjs +1 -1
  179. package/modules/chart-dumbbell.min.js +1 -1
  180. package/modules/chart-fan.d.ts +1 -1
  181. package/modules/chart-fan.esm.min.js +1 -1
  182. package/modules/chart-fan.min.cjs +1 -1
  183. package/modules/chart-fan.min.js +1 -1
  184. package/modules/chart-forcetree.d.ts +1 -1
  185. package/modules/chart-forcetree.esm.min.js +1 -1
  186. package/modules/chart-forcetree.min.cjs +1 -1
  187. package/modules/chart-forcetree.min.js +1 -1
  188. package/modules/chart-hexbin.d.ts +1 -1
  189. package/modules/chart-hexbin.esm.min.js +1 -1
  190. package/modules/chart-hexbin.min.cjs +1 -1
  191. package/modules/chart-hexbin.min.js +1 -1
  192. package/modules/chart-hexmap.d.ts +1 -1
  193. package/modules/chart-hexmap.esm.min.js +1 -1
  194. package/modules/chart-hexmap.min.cjs +1 -1
  195. package/modules/chart-hexmap.min.js +1 -1
  196. package/modules/chart-icicle.d.ts +1 -1
  197. package/modules/chart-icicle.esm.min.js +1 -1
  198. package/modules/chart-icicle.min.cjs +1 -1
  199. package/modules/chart-icicle.min.js +1 -1
  200. package/modules/chart-markermap.d.ts +1 -1
  201. package/modules/chart-markermap.esm.min.js +1 -1
  202. package/modules/chart-markermap.min.cjs +1 -1
  203. package/modules/chart-markermap.min.js +1 -1
  204. package/modules/chart-motion.d.ts +1 -1
  205. package/modules/chart-motion.esm.min.js +1 -1
  206. package/modules/chart-motion.min.cjs +1 -1
  207. package/modules/chart-motion.min.js +1 -1
  208. package/modules/chart-pack.d.ts +1 -1
  209. package/modules/chart-pack.esm.min.js +1 -1
  210. package/modules/chart-pack.min.cjs +1 -1
  211. package/modules/chart-pack.min.js +1 -1
  212. package/modules/chart-parallel.d.ts +1 -1
  213. package/modules/chart-parallel.esm.min.js +1 -1
  214. package/modules/chart-parallel.min.cjs +1 -1
  215. package/modules/chart-parallel.min.js +1 -1
  216. package/modules/chart-pictorial.d.ts +1 -1
  217. package/modules/chart-pictorial.esm.min.js +1 -1
  218. package/modules/chart-pictorial.min.cjs +1 -1
  219. package/modules/chart-pictorial.min.js +1 -1
  220. package/modules/chart-polararea.d.ts +1 -1
  221. package/modules/chart-polararea.esm.min.js +1 -1
  222. package/modules/chart-polararea.min.cjs +1 -1
  223. package/modules/chart-polararea.min.js +1 -1
  224. package/modules/chart-polarscatter.d.ts +1 -1
  225. package/modules/chart-polarscatter.esm.min.js +1 -1
  226. package/modules/chart-polarscatter.min.cjs +1 -1
  227. package/modules/chart-polarscatter.min.js +1 -1
  228. package/modules/chart-pyramid.d.ts +1 -1
  229. package/modules/chart-pyramid.esm.min.js +1 -1
  230. package/modules/chart-pyramid.min.cjs +1 -1
  231. package/modules/chart-pyramid.min.js +1 -1
  232. package/modules/chart-radialbar.d.ts +1 -1
  233. package/modules/chart-radialbar.esm.min.js +1 -1
  234. package/modules/chart-radialbar.min.cjs +1 -1
  235. package/modules/chart-radialbar.min.js +1 -1
  236. package/modules/chart-ridgeline.d.ts +1 -1
  237. package/modules/chart-ridgeline.esm.min.js +1 -1
  238. package/modules/chart-ridgeline.min.cjs +1 -1
  239. package/modules/chart-ridgeline.min.js +1 -1
  240. package/modules/chart-roc.d.ts +1 -1
  241. package/modules/chart-roc.esm.min.js +1 -1
  242. package/modules/chart-roc.min.cjs +1 -1
  243. package/modules/chart-roc.min.js +1 -1
  244. package/modules/chart-scatter3d.d.ts +1 -1
  245. package/modules/chart-scatter3d.esm.min.js +1 -1
  246. package/modules/chart-scatter3d.min.cjs +1 -1
  247. package/modules/chart-scatter3d.min.js +1 -1
  248. package/modules/chart-serpentine.d.ts +1 -1
  249. package/modules/chart-serpentine.esm.min.js +1 -1
  250. package/modules/chart-serpentine.min.cjs +1 -1
  251. package/modules/chart-serpentine.min.js +1 -1
  252. package/modules/chart-slope.d.ts +1 -1
  253. package/modules/chart-slope.esm.min.js +1 -1
  254. package/modules/chart-slope.min.cjs +1 -1
  255. package/modules/chart-slope.min.js +1 -1
  256. package/modules/chart-spiral.d.ts +1 -1
  257. package/modules/chart-spiral.esm.min.js +1 -1
  258. package/modules/chart-spiral.min.cjs +1 -1
  259. package/modules/chart-spiral.min.js +1 -1
  260. package/modules/chart-splom.d.ts +1 -1
  261. package/modules/chart-splom.esm.min.js +1 -1
  262. package/modules/chart-splom.min.cjs +1 -1
  263. package/modules/chart-splom.min.js +1 -1
  264. package/modules/chart-tree.d.ts +1 -1
  265. package/modules/chart-tree.esm.min.js +1 -1
  266. package/modules/chart-tree.min.cjs +1 -1
  267. package/modules/chart-tree.min.js +1 -1
  268. package/modules/chart-venn.d.ts +1 -1
  269. package/modules/chart-venn.esm.min.js +1 -1
  270. package/modules/chart-venn.min.cjs +1 -1
  271. package/modules/chart-venn.min.js +1 -1
  272. package/modules/chart-voronoi.d.ts +1 -1
  273. package/modules/chart-voronoi.esm.min.js +1 -1
  274. package/modules/chart-voronoi.min.cjs +1 -1
  275. package/modules/chart-voronoi.min.js +1 -1
  276. package/modules/chart-waffle.d.ts +1 -1
  277. package/modules/chart-waffle.esm.min.js +1 -1
  278. package/modules/chart-waffle.min.cjs +1 -1
  279. package/modules/chart-waffle.min.js +1 -1
  280. package/modules/chart-wordcloud.d.ts +1 -1
  281. package/modules/chart-wordcloud.esm.min.js +1 -1
  282. package/modules/chart-wordcloud.min.cjs +1 -1
  283. package/modules/chart-wordcloud.min.js +1 -1
  284. package/modules/charts.d.ts +1 -1
  285. package/modules/charts.esm.min.js +1 -1
  286. package/modules/charts.min.cjs +1 -1
  287. package/modules/charts.min.js +1 -1
  288. package/modules/contextmenu.d.ts +1 -1
  289. package/modules/contextmenu.esm.min.js +1 -1
  290. package/modules/contextmenu.min.cjs +1 -1
  291. package/modules/contextmenu.min.js +1 -1
  292. package/modules/dashboard.d.ts +1 -1
  293. package/modules/dashboard.esm.min.js +1 -1
  294. package/modules/dashboard.min.cjs +1 -1
  295. package/modules/dashboard.min.js +1 -1
  296. package/modules/data-router.d.ts +1 -1
  297. package/modules/data-router.esm.min.js +1 -1
  298. package/modules/data-router.min.cjs +1 -1
  299. package/modules/data-router.min.js +1 -1
  300. package/modules/dataview.d.ts +1 -1
  301. package/modules/dataview.esm.min.js +1 -1
  302. package/modules/dataview.min.cjs +1 -1
  303. package/modules/dataview.min.js +1 -1
  304. package/modules/deckgl.d.ts +1 -1
  305. package/modules/deckgl.esm.min.js +1 -1
  306. package/modules/deckgl.min.cjs +1 -1
  307. package/modules/deckgl.min.js +1 -1
  308. package/modules/designer.d.ts +1 -1
  309. package/modules/designer.esm.min.js +1 -1
  310. package/modules/designer.min.cjs +1 -1
  311. package/modules/designer.min.js +1 -1
  312. package/modules/devtools.d.ts +1 -1
  313. package/modules/devtools.esm.min.js +1 -1
  314. package/modules/devtools.min.cjs +1 -1
  315. package/modules/devtools.min.js +1 -1
  316. package/modules/dhtmlx-compat.d.ts +1 -1
  317. package/modules/dhtmlx-compat.esm.min.js +1 -1
  318. package/modules/dhtmlx-compat.min.cjs +1 -1
  319. package/modules/dhtmlx-compat.min.js +1 -1
  320. package/modules/form.d.ts +1 -1
  321. package/modules/form.esm.min.js +1 -1
  322. package/modules/form.min.cjs +1 -1
  323. package/modules/form.min.js +1 -1
  324. package/modules/gantt.d.ts +1 -1
  325. package/modules/gantt.esm.min.js +1 -1
  326. package/modules/gantt.min.cjs +1 -1
  327. package/modules/gantt.min.js +1 -1
  328. package/modules/geo-europe-nuts.d.ts +1 -1
  329. package/modules/geo-europe-nuts.esm.min.js +1 -1
  330. package/modules/geo-europe-nuts.min.cjs +1 -1
  331. package/modules/geo-europe-nuts.min.js +1 -1
  332. package/modules/geo-uk.d.ts +1 -1
  333. package/modules/geo-uk.esm.min.js +1 -1
  334. package/modules/geo-uk.min.cjs +1 -1
  335. package/modules/geo-uk.min.js +1 -1
  336. package/modules/geo-us-states.d.ts +1 -1
  337. package/modules/geo-us-states.esm.min.js +1 -1
  338. package/modules/geo-us-states.min.cjs +1 -1
  339. package/modules/geo-us-states.min.js +1 -1
  340. package/modules/geo-world-110m.d.ts +1 -1
  341. package/modules/geo-world-110m.esm.min.js +1 -1
  342. package/modules/geo-world-110m.min.cjs +1 -1
  343. package/modules/geo-world-110m.min.js +1 -1
  344. package/modules/geo-world-50m.d.ts +1 -1
  345. package/modules/geo-world-50m.esm.min.js +1 -1
  346. package/modules/geo-world-50m.min.cjs +1 -1
  347. package/modules/geo-world-50m.min.js +1 -1
  348. package/modules/geometry.d.ts +1 -1
  349. package/modules/geometry.esm.min.js +1 -1
  350. package/modules/geometry.min.cjs +1 -1
  351. package/modules/geometry.min.js +1 -1
  352. package/modules/htmx.d.ts +1 -1
  353. package/modules/htmx.esm.min.js +2 -2
  354. package/modules/htmx.min.cjs +2 -2
  355. package/modules/htmx.min.js +2 -2
  356. package/modules/htmx.shared.esm.min.js +1 -1
  357. package/modules/htmx.shared.min.cjs +1 -1
  358. package/modules/htmx.shared.min.js +1 -1
  359. package/modules/kanban.d.ts +1 -1
  360. package/modules/kanban.esm.min.js +7 -4
  361. package/modules/kanban.esm.min.js.map +2 -2
  362. package/modules/kanban.min.cjs +7 -4
  363. package/modules/kanban.min.js +7 -4
  364. package/modules/kanban.min.js.map +2 -2
  365. package/modules/kpi.d.ts +1 -1
  366. package/modules/kpi.esm.min.js +1 -1
  367. package/modules/kpi.min.cjs +1 -1
  368. package/modules/kpi.min.js +1 -1
  369. package/modules/layout.d.ts +1 -1
  370. package/modules/layout.esm.min.js +1 -1
  371. package/modules/layout.min.cjs +1 -1
  372. package/modules/layout.min.js +1 -1
  373. package/modules/leaflet.d.ts +1 -1
  374. package/modules/leaflet.esm.min.js +1 -1
  375. package/modules/leaflet.min.cjs +1 -1
  376. package/modules/leaflet.min.js +1 -1
  377. package/modules/list.d.ts +1 -1
  378. package/modules/list.esm.min.js +1 -1
  379. package/modules/list.min.cjs +1 -1
  380. package/modules/list.min.js +1 -1
  381. package/modules/listview.d.ts +1 -1
  382. package/modules/listview.esm.min.js +1 -1
  383. package/modules/listview.min.cjs +1 -1
  384. package/modules/listview.min.js +1 -1
  385. package/modules/mapview.d.ts +1 -1
  386. package/modules/mapview.esm.min.js +1 -1
  387. package/modules/mapview.min.cjs +1 -1
  388. package/modules/mapview.min.js +1 -1
  389. package/modules/mock-socket.d.ts +1 -1
  390. package/modules/mock-socket.esm.min.js +1 -1
  391. package/modules/mock-socket.min.cjs +1 -1
  392. package/modules/mock-socket.min.js +1 -1
  393. package/modules/presets.d.ts +1 -1
  394. package/modules/presets.esm.min.js +1 -1
  395. package/modules/presets.min.cjs +1 -1
  396. package/modules/presets.min.js +1 -1
  397. package/modules/react.d.ts +1 -1
  398. package/modules/react.esm.min.js +1 -1
  399. package/modules/react.min.cjs +1 -1
  400. package/modules/react.min.js +1 -1
  401. package/modules/recordeditor.d.ts +1 -1
  402. package/modules/recordeditor.esm.min.js +1 -1
  403. package/modules/recordeditor.min.cjs +1 -1
  404. package/modules/recordeditor.min.js +1 -1
  405. package/modules/scheduler.d.ts +1 -1
  406. package/modules/scheduler.esm.min.js +1 -1
  407. package/modules/scheduler.min.cjs +1 -1
  408. package/modules/scheduler.min.js +1 -1
  409. package/modules/shell.d.ts +1 -1
  410. package/modules/shell.esm.min.js +1 -1
  411. package/modules/shell.min.cjs +1 -1
  412. package/modules/shell.min.js +1 -1
  413. package/modules/sidebar.d.ts +1 -1
  414. package/modules/sidebar.esm.min.js +1 -1
  415. package/modules/sidebar.min.cjs +1 -1
  416. package/modules/sidebar.min.js +1 -1
  417. package/modules/svelte.d.ts +1 -1
  418. package/modules/svelte.esm.min.js +1 -1
  419. package/modules/svelte.min.cjs +1 -1
  420. package/modules/svelte.min.js +1 -1
  421. package/modules/tabs.d.ts +1 -1
  422. package/modules/tabs.esm.min.js +1 -1
  423. package/modules/tabs.min.cjs +1 -1
  424. package/modules/tabs.min.js +1 -1
  425. package/modules/toolbar.d.ts +1 -1
  426. package/modules/toolbar.esm.min.js +1 -1
  427. package/modules/toolbar.min.cjs +1 -1
  428. package/modules/toolbar.min.js +1 -1
  429. package/modules/tree.d.ts +1 -1
  430. package/modules/tree.esm.min.js +1 -1
  431. package/modules/tree.min.cjs +1 -1
  432. package/modules/tree.min.js +1 -1
  433. package/modules/vue.d.ts +1 -1
  434. package/modules/vue.esm.min.js +1 -1
  435. package/modules/vue.min.cjs +1 -1
  436. package/modules/vue.min.js +1 -1
  437. package/modules/webcomponent.d.ts +1 -1
  438. package/modules/webcomponent.esm.min.js +2 -2
  439. package/modules/webcomponent.min.cjs +2 -2
  440. package/modules/webcomponent.min.js +2 -2
  441. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,18 @@ and what it means for a grid already in production.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.115.2] - 2026-10-28
13
+
14
+ ### Fixed
15
+
16
+ - **A Kanban column's colour now shows as the dot in its header** (BACKLOG-0005656). The `color` option's 8px round accent was invisible since 1.34.0 — the header's accent span is inline, and an inline element gets no box from `width`/`height`, so the dot painted nothing. It renders now, in the column's colour, before the title.
17
+
18
+ ## [1.115.1] - 2026-10-28
19
+
20
+ ### Fixed
21
+
22
+ - On a kanban board bound to a grid, an `order` comparator that read a column which is not a card field (`(a, b) => b.row.score - a.row.score`) saw `undefined` and sorted nothing, and the same went for `onBeforeMove`, a card menu action, a `setFilter` predicate and the column handlers. A card's `row` now carries the grid row's value for every grid column, read the way the grid reads it (a computed column included), so code written against a board over plain rows works unchanged on a grid-bound one (BACKLOG-0005642).
23
+
12
24
  ## [1.115.0] - 2026-10-27
13
25
 
14
26
  ### Added
package/README.md CHANGED
@@ -9,7 +9,7 @@ forms, lists, trees and an app shell.
9
9
  Zero runtime dependencies, with adapters for React, Vue, Svelte, Angular, Web
10
10
  Components and htmx. Free on localhost, licensed per domain to ship.
11
11
 
12
- Version 1.115.0 · [latticegrid.dev](https://www.latticegrid.dev) · TOCLOCO Inc
12
+ Version 1.115.2 · [latticegrid.dev](https://www.latticegrid.dev) · TOCLOCO Inc
13
13
 
14
14
  ## Start
15
15
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.115.0",
2
+ "version": "1.115.2",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
5
  "module": "./fesm2022/toclocoinc-lattice-grid-angular.mjs",
package/docs/API.html CHANGED
@@ -382,7 +382,7 @@
382
382
  <div class="shell">
383
383
  <aside class="rail">
384
384
  <p class="rail__brand">Lattice Grid</p>
385
- <p class="rail__sub">API reference · v1.115.0</p>
385
+ <p class="rail__sub">API reference · v1.115.2</p>
386
386
  <nav>
387
387
  <div class="rail__group">
388
388
  <span class="rail__label">Start</span>
@@ -593,7 +593,7 @@
593
593
  </header>
594
594
 
595
595
  <p class="chips">
596
- <span class="chip">Version 1.115.0</span>
596
+ <span class="chip">Version 1.115.2</span>
597
597
  <span class="chip">Zero dependencies</span>
598
598
  <span class="chip"><a href="api-detail.html">Developer guide &rarr;</a></span>
599
599
  </p>
@@ -3516,7 +3516,7 @@ grid.destroy();
3516
3516
  <table>
3517
3517
  <thead><tr><th>Member</th><th>Returns</th><th>Description</th></tr></thead>
3518
3518
  <tbody>
3519
- <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.115.0'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
3519
+ <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.115.2'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
3520
3520
  <tr><td class="sig">get(key)</td><td class="type">unknown</td><td class="desc">Read any configuration key.</td></tr>
3521
3521
  <tr><td class="sig">set(key, value)</td><td class="type">void</td><td class="desc">Write one key. Every key is live; nothing needs a rebuild.</td></tr>
3522
3522
  <tr><td class="sig">setAll(values)</td><td class="type">void</td><td class="desc">Write several in one pass. Emits one <code>config:changed</code> for the batch, not one per key.</td></tr>
@@ -43663,7 +43663,7 @@ return `next ${p.mean.toFixed(1)}; r2 ${f.r2.toFixed(1)}; band ${p.upper - p.low
43663
43663
  <!-- END GENERATED TYPE REFERENCE -->
43664
43664
 
43665
43665
  <footer>
43666
- Lattice Grid 1.115.0 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
43666
+ Lattice Grid 1.115.2 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
43667
43667
  This document describes the behaviour of the shipped library. Where this guide and the code
43668
43668
  disagree, the code wins: please <a href="https://www.latticegrid.dev">tell us</a>.
43669
43669
  </footer>
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Adapters API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Adapters API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
package/docs/api/ai.html CHANGED
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>AI API Reference — Lattice Grid 1.115.0</title>
16
+ <title>AI API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Alarms API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Alarms API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Calendar API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Calendar API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Charts API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Charts API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Dashboard API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Dashboard API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Data router API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Data router API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Data view API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Data view API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>deck.gl API Reference — Lattice Grid 1.115.0</title>
16
+ <title>deck.gl API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Designer API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Designer API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Form API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Form API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Gantt API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Gantt API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Geometry API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Geometry API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Grid API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Grid API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -1925,7 +1925,7 @@ grid.destroy();
1925
1925
  <table>
1926
1926
  <thead><tr><th>Member</th><th>Returns</th><th>Description</th></tr></thead>
1927
1927
  <tbody>
1928
- <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.115.0'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
1928
+ <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.115.2'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
1929
1929
  <tr><td class="sig">get(key)</td><td class="type">unknown</td><td class="desc">Read any configuration key.</td></tr>
1930
1930
  <tr><td class="sig">set(key, value)</td><td class="type">void</td><td class="desc">Write one key. Every key is live; nothing needs a rebuild.</td></tr>
1931
1931
  <tr><td class="sig">setAll(values)</td><td class="type">void</td><td class="desc">Write several in one pass. Emits one <code>config:changed</code> for the batch, not one per key.</td></tr>
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>API Reference — Lattice Grid 1.115.0</title>
16
+ <title>API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Kanban API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Kanban API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
package/docs/api/kpi.html CHANGED
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>KPI API Reference — Lattice Grid 1.115.0</title>
16
+ <title>KPI API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Layout API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Layout API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Leaflet API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Leaflet API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>List API Reference — Lattice Grid 1.115.0</title>
16
+ <title>List API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>List view API Reference — Lattice Grid 1.115.0</title>
16
+ <title>List view API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Map view API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Map view API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Mock socket API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Mock socket API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Presets API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Presets API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Scheduler API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Scheduler API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Shell API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Shell API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Tabs API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Tabs API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Tree API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Tree API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Types API Reference — Lattice Grid 1.115.0</title>
16
+ <title>Types API Reference — Lattice Grid 1.115.2</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -437,7 +437,7 @@
437
437
  <div class="shell">
438
438
  <aside class="rail">
439
439
  <p class="rail__brand">Lattice Grid</p>
440
- <p class="rail__sub">Developer guide · v1.115.0</p>
440
+ <p class="rail__sub">Developer guide · v1.115.2</p>
441
441
  <nav>
442
442
  <div class="rail__group">
443
443
  <span class="rail__label">Start here</span>
@@ -554,7 +554,7 @@
554
554
  <a href="API.html">reference tables</a> are the shorter version for when you already know.
555
555
  </p>
556
556
  <p class="chips">
557
- <span class="chip">Version 1.115.0</span>
557
+ <span class="chip">Version 1.115.2</span>
558
558
  <span class="chip">Zero dependencies</span>
559
559
  <span class="chip">No build step</span>
560
560
  </p>
@@ -1896,7 +1896,7 @@ off(); <span class="cmt">// every subscrip
1896
1896
  </p>
1897
1897
  <div class="example">
1898
1898
  <p class="example__label">Which version am I running?</p>
1899
- <pre><code>grid.getVersion(); <span class="cmt">// '1.115.0'</span>
1899
+ <pre><code>grid.getVersion(); <span class="cmt">// '1.115.2'</span>
1900
1900
  LatticeGrid.getVersion(); <span class="cmt">// the same, when you have no grid to hand</span></code></pre>
1901
1901
  </div>
1902
1902
  <p class="lead-in">
@@ -11388,7 +11388,7 @@ grid.import.apply(preview);</code></pre>
11388
11388
  <tr><td class="name">openContextMenu</td><td class="desc">The trigger helper for a context menu (module <code>contextmenu</code>): open one anchored to a <code>contextmenu</code> event (whose default it claims, so the browser’s own menu does not open over it), a <code>{ clientX, clientY }</code> point, or an element it anchors below, kept inside the viewport. <code>openContextMenu(event, { items, ctx, returnFocus: event.target })</code>.</td></tr>
11389
11389
  <tr><td class="name">resolveMenuItems</td><td class="desc">The pure item-resolution rule behind a context menu (module <code>contextmenu</code>): turn a raw <code>items</code> list — objects, the string <code>'separator'</code>, bare strings, or functions <code>(ctx) =&gt; item | string | null | false</code> — into the resolved entries, recursing into <code>children</code>/<code>subMenu</code>, dropping filtered-out entries and the dividers a filter leaves stray at either edge.</td></tr>
11390
11390
  <tr><td class="name">createDataRouter</td><td class="desc">Split one arriving stream or dataset across many grids by what each record is — a property or a predicate — driving each grid through the public keyed <code>rows.apply</code> path so a snapshot is a diff, a delta is applied in place, a moved partition moves the row rather than duplicating it, and an unmatched record is counted, sunk and never dropped. The router never opens a connection itself — it takes rows, not a URL or a socket — so the host owns the connection (a <code>WebSocket</code>, SSE, CDC, long-poll, anything) and this module owns everything once a message has arrived; see <a href="#router-websocket-guide">a live WebSocket feed</a> for the worked, runnable example. By default routing is first-match-wins (<code>overlap: false</code>); to fan one partition value to several viewers at once (a grid <em>and</em> a KPI panel <em>and</em> a chart off one feed) create the router with <code>overlap: true</code> — with the default, a second viewer on the same value receives nothing and the router emits a one-time dev warning naming the clash. v2 adds cross-grid selection filtering: <code>link(source, target, relation)</code> makes a selection in one grid filter what another receives — by a key map or a predicate function, multi-select as an IN set, debounced — re-pushed through the same keyed-diff path so the target stays dumb. v5 adds wedge-conversion primitives: <code>subscribe(value, handler)</code> routes a slice to any non-grid view (KPI tile, detail pane, map, form) as the same keyed diff a grid gets; <code>alert(value, condition, handler)</code> evaluates a condition over a slice and emits (edge-triggered, debounced) rather than rendering; and <code>configure(spec)</code> (or <code>createDataRouter({ config })</code>) takes the whole routing graph as one declarative data spec that desugars to the imperative API and composes with it. v3 also adds per-route reshaping — <code>transform</code>/<code>filter</code>/<code>sort</code> and <code>rollup</code> ({ groupBy, aggregate }) summaries — a relationship graph (<code>relate(edges)</code>: multi-hop, several-into-one AND, and mutual edges) that scales v2's pairwise <code>link</code>, and stream hygiene: a <code>seq</code>/version orders and de-duplicates a feed (stale/duplicate deltas dropped, counted in <code>dropped</code>), <code>push</code> with a <code>batch</code>/<code>coalesce</code> buffers a high-frequency feed (<code>flushStream</code> for a deterministic point), and <code>lastSeq</code>/<code>checkpoint</code>/<code>seenThrough</code> let the host resume precisely after its own connection drops and reconnects. v4 adds time-travel: <code>buffer({ window, max })</code> records the ordered stream into a bounded ring over a moving base, so <code>scrubTo</code> reconstructs a past point, <code>replay</code> (with <code>pause</code>/<code>resume</code>) walks a range, and <code>live</code> returns to the head — every state pushed by the same keyed diff, <code>traveling</code>/<code>buffered</code> reporting the state. v6 adds cross-tab sync: <code>broadcast({ channel })</code> mirrors the ordered, de-duplicated deltas to other tabs/windows over a BroadcastChannel with no echo loop, a popped-out grid joining the same feed with no second socket and resyncing mid-stream via the reconnect path. v7 adds query-slice routing: <code>query(adapter, request)</code> sources the router from a DFQL/DuckDB (or any pushdown) adapter, partitioning one result across the routes; a route-level <code>where</code> is pushed down where the adapter's capabilities allow and the residual finished client-side, with <code>lastQueryPlan</code> reporting the split. v8 adds write-back: a <code>writable</code> route captures the grid's committed edits off its public edit surface and routes them to <code>onWrite(change, ctx)</code> (per-route or router-global), reverting on reject, re-entering an accepted write as a delta, and surfacing a last-write-wins <code>onConflict</code>; a derived route cannot be writable. v9 adds fan-in: <code>addSource(feed, { map, key })</code> returns a per-feed handle (<code>load</code>/<code>apply</code>/<code>push</code>/<code>remove</code>) whose rows are normalized and namespaced so many feeds merge into one keyed store without id collisions, <code>removeSource</code> dropping exactly a feed's rows and <code>sources</code> listing them. v10 adds observability: <code>metrics()</code> is a cheap snapshot of per-route/per-source counts and throughput plus the global unrouted/dropped/buffered/lag figures, <code>on('metrics')</code> drives a periodic emit (off unless a listener is registered), and <code>mountDevtools(el)</code> renders a live panel from the module's own DOM file. v16 adds a SPREAD join: <code>addSource('company', { join: { from: 'companyAttr', foreignKey: 'companyId', spread: { name: 'attribute', value: 'value', prefix: 'cf_' } } })</code> turns each EAV attribute row into its own field on the parent (gaining <code>cf_industry</code>, <code>cf_tier</code> as attributes arrive), reported per route through <code>fieldsOf(ref)</code> and the <code>fields:changed</code> event so a host can add or drop grid columns as custom attributes appear and disappear. v18 adds parent-delete integrity: <code>onParentDelete: 'cascade' | 'orphan' | 'keep'</code> on a collect join or an unnest, and standalone <code>relateRows({ child, parent, foreignKey, onParentDelete, writeBack })</code>, decide what deleting a parent does to its children — <code>cascade</code> deletes them (recursively, with cycle protection), <code>orphan</code> keeps them marked <code>__orphan: true</code> and warns once, <code>keep</code> leaves them bare; cascaded deletes write back only when <code>writeBack: true</code>. Detaches its grids on <code>destroy</code>; the host owns them.</td></tr>
11391
- <tr><td class="name">createKanban</td><td class="desc">A board (kanban) view of rows as cards, grouped into columns by a configurable property (a status, a stage, a state field), with per-column card count and an optional points sum, a WIP over-limit flag, configured columns shown even when empty, granular readonly (whole board / per column / per card), field-mapped card templates that reuse the grid’s own column formatters when a grid is bound, and the core pointer events (<code>card:click</code>, <code>card:dblclick</code>, <code>card:contextmenu</code>). It is a dataset viewer like any other: it consumes data through the same keyed-diff <code>rows.apply({ add, update, remove })</code> contract a grid exposes, so a Data Router can <code>attach(value, board)</code> and drive a kanban beside a grid and a chart off one feed. Accessibility is built in from the start — a labelled group of labelled column lists, cards in a roving-tabindex focus ring with arrow-key navigation, and a polite live region. Every structural property is named in config (<code>columnProperty</code>, <code>pointsProperty</code>, <code>orderProperty</code>, <code>swimlaneProperty</code>, <code>sprintProperty</code>, <code>epicProperty</code>) so it maps any customer schema without code change. Pass <code>null</code> as the element for a headless board that computes the same model without a DOM. Cards drag between columns (writing the column property) and within a column into a position (writing the order property with fractional ranking), and the same move is keyboard-accessible — <kbd>Space</kbd> to grab, arrows to choose a target, <kbd>Space</kbd>/<kbd>Enter</kbd> to drop, <kbd>Escape</kbd> to cancel — announced on the live region; multi-select drags every selected card. A host comparator <code>order(a, b, column)</code> orders each column's cards by a computed rule — score, due date, a rank the row data does not carry as one property — after the <code>orderProperty</code> sort (or alone, with no <code>orderProperty</code>), and <code>setOrder</code> replaces or clears it at runtime. A move calls <code>onBeforeMove(card, from, to, index)</code> first (return <code>false</code> to veto) and then persists through the grid’s shipped write-back path — grid-bound via <code>grid.edit.setCells</code> (the same public edit-commit path inline editing uses, so the grid’s pipeline owns optimistic apply / confirm / revert), standalone with a revert when <code>onCardMove</code> rejects — emitting <code>card:move</code>. A configurable per-card <code>contextMenu</code> replaces the <code>card:contextmenu</code> event when present. With <code>swimlanes: true</code> it renders a 2D lane&times;column grid grouped by <code>swimlaneProperty</code> (per-lane count/points, columns aligned across lanes, a cross-lane drag writing the swimlane property); columns and lanes collapse (state surviving a keyed-diff update), columns reorder by header drag, and <code>setQuickFilter</code>/<code>setFilter</code>/<code>facets</code> drive search and faceting. <code>setSprint</code>/<code>showBacklog</code>/<code>sprints</code> give a sprint view, switcher and backlog; <code>setEpic</code>/<code>epicRollup</code>/<code>rollup</code> give an epic view and rollups (count, points, progress toward the <code>done</code> columns). A card can pop out a nested grid of its children (an epic's stories, a story's tasks, recursively) via a <code>childrenProperty</code> and/or <code>loadChildren(card)</code>: the child is a full composed <code>createGrid</code> (or, with <code>asBoard</code>, a nested board) opened in a drawer/modal/inline container — reuse by composition, no grid-core coupling — emitting <code>card:expand</code>/<code>card:drill</code>. Live updates arrive through the same keyed-diff contract a grid uses, so a Data Router drives the board directly (<code>attach(board, predicate)</code>); on a standalone board (not <code>grid</code>-bound, which ignores <code>rows.apply</code> and routes to the bound grid instead) <code>rows.apply({ update })</code> merges each patch into the row already stored under its key, matching the grid's own <code>rows.apply({ update })</code> — a field the patch omits is preserved, and a patch that does change the grouping property still moves the card — while <code>add</code> sets the row outright; a live <code>rows.apply</code> re-renders preserving scroll, focus, selection, collapse and any open pop-out. <code>virtualize</code> renders only a scroll window of a tall column; <code>getState</code>/<code>setState</code> (and <code>config.state</code>) save and restore collapse, order, filter and sprint/epic selection; <code>setLoading</code>/<code>setError</code> give loading and error states. Columns fill the board by default: <code>columnWidth: 'fill'</code> shares the width equally (never below <code>minColumnWidth</code>, default 240px, and never above the optional <code>maxColumnWidth</code>, so a few columns stay left aligned at that width instead of stretching), a number fixes every column at that many pixels, and <code>'auto'</code> keeps the natural token width, while a host-set <code>--lattice-board-column-width</code> still overrides; <code>setColumnWidth</code> changes any of the three at runtime and re-flows with no remount, and a <code>minColumnWidth</code> above <code>maxColumnWidth</code> resolves to the minimum for both, with one warning. The move is fully keyboard-driven — Space to grab, arrows for column/position, Alt+Up/Down across swimlanes, Space/Enter to drop, Escape to cancel — announced on a live region. A field opted in with <code>card: { title: { field, edit: true } }</code> edits inline (double-click or <code>editCard</code>): grid-bound through the grid's own field editor via its public edit path, standalone through a host editor factory or a default input with an <code>onCardEdit</code> revert; a per-column add-card (<code>config.addCard</code>/<code>onAddCard</code>, or <code>grid.edit.addRow</code>) creates a card and opens it in edit. The module imports nothing from the grid's DOM package. A column def accepts <code>controls</code> (a button, a select or a custom element drawn between the header and the cards) and <code>menu</code> (items for a header menu button, also opened by a right-click on the header), served board-wide by <code>columnControls(column)</code> and <code>columnMenu</code>; a select renders through <code>form.createSelect</code> when injected and natively otherwise; each fires <code>column:control</code> / <code>column:menu</code> naming the column, and <code>controlValue(columnId, controlId, value?)</code> reads or sets a select.</td></tr>
11391
+ <tr><td class="name">createKanban</td><td class="desc">A board (kanban) view of rows as cards, grouped into columns by a configurable property (a status, a stage, a state field), with per-column card count and an optional points sum, a WIP over-limit flag, configured columns shown even when empty, granular readonly (whole board / per column / per card), field-mapped card templates that reuse the grid’s own column formatters when a grid is bound, and the core pointer events (<code>card:click</code>, <code>card:dblclick</code>, <code>card:contextmenu</code>). It is a dataset viewer like any other: it consumes data through the same keyed-diff <code>rows.apply({ add, update, remove })</code> contract a grid exposes, so a Data Router can <code>attach(value, board)</code> and drive a kanban beside a grid and a chart off one feed. Accessibility is built in from the start — a labelled group of labelled column lists, cards in a roving-tabindex focus ring with arrow-key navigation, and a polite live region. Every structural property is named in config (<code>columnProperty</code>, <code>pointsProperty</code>, <code>orderProperty</code>, <code>swimlaneProperty</code>, <code>sprintProperty</code>, <code>epicProperty</code>) so it maps any customer schema without code change. Pass <code>null</code> as the element for a headless board that computes the same model without a DOM. Cards drag between columns (writing the column property) and within a column into a position (writing the order property with fractional ranking), and the same move is keyboard-accessible — <kbd>Space</kbd> to grab, arrows to choose a target, <kbd>Space</kbd>/<kbd>Enter</kbd> to drop, <kbd>Escape</kbd> to cancel — announced on the live region; multi-select drags every selected card. A host comparator <code>order(a, b, column)</code> orders each column's cards by a computed rule — score, due date, a rank the row data does not carry as one property — after the <code>orderProperty</code> sort (or alone, with no <code>orderProperty</code>) &mdash; on a grid-bound board a card&rsquo;s <code>row</code> carries the grid row&rsquo;s values for every grid column (read as the grid reads them, a computed column included), so a comparator, <code>onBeforeMove</code>, a menu action or a filter reads any column, not only the mapped card fields &mdash; and <code>setOrder</code> replaces or clears it at runtime. A move calls <code>onBeforeMove(card, from, to, index)</code> first (return <code>false</code> to veto) and then persists through the grid’s shipped write-back path — grid-bound via <code>grid.edit.setCells</code> (the same public edit-commit path inline editing uses, so the grid’s pipeline owns optimistic apply / confirm / revert), standalone with a revert when <code>onCardMove</code> rejects — emitting <code>card:move</code>. A configurable per-card <code>contextMenu</code> replaces the <code>card:contextmenu</code> event when present. With <code>swimlanes: true</code> it renders a 2D lane&times;column grid grouped by <code>swimlaneProperty</code> (per-lane count/points, columns aligned across lanes, a cross-lane drag writing the swimlane property); columns and lanes collapse (state surviving a keyed-diff update), columns reorder by header drag, and <code>setQuickFilter</code>/<code>setFilter</code>/<code>facets</code> drive search and faceting. <code>setSprint</code>/<code>showBacklog</code>/<code>sprints</code> give a sprint view, switcher and backlog; <code>setEpic</code>/<code>epicRollup</code>/<code>rollup</code> give an epic view and rollups (count, points, progress toward the <code>done</code> columns). A card can pop out a nested grid of its children (an epic's stories, a story's tasks, recursively) via a <code>childrenProperty</code> and/or <code>loadChildren(card)</code>: the child is a full composed <code>createGrid</code> (or, with <code>asBoard</code>, a nested board) opened in a drawer/modal/inline container — reuse by composition, no grid-core coupling — emitting <code>card:expand</code>/<code>card:drill</code>. Live updates arrive through the same keyed-diff contract a grid uses, so a Data Router drives the board directly (<code>attach(board, predicate)</code>); on a standalone board (not <code>grid</code>-bound, which ignores <code>rows.apply</code> and routes to the bound grid instead) <code>rows.apply({ update })</code> merges each patch into the row already stored under its key, matching the grid's own <code>rows.apply({ update })</code> — a field the patch omits is preserved, and a patch that does change the grouping property still moves the card — while <code>add</code> sets the row outright; a live <code>rows.apply</code> re-renders preserving scroll, focus, selection, collapse and any open pop-out. <code>virtualize</code> renders only a scroll window of a tall column; <code>getState</code>/<code>setState</code> (and <code>config.state</code>) save and restore collapse, order, filter and sprint/epic selection; <code>setLoading</code>/<code>setError</code> give loading and error states. Columns fill the board by default: <code>columnWidth: 'fill'</code> shares the width equally (never below <code>minColumnWidth</code>, default 240px, and never above the optional <code>maxColumnWidth</code>, so a few columns stay left aligned at that width instead of stretching), a number fixes every column at that many pixels, and <code>'auto'</code> keeps the natural token width, while a host-set <code>--lattice-board-column-width</code> still overrides; <code>setColumnWidth</code> changes any of the three at runtime and re-flows with no remount, and a <code>minColumnWidth</code> above <code>maxColumnWidth</code> resolves to the minimum for both, with one warning. The move is fully keyboard-driven — Space to grab, arrows for column/position, Alt+Up/Down across swimlanes, Space/Enter to drop, Escape to cancel — announced on a live region. A field opted in with <code>card: { title: { field, edit: true } }</code> edits inline (double-click or <code>editCard</code>): grid-bound through the grid's own field editor via its public edit path, standalone through a host editor factory or a default input with an <code>onCardEdit</code> revert; a per-column add-card (<code>config.addCard</code>/<code>onAddCard</code>, or <code>grid.edit.addRow</code>) creates a card and opens it in edit. The module imports nothing from the grid's DOM package. A column def accepts <code>controls</code> (a button, a select or a custom element drawn between the header and the cards) and <code>menu</code> (items for a header menu button, also opened by a right-click on the header), served board-wide by <code>columnControls(column)</code> and <code>columnMenu</code>; a select renders through <code>form.createSelect</code> when injected and natively otherwise; each fires <code>column:control</code> / <code>column:menu</code> naming the column, and <code>controlValue(columnId, controlId, value?)</code> reads or sets a select.</td></tr>
11392
11392
  <tr><td class="name">createCalendar</td><td class="desc">Create a calendar viewer (module <code>calendar</code>) of rows as cards on a month grid, a week day-grid or a <code>week-time</code>/<code>day</code> time grid, keyed by a date field. Point events by default (<code>startProperty</code>); an <code>endProperty</code> turns them into multi-day spans, drawn as one continuous bar across the days they cover and clipped at the range edges. The time grid adds a vertical hour axis: a row with a start time is a block positioned at its start and sized by its end (<code>defaultDuration</code> when none), overlapping blocks split the column side by side, all-day rows stack in a top all-day row, <code>businessHours</code> shades the working span, and a now line marks the current time in the current day column. <code>slotDuration</code>, <code>slotMinTime</code>/<code>slotMaxTime</code>, <code>scrollTime</code> and <code>weekNumbers</code> tune the axis, and times read through the <code>timeZone</code> rule. The built-in header (prev/next/today, the <code>SEP 28 – OCT 4, 2026</code> / <code>SEPTEMBER 2026</code> title via <code>Intl.DateTimeFormat(locale)</code>, and the week/month toggle) renders unless <code>header: false</code>; cells grow with their cards (no inner scroll). A field-mapped <code>card</code> template plus a host <code>renderCard(row, el)</code> whose element stays mounted across updates (the async image-swap contract), <code>colorProperty</code>/<code>colorMap</code> edge colouring, <code>eventOrder</code>, <code>dayMaxEvents</code> <code>+N more</code> overflow, and granular <code>readonly</code>. It is a dataset viewer like any other: it consumes data through the same keyed-diff <code>rows.apply({ add, update, remove })</code> contract (plus <code>rows.get(key)</code>) a grid exposes, so a Data Router can <code>attach(value, calendar)</code> and drive a calendar beside a grid and a chart off one feed. Events: <code>card:click</code>/<code>card:dblclick</code>/<code>card:contextmenu</code> <code>{ row, key, clientX, clientY, nativeEvent }</code>, <code>card:mount</code> <code>{ row, key, el }</code>, and <code>range:change</code> <code>{ start, end, view }</code> on every prev/next/today/goTo/setView (not on a data update). Navigation: <code>prev()</code>/<code>next()</code>/<code>today()</code>/<code>goTo(date)</code>/<code>setView(view)</code>/<code>getRange()</code>. Accessibility is built in — <code>role="grid"</code> with columnheader/gridcell, a roving-tabindex focus ring, arrows by day/week (by slot in the time grid), PageUp/PageDown by period, a live region, an announced time slot on each timed block — and <code>getState()</code>/<code>setState()</code> round-trip the arrangement (<code>{ version: 2, view, date, firstDay, slotDuration, scrollTime }</code>). Pass <code>null</code> as the element for a headless calendar that computes the same model without a DOM. UMD global <code>LatticeGridCalendar</code>.</td></tr>
11393
11393
  <tr><td class="name">createCalendar</td><td class="desc">Create a calendar viewer (module <code>calendar</code>) of rows as cards on a month grid or a week day-grid, keyed by a date field. Point events by default (<code>startProperty</code>); an <code>endProperty</code> turns them into multi-day spans clipped at the range edges and marked continuing. The built-in header (prev/next/today, the <code>SEP 28 – OCT 4, 2026</code> / <code>SEPTEMBER 2026</code> title via <code>Intl.DateTimeFormat(locale)</code>, and the week/month toggle) renders unless <code>header: false</code>; cells grow with their cards (no inner scroll). A field-mapped <code>card</code> template plus a host <code>renderCard(row, el)</code> whose element stays mounted across updates (the async image-swap contract), <code>colorProperty</code>/<code>colorMap</code> edge colouring, <code>eventOrder</code>, <code>dayMaxEvents</code> <code>+N more</code> overflow, and granular <code>readonly</code>. It is a dataset viewer like any other: it consumes data through the same keyed-diff <code>rows.apply({ add, update, remove })</code> contract (plus <code>rows.get(key)</code>) a grid exposes, so a Data Router can <code>attach(value, calendar)</code> and drive a calendar beside a grid and a chart off one feed. Events: <code>card:click</code>/<code>card:dblclick</code>/<code>card:contextmenu</code> <code>{ row, key, clientX, clientY, nativeEvent }</code>, <code>card:mount</code> <code>{ row, key, el }</code>, and <code>range:change</code> <code>{ start, end, view }</code> on every prev/next/today/goTo/setView (not on a data update). Navigation: <code>prev()</code>/<code>next()</code>/<code>today()</code>/<code>goTo(date)</code>/<code>setView(view)</code>/<code>getRange()</code>, and <code>rebind(grid)</code> points a grid-bound calendar at a replacement grid after an htmx swap (a no-op on a standalone calendar). Accessibility is built in — <code>role="grid"</code> with columnheader/gridcell, a roving-tabindex focus ring, arrows by day/week, PageUp/PageDown by period, a live region — and <code>getState()</code>/<code>setState()</code> round-trip the arrangement (<code>{ version: 1, view, date, firstDay }</code>). Pass <code>null</code> as the element for a headless calendar that computes the same model without a DOM. UMD global <code>LatticeGridCalendar</code>.</td></tr>
11394
11394
  <tr><td class="name">createKPI</td><td class="desc">A KPI / stat-tile view (module <code>kpi</code>) of a dataset as a panel of aggregate tiles — each tile a <code>sum</code>, <code>avg</code>, <code>min</code>, <code>max</code>, <code>count</code>, <code>countDistinct</code>, <code>median</code>, a <code>percentile</code> (with <code>p</code>, 0 to 1) or a <code>custom</code> reducer over the routed rows, with an optional <code>filter</code> predicate, number <code>format</code> (<code>number</code>/<code>currency</code>/<code>percent</code>/<code>compact</code>), a <code>baseline</code> for a delta, semantic threshold bands (<code>thresholds</code> with two cut points and a direction, or an explicit <code>bands</code> list, giving a <code>good</code>/<code>warn</code>/<code>critical</code> status kept separate from any accent), and an optional <code>sparkline</code> series. It is a dataset viewer like any other: it consumes data through the same keyed-diff <code>rows.apply({ add, update, remove })</code> contract a grid exposes, so a Data Router can <code>attach(value, kpi)</code> and drive a KPI panel beside a grid, a kanban and a chart off one feed. Updates are incremental — a delta adjusts each tile's running accumulator by only the rows it carries (an add contributes, a remove reverses, an update reverses-then-contributes), the two bounded exceptions being a <code>min</code>/<code>max</code> whose current extreme is removed (a rescan of that tile's own value multiset) and a <code>custom</code> reducer (recomputed over the filtered store, an arbitrary function having no inverse). Each tile is a labelled <code>&lt;figure&gt;</code>, focusable and keyboard-activatable, its value announced, the sparkline respecting <code>prefers-reduced-motion</code>; a <code>tile:click</code> event (also from the keyboard) lets a host drill down or filter a routed grid. Pass <code>null</code> as the element for a headless panel that computes the same tile model without a DOM. Not a dashboard layout engine (that is the parked dashboard generator) and no charting beyond the minimal sparkline (that is the charts module).</td></tr>
@@ -15071,7 +15071,7 @@ grid.licence.state(); <span class="cmt">// 'licensed' | 'localhost' | 'trial'<
15071
15071
 
15072
15072
  <footer>
15073
15073
  <p>
15074
- Lattice Grid 1.115.0 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
15074
+ Lattice Grid 1.115.2 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
15075
15075
  Written against the shipped source. Where this guide and the code disagree, the code wins,
15076
15076
  please <a href="https://www.latticegrid.dev">tell us</a>.
15077
15077
  </p>
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.115.0",
2
+ "version": "1.115.2",
3
3
  "generated": "tools/build.js from docs/warnings/catalogue.json",
4
4
  "about": "Every developer-facing diagnostic Lattice Grid prints to the console, by the key it de-duplicates on. The key is the stable identifier: it is the `id` of every reported entry `grid.diagnostics.warnings()` hands back, what the devtools panel lists, and what to quote in a support conversation. A `*` in an id stands for a value filled in at runtime (a column id, a chart id, an event name), so `icon:*` is one entry covering every column the icon renderer refuses.",
5
5
  "fields": {
package/lattice-grid.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.115.0, type declarations
2
+ * Lattice Grid 1.115.2, type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */