@aquera/nile-elements 0.1.75-beta-1.1 → 0.1.75-beta-2.0

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 (491) hide show
  1. package/README.md +3 -0
  2. package/demo/index.html +121 -181
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.js +724 -271
  6. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  7. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -1
  8. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  9. package/dist/nile-badge/index.cjs.js +1 -1
  10. package/dist/nile-badge/index.esm.js +1 -1
  11. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  12. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  13. package/dist/nile-badge/nile-badge.esm.js +1 -1
  14. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  15. package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -1
  16. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  17. package/dist/nile-button/index.cjs.js +1 -1
  18. package/dist/nile-button/index.esm.js +1 -1
  19. package/dist/nile-button/nile-button.cjs.js +1 -1
  20. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  21. package/dist/nile-button/nile-button.esm.js +1 -1
  22. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  23. package/dist/nile-button/nile-button.test.cjs.js.map +1 -1
  24. package/dist/nile-button/nile-button.test.esm.js +1 -1
  25. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  26. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  27. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  28. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  29. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  30. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  31. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js +2 -0
  32. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js.map +1 -0
  33. package/dist/nile-code-editor/backup_nile-code-editor copy.esm.js +1 -0
  34. package/dist/nile-code-editor/extensionSetup.cjs.js +6 -6
  35. package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
  36. package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
  37. package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
  38. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  39. package/dist/nile-code-editor/nile-code-editor.esm.js +3 -3
  40. package/dist/nile-dialog/index.cjs.js +1 -1
  41. package/dist/nile-dialog/index.esm.js +1 -1
  42. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  43. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  44. package/dist/nile-dialog/nile-dialog.esm.js +2 -2
  45. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  46. package/dist/nile-dialog/nile-dialog.test.cjs.js.map +1 -1
  47. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  48. package/dist/nile-drawer/index.cjs.js +1 -1
  49. package/dist/nile-drawer/index.esm.js +1 -1
  50. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  51. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  52. package/dist/nile-drawer/nile-drawer.esm.js +2 -2
  53. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  54. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -1
  55. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  56. package/dist/nile-grid/index.cjs.js +2 -0
  57. package/dist/nile-grid/index.cjs.js.map +1 -0
  58. package/dist/nile-grid/index.esm.js +1 -0
  59. package/dist/nile-grid/nile-grid.cjs.js +2 -0
  60. package/dist/nile-grid/nile-grid.cjs.js.map +1 -0
  61. package/dist/nile-grid/nile-grid.css.cjs.js +2 -0
  62. package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -0
  63. package/dist/nile-grid/nile-grid.css.esm.js +32 -0
  64. package/dist/nile-grid/nile-grid.esm.js +7 -0
  65. package/dist/nile-grid/nile-grid.utils.cjs.js +2 -0
  66. package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -0
  67. package/dist/nile-grid/nile-grid.utils.esm.js +1 -0
  68. package/dist/nile-grid-body/index.cjs.js +2 -0
  69. package/dist/nile-grid-body/index.cjs.js.map +1 -0
  70. package/dist/nile-grid-body/index.esm.js +1 -0
  71. package/dist/nile-grid-body/nile-grid-body.cjs.js +2 -0
  72. package/dist/nile-grid-body/nile-grid-body.cjs.js.map +1 -0
  73. package/dist/nile-grid-body/nile-grid-body.css.cjs.js +2 -0
  74. package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +1 -0
  75. package/dist/nile-grid-body/nile-grid-body.css.esm.js +10 -0
  76. package/dist/nile-grid-body/nile-grid-body.esm.js +5 -0
  77. package/dist/nile-grid-cell-item/index.cjs.js +2 -0
  78. package/dist/nile-grid-cell-item/index.cjs.js.map +1 -0
  79. package/dist/nile-grid-cell-item/index.esm.js +1 -0
  80. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js +2 -0
  81. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -0
  82. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +2 -0
  83. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -0
  84. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +35 -0
  85. package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +12 -0
  86. package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js +2 -0
  87. package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js.map +1 -0
  88. package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.esm.js +1 -0
  89. package/dist/nile-grid-head/index.cjs.js +2 -0
  90. package/dist/nile-grid-head/index.cjs.js.map +1 -0
  91. package/dist/nile-grid-head/index.esm.js +1 -0
  92. package/dist/nile-grid-head/nile-grid-head.cjs.js +2 -0
  93. package/dist/nile-grid-head/nile-grid-head.cjs.js.map +1 -0
  94. package/dist/nile-grid-head/nile-grid-head.css.cjs.js +2 -0
  95. package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -0
  96. package/dist/nile-grid-head/nile-grid-head.css.esm.js +7 -0
  97. package/dist/nile-grid-head/nile-grid-head.esm.js +5 -0
  98. package/dist/nile-grid-head-item/index.cjs.js +2 -0
  99. package/dist/nile-grid-head-item/index.cjs.js.map +1 -0
  100. package/dist/nile-grid-head-item/index.esm.js +1 -0
  101. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +2 -0
  102. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -0
  103. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +2 -0
  104. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -0
  105. package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +34 -0
  106. package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +12 -0
  107. package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +2 -0
  108. package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +1 -0
  109. package/dist/nile-grid-head-item/nile-grid-head-item.utils.esm.js +1 -0
  110. package/dist/nile-grid-row/index.cjs.js +2 -0
  111. package/dist/nile-grid-row/index.cjs.js.map +1 -0
  112. package/dist/nile-grid-row/index.esm.js +1 -0
  113. package/dist/nile-grid-row/nile-grid-row.cjs.js +2 -0
  114. package/dist/nile-grid-row/nile-grid-row.cjs.js.map +1 -0
  115. package/dist/nile-grid-row/nile-grid-row.css.cjs.js +2 -0
  116. package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +1 -0
  117. package/dist/nile-grid-row/nile-grid-row.css.esm.js +15 -0
  118. package/dist/nile-grid-row/nile-grid-row.esm.js +7 -0
  119. package/dist/nile-icon/icons/svg/format_align_justify.cjs.js +2 -0
  120. package/dist/nile-icon/icons/svg/format_align_justify.cjs.js.map +1 -0
  121. package/dist/nile-icon/icons/svg/format_align_justify.esm.js +1 -0
  122. package/dist/nile-icon/icons/svg/format_align_left.cjs.js +2 -0
  123. package/dist/nile-icon/icons/svg/format_align_left.cjs.js.map +1 -0
  124. package/dist/nile-icon/icons/svg/format_align_left.esm.js +1 -0
  125. package/dist/nile-icon/icons/svg/format_align_middle.cjs.js +2 -0
  126. package/dist/nile-icon/icons/svg/format_align_middle.cjs.js.map +1 -0
  127. package/dist/nile-icon/icons/svg/format_align_middle.esm.js +1 -0
  128. package/dist/nile-icon/icons/svg/format_align_right.cjs.js +2 -0
  129. package/dist/nile-icon/icons/svg/format_align_right.cjs.js.map +1 -0
  130. package/dist/nile-icon/icons/svg/format_align_right.esm.js +1 -0
  131. package/dist/nile-icon/icons/svg/format_bold.cjs.js +2 -0
  132. package/dist/nile-icon/icons/svg/format_bold.cjs.js.map +1 -0
  133. package/dist/nile-icon/icons/svg/format_bold.esm.js +1 -0
  134. package/dist/nile-icon/icons/svg/format_clear.cjs.js +2 -0
  135. package/dist/nile-icon/icons/svg/format_clear.cjs.js.map +1 -0
  136. package/dist/nile-icon/icons/svg/format_clear.esm.js +1 -0
  137. package/dist/nile-icon/icons/svg/format_italic.cjs.js +2 -0
  138. package/dist/nile-icon/icons/svg/format_italic.cjs.js.map +1 -0
  139. package/dist/nile-icon/icons/svg/format_italic.esm.js +1 -0
  140. package/dist/nile-icon/icons/svg/format_list_bulleted.cjs.js +2 -0
  141. package/dist/nile-icon/icons/svg/format_list_bulleted.cjs.js.map +1 -0
  142. package/dist/nile-icon/icons/svg/format_list_bulleted.esm.js +1 -0
  143. package/dist/nile-icon/icons/svg/format_list_numbered.cjs.js +2 -0
  144. package/dist/nile-icon/icons/svg/format_list_numbered.cjs.js.map +1 -0
  145. package/dist/nile-icon/icons/svg/format_list_numbered.esm.js +1 -0
  146. package/dist/nile-icon/icons/svg/format_underline.cjs.js +2 -0
  147. package/dist/nile-icon/icons/svg/format_underline.cjs.js.map +1 -0
  148. package/dist/nile-icon/icons/svg/format_underline.esm.js +1 -0
  149. package/dist/nile-icon/icons/svg/image_2.cjs.js +2 -0
  150. package/dist/nile-icon/icons/svg/image_2.cjs.js.map +1 -0
  151. package/dist/nile-icon/icons/svg/image_2.esm.js +1 -0
  152. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  153. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  154. package/dist/nile-icon/icons/svg/link_2.cjs.js +2 -0
  155. package/dist/nile-icon/icons/svg/link_2.cjs.js.map +1 -0
  156. package/dist/nile-icon/icons/svg/link_2.esm.js +1 -0
  157. package/dist/nile-icon/index.cjs.js +1 -1
  158. package/dist/nile-icon/index.cjs.js.map +1 -1
  159. package/dist/nile-icon/index.esm.js +2 -2
  160. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  161. package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -1
  162. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  163. package/dist/nile-icon-button/index.cjs.js +1 -1
  164. package/dist/nile-icon-button/index.esm.js +1 -1
  165. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  166. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  167. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  168. package/dist/nile-input/index.cjs.js +1 -1
  169. package/dist/nile-input/index.esm.js +1 -1
  170. package/dist/nile-input/nile-input.cjs.js +1 -1
  171. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  172. package/dist/nile-input/nile-input.esm.js +1 -1
  173. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  174. package/dist/nile-input/nile-input.test.cjs.js.map +1 -1
  175. package/dist/nile-input/nile-input.test.esm.js +1 -1
  176. package/dist/nile-link/nile-link.css.cjs.js +1 -1
  177. package/dist/nile-link/nile-link.css.cjs.js.map +1 -1
  178. package/dist/nile-link/nile-link.css.esm.js +1 -0
  179. package/dist/nile-menu-item/index.cjs.js +1 -1
  180. package/dist/nile-menu-item/index.esm.js +1 -1
  181. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  182. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  183. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  184. package/dist/nile-option/index.cjs.js +1 -1
  185. package/dist/nile-option/index.esm.js +1 -1
  186. package/dist/nile-option/nile-option.cjs.js +1 -1
  187. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  188. package/dist/nile-option/nile-option.esm.js +2 -2
  189. package/dist/nile-rich-text-editor/index.cjs.js +2 -0
  190. package/dist/nile-rich-text-editor/index.cjs.js.map +1 -0
  191. package/dist/nile-rich-text-editor/index.esm.js +1 -0
  192. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +2 -0
  193. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -0
  194. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +2 -0
  195. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -0
  196. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +149 -0
  197. package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -0
  198. package/dist/nile-rich-text-editor/nile-rte-color.cjs.js +2 -0
  199. package/dist/nile-rich-text-editor/nile-rte-color.cjs.js.map +1 -0
  200. package/dist/nile-rich-text-editor/nile-rte-color.esm.js +53 -0
  201. package/dist/nile-rich-text-editor/nile-rte-divider.cjs.js +2 -0
  202. package/dist/nile-rich-text-editor/nile-rte-divider.cjs.js.map +1 -0
  203. package/dist/nile-rich-text-editor/nile-rte-divider.esm.js +1 -0
  204. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js +2 -0
  205. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js.map +1 -0
  206. package/dist/nile-rich-text-editor/nile-rte-link.esm.js +19 -0
  207. package/dist/nile-rich-text-editor/nile-rte-mentions-item.cjs.js +2 -0
  208. package/dist/nile-rich-text-editor/nile-rte-mentions-item.cjs.js.map +1 -0
  209. package/dist/nile-rich-text-editor/nile-rte-mentions-item.esm.js +1 -0
  210. package/dist/nile-rich-text-editor/nile-rte-mentions.cjs.js +3 -0
  211. package/dist/nile-rich-text-editor/nile-rte-mentions.cjs.js.map +1 -0
  212. package/dist/nile-rich-text-editor/nile-rte-mentions.esm.js +1 -0
  213. package/dist/nile-rich-text-editor/nile-rte-preview.cjs.js +2 -0
  214. package/dist/nile-rich-text-editor/nile-rte-preview.cjs.js.map +1 -0
  215. package/dist/nile-rich-text-editor/nile-rte-preview.esm.js +1 -0
  216. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js +2 -0
  217. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js.map +1 -0
  218. package/dist/nile-rich-text-editor/nile-rte-select.esm.js +66 -0
  219. package/dist/nile-rich-text-editor/nile-rte-toolbar-item.cjs.js +2 -0
  220. package/dist/nile-rich-text-editor/nile-rte-toolbar-item.cjs.js.map +1 -0
  221. package/dist/nile-rich-text-editor/nile-rte-toolbar-item.esm.js +1 -0
  222. package/dist/nile-rich-text-editor/nile-rte-toolbar.cjs.js +2 -0
  223. package/dist/nile-rich-text-editor/nile-rte-toolbar.cjs.js.map +1 -0
  224. package/dist/nile-rich-text-editor/nile-rte-toolbar.esm.js +1 -0
  225. package/dist/nile-rich-text-editor/utils.cjs.js +2 -0
  226. package/dist/nile-rich-text-editor/utils.cjs.js.map +1 -0
  227. package/dist/nile-rich-text-editor/utils.esm.js +1 -0
  228. package/dist/nile-select/index.cjs.js +1 -1
  229. package/dist/nile-select/index.esm.js +1 -1
  230. package/dist/nile-select/nile-select.cjs.js +1 -1
  231. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  232. package/dist/nile-select/nile-select.esm.js +1 -1
  233. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  234. package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
  235. package/dist/nile-select/nile-select.test.esm.js +1 -1
  236. package/dist/nile-tab/index.cjs.js +1 -1
  237. package/dist/nile-tab/index.esm.js +1 -1
  238. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  239. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  240. package/dist/nile-tab/nile-tab.esm.js +1 -1
  241. package/dist/nile-tab-group/index.cjs.js +1 -1
  242. package/dist/nile-tab-group/index.esm.js +1 -1
  243. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  244. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  245. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  246. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  247. package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +1 -1
  248. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  249. package/dist/nile-tag/index.cjs.js +1 -1
  250. package/dist/nile-tag/index.esm.js +1 -1
  251. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  252. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  253. package/dist/nile-tag/nile-tag.esm.js +1 -1
  254. package/dist/nile-toast/index.cjs.js +1 -1
  255. package/dist/nile-toast/index.esm.js +1 -1
  256. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  257. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  258. package/dist/nile-toast/nile-toast.esm.js +1 -1
  259. package/dist/nile-tree/index.cjs.js +1 -1
  260. package/dist/nile-tree/index.esm.js +1 -1
  261. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  262. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  263. package/dist/nile-tree/nile-tree.esm.js +1 -1
  264. package/dist/nile-tree-item/index.cjs.js +1 -1
  265. package/dist/nile-tree-item/index.esm.js +1 -1
  266. package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
  267. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
  268. package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
  269. package/dist/nile-virtual-select/index.cjs.js +1 -1
  270. package/dist/nile-virtual-select/index.esm.js +1 -1
  271. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
  272. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  273. package/dist/nile-virtual-select/nile-virtual-select.esm.js +3 -3
  274. package/dist/src/index.d.ts +7 -0
  275. package/dist/src/index.js +8 -1
  276. package/dist/src/index.js.map +1 -1
  277. package/dist/src/nile-code-editor/Old_theme copy.d.ts +191 -0
  278. package/dist/src/nile-code-editor/Old_theme copy.js +193 -0
  279. package/dist/src/nile-code-editor/Old_theme copy.js.map +1 -0
  280. package/dist/src/nile-code-editor/backup_nile-code-editor copy.d.ts +0 -0
  281. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js +675 -0
  282. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js.map +1 -0
  283. package/dist/src/nile-code-editor/nile-code-editor.d.ts +6 -3
  284. package/dist/src/nile-code-editor/nile-code-editor.js +44 -22
  285. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  286. package/dist/src/nile-code-editor/theme copy.d.ts +191 -0
  287. package/dist/src/nile-code-editor/theme copy.js +193 -0
  288. package/dist/src/nile-code-editor/theme copy.js.map +1 -0
  289. package/dist/src/nile-grid/index.d.ts +0 -4
  290. package/dist/src/nile-grid/index.js +0 -4
  291. package/dist/src/nile-grid/index.js.map +1 -1
  292. package/dist/src/nile-grid/nile-grid.css.d.ts +8 -0
  293. package/dist/src/nile-grid/nile-grid.css.js +27 -106
  294. package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
  295. package/dist/src/nile-grid/nile-grid.d.ts +37 -26
  296. package/dist/src/nile-grid/nile-grid.js +96 -148
  297. package/dist/src/nile-grid/nile-grid.js.map +1 -1
  298. package/dist/src/nile-grid/nile-grid.utils.d.ts +9 -0
  299. package/dist/src/nile-grid/nile-grid.utils.js +170 -0
  300. package/dist/src/nile-grid/nile-grid.utils.js.map +1 -0
  301. package/dist/src/nile-grid-body/index.d.ts +1 -0
  302. package/dist/src/nile-grid-body/index.js +2 -0
  303. package/dist/src/nile-grid-body/index.js.map +1 -0
  304. package/dist/src/nile-grid-body/nile-grid-body.css.d.ts +12 -0
  305. package/dist/src/nile-grid-body/nile-grid-body.css.js +22 -0
  306. package/dist/src/nile-grid-body/nile-grid-body.css.js.map +1 -0
  307. package/dist/src/nile-grid-body/nile-grid-body.d.ts +29 -0
  308. package/dist/src/nile-grid-body/nile-grid-body.js +43 -0
  309. package/dist/src/nile-grid-body/nile-grid-body.js.map +1 -0
  310. package/dist/src/nile-grid-cell-item/index.d.ts +1 -0
  311. package/dist/src/nile-grid-cell-item/index.js +2 -0
  312. package/dist/src/nile-grid-cell-item/index.js.map +1 -0
  313. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.d.ts +12 -0
  314. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +47 -0
  315. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -0
  316. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +36 -0
  317. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +93 -0
  318. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -0
  319. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.d.ts +10 -0
  320. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js +34 -0
  321. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +1 -0
  322. package/dist/src/nile-grid-head/index.d.ts +1 -0
  323. package/dist/src/nile-grid-head/index.js +2 -0
  324. package/dist/src/nile-grid-head/index.js.map +1 -0
  325. package/dist/src/nile-grid-head/nile-grid-head.css.d.ts +12 -0
  326. package/dist/src/nile-grid-head/nile-grid-head.css.js +19 -0
  327. package/dist/src/nile-grid-head/nile-grid-head.css.js.map +1 -0
  328. package/dist/src/nile-grid-head/nile-grid-head.d.ts +28 -0
  329. package/dist/src/nile-grid-head/nile-grid-head.js +41 -0
  330. package/dist/src/nile-grid-head/nile-grid-head.js.map +1 -0
  331. package/dist/src/nile-grid-head-item/index.d.ts +1 -0
  332. package/dist/src/nile-grid-head-item/index.js +2 -0
  333. package/dist/src/nile-grid-head-item/index.js.map +1 -0
  334. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.d.ts +12 -0
  335. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +46 -0
  336. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -0
  337. package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +37 -0
  338. package/dist/src/nile-grid-head-item/nile-grid-head-item.js +100 -0
  339. package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +1 -0
  340. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.d.ts +10 -0
  341. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js +34 -0
  342. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js.map +1 -0
  343. package/dist/src/nile-grid-row/index.d.ts +1 -0
  344. package/dist/src/nile-grid-row/index.js +2 -0
  345. package/dist/src/nile-grid-row/index.js.map +1 -0
  346. package/dist/src/nile-grid-row/nile-grid-row.css.d.ts +12 -0
  347. package/dist/src/nile-grid-row/nile-grid-row.css.js +27 -0
  348. package/dist/src/nile-grid-row/nile-grid-row.css.js.map +1 -0
  349. package/dist/src/nile-grid-row/nile-grid-row.d.ts +29 -0
  350. package/dist/src/nile-grid-row/nile-grid-row.js +45 -0
  351. package/dist/src/nile-grid-row/nile-grid-row.js.map +1 -0
  352. package/dist/src/nile-icon/icons/svg/format_align_justify.d.ts +5 -0
  353. package/dist/src/nile-icon/icons/svg/format_align_justify.js +5 -0
  354. package/dist/src/nile-icon/icons/svg/format_align_justify.js.map +1 -0
  355. package/dist/src/nile-icon/icons/svg/format_align_left.d.ts +5 -0
  356. package/dist/src/nile-icon/icons/svg/format_align_left.js +5 -0
  357. package/dist/src/nile-icon/icons/svg/format_align_left.js.map +1 -0
  358. package/dist/src/nile-icon/icons/svg/format_align_middle.d.ts +5 -0
  359. package/dist/src/nile-icon/icons/svg/format_align_middle.js +5 -0
  360. package/dist/src/nile-icon/icons/svg/format_align_middle.js.map +1 -0
  361. package/dist/src/nile-icon/icons/svg/format_align_right.d.ts +5 -0
  362. package/dist/src/nile-icon/icons/svg/format_align_right.js +5 -0
  363. package/dist/src/nile-icon/icons/svg/format_align_right.js.map +1 -0
  364. package/dist/src/nile-icon/icons/svg/format_bold.d.ts +5 -0
  365. package/dist/src/nile-icon/icons/svg/format_bold.js +5 -0
  366. package/dist/src/nile-icon/icons/svg/format_bold.js.map +1 -0
  367. package/dist/src/nile-icon/icons/svg/format_clear.d.ts +5 -0
  368. package/dist/src/nile-icon/icons/svg/format_clear.js +5 -0
  369. package/dist/src/nile-icon/icons/svg/format_clear.js.map +1 -0
  370. package/dist/src/nile-icon/icons/svg/format_italic.d.ts +5 -0
  371. package/dist/src/nile-icon/icons/svg/format_italic.js +5 -0
  372. package/dist/src/nile-icon/icons/svg/format_italic.js.map +1 -0
  373. package/dist/src/nile-icon/icons/svg/format_list_bulleted.d.ts +5 -0
  374. package/dist/src/nile-icon/icons/svg/format_list_bulleted.js +5 -0
  375. package/dist/src/nile-icon/icons/svg/format_list_bulleted.js.map +1 -0
  376. package/dist/src/nile-icon/icons/svg/format_list_numbered.d.ts +5 -0
  377. package/dist/src/nile-icon/icons/svg/format_list_numbered.js +5 -0
  378. package/dist/src/nile-icon/icons/svg/format_list_numbered.js.map +1 -0
  379. package/dist/src/nile-icon/icons/svg/format_underline.d.ts +5 -0
  380. package/dist/src/nile-icon/icons/svg/format_underline.js +5 -0
  381. package/dist/src/nile-icon/icons/svg/format_underline.js.map +1 -0
  382. package/dist/src/nile-icon/icons/svg/image_2.d.ts +5 -0
  383. package/dist/src/nile-icon/icons/svg/image_2.js +5 -0
  384. package/dist/src/nile-icon/icons/svg/image_2.js.map +1 -0
  385. package/dist/src/nile-icon/icons/svg/index.d.ts +12 -0
  386. package/dist/src/nile-icon/icons/svg/index.js +12 -0
  387. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  388. package/dist/src/nile-icon/icons/svg/link_2.d.ts +5 -0
  389. package/dist/src/nile-icon/icons/svg/link_2.js +5 -0
  390. package/dist/src/nile-icon/icons/svg/link_2.js.map +1 -0
  391. package/dist/src/nile-link/nile-link.css.js +1 -0
  392. package/dist/src/nile-link/nile-link.css.js.map +1 -1
  393. package/dist/src/nile-option/nile-option.js +1 -1
  394. package/dist/src/nile-option/nile-option.js.map +1 -1
  395. package/dist/src/nile-rich-text-editor/index.d.ts +1 -0
  396. package/dist/src/nile-rich-text-editor/index.js +2 -0
  397. package/dist/src/nile-rich-text-editor/index.js.map +1 -0
  398. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.d.ts +3 -0
  399. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +152 -0
  400. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -0
  401. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +63 -0
  402. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +735 -0
  403. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -0
  404. package/dist/src/nile-rich-text-editor/nile-rte-color.d.ts +20 -0
  405. package/dist/src/nile-rich-text-editor/nile-rte-color.js +188 -0
  406. package/dist/src/nile-rich-text-editor/nile-rte-color.js.map +1 -0
  407. package/dist/src/nile-rich-text-editor/nile-rte-divider.d.ts +10 -0
  408. package/dist/src/nile-rich-text-editor/nile-rte-divider.js +12 -0
  409. package/dist/src/nile-rich-text-editor/nile-rte-divider.js.map +1 -0
  410. package/dist/src/nile-rich-text-editor/nile-rte-link.d.ts +19 -0
  411. package/dist/src/nile-rich-text-editor/nile-rte-link.js +169 -0
  412. package/dist/src/nile-rich-text-editor/nile-rte-link.js.map +1 -0
  413. package/dist/src/nile-rich-text-editor/nile-rte-mentions-item.d.ts +18 -0
  414. package/dist/src/nile-rich-text-editor/nile-rte-mentions-item.js +53 -0
  415. package/dist/src/nile-rich-text-editor/nile-rte-mentions-item.js.map +1 -0
  416. package/dist/src/nile-rich-text-editor/nile-rte-mentions.d.ts +64 -0
  417. package/dist/src/nile-rich-text-editor/nile-rte-mentions.js +544 -0
  418. package/dist/src/nile-rich-text-editor/nile-rte-mentions.js.map +1 -0
  419. package/dist/src/nile-rich-text-editor/nile-rte-preview.d.ts +10 -0
  420. package/dist/src/nile-rich-text-editor/nile-rte-preview.js +12 -0
  421. package/dist/src/nile-rich-text-editor/nile-rte-preview.js.map +1 -0
  422. package/dist/src/nile-rich-text-editor/nile-rte-select.d.ts +33 -0
  423. package/dist/src/nile-rich-text-editor/nile-rte-select.js +228 -0
  424. package/dist/src/nile-rich-text-editor/nile-rte-select.js.map +1 -0
  425. package/dist/src/nile-rich-text-editor/nile-rte-toolbar-item.d.ts +12 -0
  426. package/dist/src/nile-rich-text-editor/nile-rte-toolbar-item.js +23 -0
  427. package/dist/src/nile-rich-text-editor/nile-rte-toolbar-item.js.map +1 -0
  428. package/dist/src/nile-rich-text-editor/nile-rte-toolbar.d.ts +10 -0
  429. package/dist/src/nile-rich-text-editor/nile-rte-toolbar.js +12 -0
  430. package/dist/src/nile-rich-text-editor/nile-rte-toolbar.js.map +1 -0
  431. package/dist/src/nile-rich-text-editor/utils.d.ts +13 -0
  432. package/dist/src/nile-rich-text-editor/utils.js +538 -0
  433. package/dist/src/nile-rich-text-editor/utils.js.map +1 -0
  434. package/dist/src/version.js +1 -1
  435. package/dist/src/version.js.map +1 -1
  436. package/dist/tsconfig.tsbuildinfo +1 -1
  437. package/package.json +9 -3
  438. package/rollup.config.js +1 -3
  439. package/src/index.ts +8 -1
  440. package/src/nile-code-editor/backup_nile-code-editor copy.ts +763 -0
  441. package/src/nile-code-editor/nile-code-editor.ts +44 -20
  442. package/src/nile-grid/index.ts +1 -0
  443. package/src/nile-grid/nile-grid.css.ts +43 -0
  444. package/src/nile-grid/nile-grid.ts +185 -0
  445. package/src/nile-grid/nile-grid.utils.ts +252 -0
  446. package/src/nile-grid-body/index.ts +1 -0
  447. package/src/nile-grid-body/nile-grid-body.css.ts +24 -0
  448. package/src/nile-grid-body/nile-grid-body.ts +51 -0
  449. package/src/nile-grid-cell-item/index.ts +1 -0
  450. package/src/nile-grid-cell-item/nile-grid-cell-item.css.ts +49 -0
  451. package/src/nile-grid-cell-item/nile-grid-cell-item.ts +98 -0
  452. package/src/nile-grid-cell-item/nile-grid-cell-item.utils.ts +65 -0
  453. package/src/nile-grid-head/index.ts +1 -0
  454. package/src/nile-grid-head/nile-grid-head.css.ts +21 -0
  455. package/src/nile-grid-head/nile-grid-head.ts +50 -0
  456. package/src/nile-grid-head-item/index.ts +1 -0
  457. package/src/nile-grid-head-item/nile-grid-head-item.css.ts +48 -0
  458. package/src/nile-grid-head-item/nile-grid-head-item.ts +111 -0
  459. package/src/nile-grid-head-item/nile-grid-head-item.utils.ts +66 -0
  460. package/src/nile-grid-row/index.ts +1 -0
  461. package/src/nile-grid-row/nile-grid-row.css.ts +29 -0
  462. package/src/nile-grid-row/nile-grid-row.ts +53 -0
  463. package/src/nile-icon/icons/svg/format_align_justify.ts +5 -0
  464. package/src/nile-icon/icons/svg/format_align_left.ts +5 -0
  465. package/src/nile-icon/icons/svg/format_align_middle.ts +5 -0
  466. package/src/nile-icon/icons/svg/format_align_right.ts +5 -0
  467. package/src/nile-icon/icons/svg/format_bold.ts +5 -0
  468. package/src/nile-icon/icons/svg/format_clear.ts +5 -0
  469. package/src/nile-icon/icons/svg/format_italic.ts +5 -0
  470. package/src/nile-icon/icons/svg/format_list_bulleted.ts +5 -0
  471. package/src/nile-icon/icons/svg/format_list_numbered.ts +5 -0
  472. package/src/nile-icon/icons/svg/format_underline.ts +5 -0
  473. package/src/nile-icon/icons/svg/image_2.ts +5 -0
  474. package/src/nile-icon/icons/svg/index.ts +12 -0
  475. package/src/nile-icon/icons/svg/link_2.ts +5 -0
  476. package/src/nile-link/nile-link.css.ts +1 -0
  477. package/src/nile-option/nile-option.ts +1 -1
  478. package/src/nile-rich-text-editor/index.ts +1 -0
  479. package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +154 -0
  480. package/src/nile-rich-text-editor/nile-rich-text-editor.ts +836 -0
  481. package/src/nile-rich-text-editor/nile-rte-color.ts +189 -0
  482. package/src/nile-rich-text-editor/nile-rte-divider.ts +9 -0
  483. package/src/nile-rich-text-editor/nile-rte-link.ts +161 -0
  484. package/src/nile-rich-text-editor/nile-rte-mentions-item.ts +46 -0
  485. package/src/nile-rich-text-editor/nile-rte-mentions.ts +618 -0
  486. package/src/nile-rich-text-editor/nile-rte-preview.ts +9 -0
  487. package/src/nile-rich-text-editor/nile-rte-select.ts +249 -0
  488. package/src/nile-rich-text-editor/nile-rte-toolbar-item.ts +13 -0
  489. package/src/nile-rich-text-editor/nile-rte-toolbar.ts +9 -0
  490. package/src/nile-rich-text-editor/utils.ts +643 -0
  491. package/vscode-html-custom-data.json +309 -7
@@ -1,35 +1,46 @@
1
- import { TemplateResult } from 'lit';
2
- import type { CSSResultGroup } from 'lit';
1
+ /**
2
+ * Copyright Aquera Inc 2025
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { CSSResultArray, TemplateResult } from 'lit';
3
8
  import NileElement from '../internal/nile-element';
4
- import type { ColumnDef, GridOptions } from './types.js';
5
9
  /**
6
- * @summary A simple data grid component
7
- * @status stable
8
- * @since 2.0
10
+ * Nile grid component.
11
+ *
12
+ * @tag nile-grid
9
13
  *
10
- * @event grid-ready - Emitted when the grid is ready
11
14
  */
12
15
  export declare class NileGrid extends NileElement {
13
- static styles: CSSResultGroup;
14
- /** Column definitions for the grid */
15
- columnDefs: ColumnDef[];
16
- /** Row data to display in the grid */
17
- rowData: any[];
18
- /** Grid options for configuration */
19
- gridOptions: GridOptions;
20
- private gridApi;
21
- connectedCallback(): void;
22
- firstUpdated(): void;
23
- private initializeGridApi;
24
- private emitGridReady;
25
- private handleResizeStart;
26
- private renderHeader;
27
- private shouldShowResizeHandle;
28
- private renderBody;
29
- private renderRowCells;
30
- private calculateColSpan;
31
- private getGridTemplateColumns;
16
+ /**
17
+ * The styles for nile-grid
18
+ * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
19
+ */
20
+ static get styles(): CSSResultArray;
21
+ /** User can pass custom widths for the columns */
22
+ customWidths: number[];
23
+ /** To set the grid template columns in rebuildTemplate method */
24
+ colTemplate: string;
25
+ /** To store the column widths in the beginning and after resizing */
26
+ private columnWidths;
27
+ /** To get the slot element */
28
+ private slotEl;
29
+ /** To get the first resize line to show the resize handle */
30
+ resizeStart: HTMLElement;
31
+ /** To get the last resize line to show the resize handle */
32
+ resizeEnd: HTMLElement;
33
+ /** To store the mutation observer */
34
+ private mo?;
35
+ /** To store the request animation frame */
36
+ private raf;
37
+ private scheduleLayout;
38
+ private ensureWidths;
39
+ private onResize;
40
+ protected firstUpdated(): void;
41
+ private _attachObserverAndLayout;
32
42
  render(): TemplateResult;
43
+ disconnectedCallback(): void;
33
44
  }
34
45
  export default NileGrid;
35
46
  declare global {
@@ -1,179 +1,127 @@
1
+ /**
2
+ * Copyright Aquera Inc 2025
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
1
7
  import { __decorate } from "tslib";
2
- import { customElement, property } from 'lit/decorators.js';
3
8
  import { html } from 'lit';
9
+ import { customElement, property, query, state } from 'lit/decorators.js';
4
10
  import { styles } from './nile-grid.css';
5
11
  import NileElement from '../internal/nile-element';
6
- import { virtualize } from '@lit-labs/virtualizer/virtualize.js';
7
- import { GridRenderer } from './renderer.js';
8
- import { ResizeHandler } from './resize-handler.js';
12
+ import { resizeLinesHandler, listenToEventListeners, removeEventListeners, getHead, getBody, rebuildTemplate, applyTemplate, layout, } from './nile-grid.utils';
9
13
  /**
10
- * @summary A simple data grid component
11
- * @status stable
12
- * @since 2.0
14
+ * Nile grid component.
15
+ *
16
+ * @tag nile-grid
13
17
  *
14
- * @event grid-ready - Emitted when the grid is ready
15
18
  */
16
19
  let NileGrid = class NileGrid extends NileElement {
17
20
  constructor() {
18
21
  super(...arguments);
19
- /** Column definitions for the grid */
20
- this.columnDefs = [];
21
- /** Row data to display in the grid */
22
- this.rowData = [];
23
- /** Grid options for configuration */
24
- this.gridOptions = {};
25
- this.gridApi = null;
26
- }
27
- connectedCallback() {
28
- super.connectedCallback();
29
- this.initializeGridApi();
30
- }
31
- firstUpdated() {
32
- this.emitGridReady();
33
- }
34
- initializeGridApi() {
35
- this.gridApi = {
36
- getSelectedRows: () => [],
37
- setRowData: (data) => {
38
- this.rowData = data;
39
- this.requestUpdate();
40
- },
41
- setColumnDefs: (defs) => {
42
- this.columnDefs = defs;
43
- this.requestUpdate();
22
+ /** User can pass custom widths for the columns */
23
+ this.customWidths = [];
24
+ /** To set the grid template columns in rebuildTemplate method */
25
+ this.colTemplate = '';
26
+ /** To store the column widths in the beginning and after resizing */
27
+ this.columnWidths = [...this.customWidths];
28
+ /** To store the request animation frame */
29
+ this.raf = 0;
30
+ this.onResize = (e) => {
31
+ const { col, widthPx } = e.detail;
32
+ let w;
33
+ const floor = 60;
34
+ if (e.target.getAttribute('colspan') &&
35
+ parseInt(e.target.getAttribute('colspan')) > 1) {
36
+ w = Math.max(floor, Math.round(widthPx - this.columnWidths[col - 1]));
37
+ }
38
+ else {
39
+ w = Math.max(floor, Math.round(widthPx));
44
40
  }
41
+ this.columnWidths[col] = w;
42
+ resizeLinesHandler(this.resizeStart, this.resizeEnd, col, widthPx, this.scrollHeight, this.columnWidths, e);
43
+ this.colTemplate = rebuildTemplate(this.columnWidths.length, this.columnWidths);
44
+ applyTemplate(getHead(this.slotEl), getBody(this.slotEl), this.colTemplate);
45
45
  };
46
+ /* #endregion */
46
47
  }
47
- emitGridReady() {
48
- if (this.gridApi) {
49
- const event = {
50
- api: this.gridApi,
51
- type: 'gridReady'
52
- };
53
- this.emit('grid-ready', event);
54
- }
55
- }
56
- handleResizeStart(event, col, columnIndex) {
57
- ResizeHandler.handleResizeStart(event, col, columnIndex, this.columnDefs, this.gridOptions, () => this.requestUpdate());
58
- }
59
- renderHeader() {
60
- return html `
61
- <div class="grid-header" style="grid-template-columns: ${this.getGridTemplateColumns()};">
62
- ${this.columnDefs.map((col, index) => html `
63
- <div class="grid-header-cell">
64
- <span>${col.headerName || col.field}</span>
65
- ${this.shouldShowResizeHandle(col) ? html `
66
- <div
67
- class="grid-resize-handle"
68
- @mousedown=${(e) => this.handleResizeStart(e, col, index)}
69
- title="Drag to resize column"
70
- ></div>
71
- ` : ''}
72
- </div>
73
- `)}
74
- </div>
75
- `;
76
- }
77
- shouldShowResizeHandle(col) {
78
- if (!this.gridOptions.enableColResize)
79
- return false;
80
- if (col.resizable === false)
81
- return false;
82
- return true;
48
+ /**
49
+ * The styles for nile-grid
50
+ * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
51
+ */
52
+ static get styles() {
53
+ return [styles];
83
54
  }
84
- renderBody() {
85
- if (this.gridOptions.enableVirtualScroll && this.rowData.length > 0) {
86
- return html `
87
- <div class="grid-body">
88
- ${virtualize({
89
- items: this.rowData,
90
- renderItem: (row, rowIndex) => html `
91
- <div class="grid-row" style="grid-template-columns: ${this.getGridTemplateColumns()};">
92
- ${this.renderRowCells(row, rowIndex)}
93
- </div>
94
- `,
95
- scroller: true,
96
- })}
97
- </div>
98
- `;
99
- }
100
- return GridRenderer.renderBody(this.rowData, this.columnDefs, false, () => html ``);
55
+ scheduleLayout() {
56
+ if (this.raf)
57
+ cancelAnimationFrame(this.raf);
58
+ this.raf = requestAnimationFrame(() => {
59
+ this.raf = 0;
60
+ layout(this, this.slotEl, this.ensureWidths.bind(this), rebuildTemplate, applyTemplate, this.columnWidths);
61
+ });
101
62
  }
102
- renderRowCells(row, rowIndex) {
103
- const cells = [];
104
- let currentColIndex = 0;
105
- for (let colIndex = 0; colIndex < this.columnDefs.length; colIndex++) {
106
- const col = this.columnDefs[colIndex];
107
- // Check if this column should be skipped due to previous spanning
108
- if (currentColIndex > colIndex) {
109
- continue;
110
- }
111
- // Calculate column span
112
- const colSpan = this.calculateColSpan(col, row, rowIndex, colIndex);
113
- if (colSpan > 0) {
114
- const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;
115
- cells.push(html `
116
- <div class="grid-cell" style="${cellStyle}">
117
- <span>${row[col.field]}</span>
118
- </div>
119
- `);
120
- currentColIndex += colSpan;
121
- }
63
+ ensureWidths(colCount) {
64
+ if (this.columnWidths.length !== colCount) {
65
+ this.columnWidths = Array(colCount).fill('');
122
66
  }
123
- return html `${cells}`;
124
67
  }
125
- calculateColSpan(col, row, rowIndex, colIndex) {
126
- if (col.colSpan) {
127
- const params = {
128
- data: row,
129
- field: col.field,
130
- rowIndex,
131
- columnIndex: colIndex
132
- };
133
- return col.colSpan(params);
134
- }
135
- return 1;
68
+ firstUpdated() {
69
+ this.setAttribute('role', 'table');
70
+ listenToEventListeners(this, this.onResize, this.slotEl, this._attachObserverAndLayout.bind(this));
136
71
  }
137
- getGridTemplateColumns() {
138
- return this.columnDefs.map((col, index) => {
139
- if (col.width) {
140
- return `${col.width}px`;
141
- }
142
- // Last column takes remaining space
143
- if (index === this.columnDefs.length - 1) {
144
- return '1fr';
145
- }
146
- return 'auto';
147
- }).join(' ');
72
+ _attachObserverAndLayout() {
73
+ this.mo?.disconnect();
74
+ this.mo = new MutationObserver(() => {
75
+ this.scheduleLayout();
76
+ });
77
+ const head = getHead(this.slotEl);
78
+ const body = getBody(this.slotEl);
79
+ if (!head && !body)
80
+ return;
81
+ const target = body ?? this;
82
+ this.mo.observe(target, {
83
+ subtree: true,
84
+ childList: true,
85
+ attributes: true,
86
+ attributeFilter: ['colspan', 'rowspan'],
87
+ });
88
+ layout(this, this.slotEl, this.ensureWidths.bind(this), rebuildTemplate, applyTemplate, this.columnWidths);
148
89
  }
149
90
  render() {
150
- if (!this.columnDefs || this.columnDefs.length === 0) {
151
- return html `
152
- <div class="grid-container">
153
- <div class="grid-empty">
154
- <div class="empty-text">No columns defined</div>
155
- </div>
156
- </div>
157
- `;
158
- }
159
91
  return html `
160
- <div class="grid-container">
161
- ${this.renderHeader()}
162
- ${this.renderBody()}
92
+ <div>
93
+ <slot></slot>
94
+ <div class="nile-resize-start"></div>
95
+ <div class="nile-resize-end"></div>
163
96
  </div>
164
97
  `;
165
98
  }
99
+ disconnectedCallback() {
100
+ super.disconnectedCallback?.();
101
+ this.mo?.disconnect();
102
+ if (this.raf)
103
+ cancelAnimationFrame(this.raf);
104
+ removeEventListeners(this, this.onResize, this.slotEl, this._attachObserverAndLayout.bind(this));
105
+ }
166
106
  };
167
- NileGrid.styles = styles;
168
107
  __decorate([
169
- property({ type: Array, attribute: 'columnDefs' })
170
- ], NileGrid.prototype, "columnDefs", void 0);
108
+ property({ type: Array, attribute: true })
109
+ ], NileGrid.prototype, "customWidths", void 0);
110
+ __decorate([
111
+ state()
112
+ ], NileGrid.prototype, "colTemplate", void 0);
113
+ __decorate([
114
+ state()
115
+ ], NileGrid.prototype, "columnWidths", void 0);
116
+ __decorate([
117
+ query('slot')
118
+ ], NileGrid.prototype, "slotEl", void 0);
171
119
  __decorate([
172
- property({ type: Array, attribute: 'rowData' })
173
- ], NileGrid.prototype, "rowData", void 0);
120
+ query('.nile-resize-start')
121
+ ], NileGrid.prototype, "resizeStart", void 0);
174
122
  __decorate([
175
- property({ type: Object, attribute: 'gridOptions' })
176
- ], NileGrid.prototype, "gridOptions", void 0);
123
+ query('.nile-resize-end')
124
+ ], NileGrid.prototype, "resizeEnd", void 0);
177
125
  NileGrid = __decorate([
178
126
  customElement('nile-grid')
179
127
  ], NileGrid);
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.ts"],"names":[],"mappings":"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","sourcesContent":["import { customElement, property } from 'lit/decorators.js';\nimport { html, TemplateResult } from 'lit';\nimport { styles } from './nile-grid.css';\nimport type { CSSResultGroup } from 'lit';\nimport NileElement from '../internal/nile-element';\nimport { virtualize } from '@lit-labs/virtualizer/virtualize.js';\nimport type { ColumnDef, GridOptions, GridApi, GridReadyEvent } from './types.js';\nimport { GridRenderer } from './renderer.js';\nimport { ResizeHandler } from './resize-handler.js';\n\n/**\n * @summary A simple data grid component\n * @status stable\n * @since 2.0\n *\n * @event grid-ready - Emitted when the grid is ready\n */\n\n@customElement('nile-grid')\nexport class NileGrid extends NileElement {\n static styles: CSSResultGroup = styles;\n\n /** Column definitions for the grid */\n @property({ type: Array, attribute: 'columnDefs' }) columnDefs: ColumnDef[] = [];\n\n /** Row data to display in the grid */\n @property({ type: Array, attribute: 'rowData' }) rowData: any[] = [];\n\n /** Grid options for configuration */\n @property({ type: Object, attribute: 'gridOptions' }) gridOptions: GridOptions = {};\n\n private gridApi: GridApi | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeGridApi();\n }\n\n firstUpdated() {\n this.emitGridReady();\n }\n\n private initializeGridApi() {\n this.gridApi = {\n getSelectedRows: () => [],\n setRowData: (data: any[]) => {\n this.rowData = data;\n this.requestUpdate();\n },\n setColumnDefs: (defs: ColumnDef[]) => {\n this.columnDefs = defs;\n this.requestUpdate();\n }\n };\n }\n\n private emitGridReady() {\n if (this.gridApi) {\n const event: GridReadyEvent = {\n api: this.gridApi,\n type: 'gridReady'\n };\n this.emit('grid-ready', event);\n }\n }\n\n private handleResizeStart(event: MouseEvent, col: ColumnDef, columnIndex: number): void {\n ResizeHandler.handleResizeStart(\n event, \n col, \n columnIndex, \n this.columnDefs, \n this.gridOptions, \n () => this.requestUpdate()\n );\n }\n\n private renderHeader(): TemplateResult {\n return html`\n <div class=\"grid-header\" style=\"grid-template-columns: ${this.getGridTemplateColumns()};\">\n ${this.columnDefs.map((col, index) => html`\n <div class=\"grid-header-cell\">\n <span>${col.headerName || col.field}</span>\n ${this.shouldShowResizeHandle(col) ? html`\n <div \n class=\"grid-resize-handle\"\n @mousedown=${(e: MouseEvent) => this.handleResizeStart(e, col, index)}\n title=\"Drag to resize column\"\n ></div>\n ` : ''}\n </div>\n `)}\n </div>\n `;\n }\n\n private shouldShowResizeHandle(col: any): boolean {\n if (!this.gridOptions.enableColResize) return false;\n if (col.resizable === false) return false;\n return true;\n }\n\n private renderBody(): TemplateResult {\n if (this.gridOptions.enableVirtualScroll && this.rowData.length > 0) {\n return html`\n <div class=\"grid-body\">\n ${virtualize({\n items: this.rowData,\n renderItem: (row: any, rowIndex: number) => html`\n <div class=\"grid-row\" style=\"grid-template-columns: ${this.getGridTemplateColumns()};\">\n ${this.renderRowCells(row, rowIndex)}\n </div>\n `,\n scroller: true,\n })}\n </div>\n `;\n }\n\n return GridRenderer.renderBody(\n this.rowData,\n this.columnDefs,\n false,\n () => html``\n );\n }\n\n private renderRowCells(row: any, rowIndex: number): TemplateResult {\n const cells: TemplateResult[] = [];\n let currentColIndex = 0;\n\n for (let colIndex = 0; colIndex < this.columnDefs.length; colIndex++) {\n const col = this.columnDefs[colIndex];\n \n // Check if this column should be skipped due to previous spanning\n if (currentColIndex > colIndex) {\n continue;\n }\n\n // Calculate column span\n const colSpan = this.calculateColSpan(col, row, rowIndex, colIndex);\n \n if (colSpan > 0) {\n const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;\n \n cells.push(html`\n <div class=\"grid-cell\" style=\"${cellStyle}\">\n <span>${row[col.field]}</span>\n </div>\n `);\n \n currentColIndex += colSpan;\n }\n }\n\n return html`${cells}`;\n }\n\n private calculateColSpan(col: any, row: any, rowIndex: number, colIndex: number): number {\n if (col.colSpan) {\n const params = {\n data: row,\n field: col.field,\n rowIndex,\n columnIndex: colIndex\n };\n return col.colSpan(params);\n }\n return 1;\n }\n\n private getGridTemplateColumns(): string {\n return this.columnDefs.map((col, index) => {\n if (col.width) {\n return `${col.width}px`;\n }\n // Last column takes remaining space\n if (index === this.columnDefs.length - 1) {\n return '1fr';\n }\n return 'auto';\n }).join(' ');\n }\n\n render(): TemplateResult {\n if (!this.columnDefs || this.columnDefs.length === 0) {\n return html`\n <div class=\"grid-container\">\n <div class=\"grid-empty\">\n <div class=\"empty-text\">No columns defined</div>\n </div>\n </div>\n `;\n }\n\n return html`\n <div class=\"grid-container\">\n ${this.renderHeader()}\n ${this.renderBody()}\n </div>\n `;\n }\n}\n\nexport default NileGrid;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid': NileGrid;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-grid.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './nile-grid.css';\nimport NileElement from '../internal/nile-element';\nimport {\n resizeLinesHandler,\n listenToEventListeners,\n removeEventListeners,\n getHead,\n getBody,\n rebuildTemplate,\n applyTemplate,\n layout,\n} from './nile-grid.utils';\n\n/**\n * Nile grid component.\n *\n * @tag nile-grid\n *\n */\n@customElement('nile-grid')\nexport class NileGrid extends NileElement {\n /**\n * The styles for nile-grid\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n /** User can pass custom widths for the columns */\n @property({ type: Array, attribute: true }) customWidths: number[] = [];\n\n /** To set the grid template columns in rebuildTemplate method */\n @state() public colTemplate = '';\n\n /** To store the column widths in the beginning and after resizing */\n @state() private columnWidths: number[] = [...this.customWidths];\n\n /** To get the slot element */\n @query('slot') private slotEl!: HTMLSlotElement;\n\n /** To get the first resize line to show the resize handle */\n @query('.nile-resize-start') resizeStart: HTMLElement;\n\n /** To get the last resize line to show the resize handle */\n @query('.nile-resize-end') resizeEnd: HTMLElement;\n\n /** To store the mutation observer */\n private mo?: MutationObserver;\n\n /** To store the request animation frame */\n private raf = 0;\n\n private scheduleLayout() {\n if (this.raf) cancelAnimationFrame(this.raf);\n this.raf = requestAnimationFrame(() => {\n this.raf = 0;\n layout(\n this,\n this.slotEl,\n this.ensureWidths.bind(this),\n rebuildTemplate,\n applyTemplate,\n this.columnWidths\n );\n });\n }\n\n private ensureWidths(colCount: number) {\n if (this.columnWidths.length !== colCount) {\n this.columnWidths = Array(colCount).fill('');\n }\n }\n\n private onResize = (e: Event) => {\n const { col, widthPx } = (e as CustomEvent).detail as {\n col: number;\n widthPx: number;\n };\n let w: any;\n const floor = 60;\n\n if (\n (e.target as HTMLElement).getAttribute('colspan') &&\n parseInt((e.target as HTMLElement).getAttribute('colspan')!) > 1\n ) {\n w = Math.max(floor, Math.round(widthPx - this.columnWidths[col - 1]));\n } else {\n w = Math.max(floor, Math.round(widthPx));\n }\n this.columnWidths[col] = w;\n resizeLinesHandler(\n this.resizeStart,\n this.resizeEnd,\n col,\n widthPx,\n this.scrollHeight,\n this.columnWidths,\n e\n );\n this.colTemplate = rebuildTemplate(\n this.columnWidths.length,\n this.columnWidths\n );\n applyTemplate(getHead(this.slotEl), getBody(this.slotEl), this.colTemplate);\n };\n\n protected firstUpdated() {\n this.setAttribute('role', 'table');\n listenToEventListeners(\n this,\n this.onResize,\n this.slotEl,\n this._attachObserverAndLayout.bind(this)\n );\n }\n\n private _attachObserverAndLayout() {\n this.mo?.disconnect();\n this.mo = new MutationObserver(() => {\n this.scheduleLayout();\n });\n\n const head = getHead(this.slotEl);\n const body = getBody(this.slotEl);\n if (!head && !body) return;\n\n const target = body ?? this;\n this.mo.observe(target, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['colspan', 'rowspan'],\n });\n layout(\n this,\n this.slotEl,\n this.ensureWidths.bind(this),\n rebuildTemplate,\n applyTemplate,\n this.columnWidths\n );\n }\n\n public render(): TemplateResult {\n return html`\n <div>\n <slot></slot>\n <div class=\"nile-resize-start\"></div>\n <div class=\"nile-resize-end\"></div>\n </div>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n this.mo?.disconnect();\n\n if (this.raf) cancelAnimationFrame(this.raf);\n removeEventListeners(\n this,\n this.onResize,\n this.slotEl,\n this._attachObserverAndLayout.bind(this)\n );\n }\n\n /* #endregion */\n}\n\nexport default NileGrid;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid': NileGrid;\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { NileGrid } from './nile-grid';
2
+ export declare const resizeLinesHandler: (resizeStart: any, resizeEnd: any, col: number, widthPx: number, scrollHeight: any, columnWidths: any, e: any) => void;
3
+ export declare const listenToEventListeners: (nileGrid: NileGrid, onResize: any, slotEl: any, _attachObserverAndLayout: any) => void;
4
+ export declare const removeEventListeners: (nileGrid: NileGrid, onResize: any, slotEl: any, _attachObserverAndLayout: any) => void;
5
+ export declare const getHead: (slotEl: any) => HTMLElement;
6
+ export declare const getBody: (slotEl: any) => HTMLElement;
7
+ export declare const rebuildTemplate: (colCount: number, columnWidths: number[]) => string;
8
+ export declare const applyTemplate: (head: HTMLElement | null, body: HTMLElement | null, colTemplate: string) => void;
9
+ export declare const layout: (nileGrid: NileGrid, slotEl: any, ensureWidths: any, rebuildTemplate: any, applyTemplate: any, columnWidths: any) => void;
@@ -0,0 +1,170 @@
1
+ export const resizeLinesHandler = (resizeStart, resizeEnd, col, widthPx, scrollHeight, columnWidths, e) => {
2
+ resizeStart.style.display = 'block';
3
+ resizeEnd.style.display = 'block';
4
+ resizeStart.style.height = scrollHeight + 'px';
5
+ resizeEnd.style.height = scrollHeight + 'px';
6
+ if (col === 0) {
7
+ resizeStart.style.left = `${Math.max(60, widthPx) - 6}px`;
8
+ resizeEnd.style.left = `${Math.max(60, widthPx) - 2}px`;
9
+ }
10
+ else {
11
+ let totalWidth = 0;
12
+ if (e.target.getAttribute('colspan') &&
13
+ parseInt(e.target.getAttribute('colspan')) > 1) {
14
+ widthPx = widthPx - columnWidths[col - 1];
15
+ for (let i = 0; i < col; i++) {
16
+ totalWidth += columnWidths[i];
17
+ }
18
+ }
19
+ else {
20
+ for (let i = 0; i < col; i++) {
21
+ totalWidth += columnWidths[i];
22
+ }
23
+ }
24
+ resizeStart.style.left = `${totalWidth + Math.max(60, widthPx) - 6}px`;
25
+ resizeEnd.style.left = `${totalWidth + Math.max(60, widthPx) - 2}px`;
26
+ }
27
+ };
28
+ export const listenToEventListeners = (nileGrid, onResize, slotEl, _attachObserverAndLayout) => {
29
+ nileGrid.addEventListener('nile-resize', onResize);
30
+ nileGrid.addEventListener('nile-resize-start', () => {
31
+ nileGrid.resizeStart.style.display = 'block';
32
+ });
33
+ nileGrid.addEventListener('nile-resize-end', () => {
34
+ nileGrid.resizeStart.style.display = 'none';
35
+ nileGrid.resizeEnd.style.display = 'none';
36
+ });
37
+ slotEl.addEventListener('slotchange', () => _attachObserverAndLayout());
38
+ };
39
+ export const removeEventListeners = (nileGrid, onResize, slotEl, _attachObserverAndLayout) => {
40
+ nileGrid.removeEventListener('nile-resize', onResize);
41
+ nileGrid.removeEventListener('nile-resize-start', () => {
42
+ nileGrid.resizeStart.style.display = 'block';
43
+ });
44
+ nileGrid.removeEventListener('nile-resize-end', () => {
45
+ nileGrid.resizeStart.style.display = 'none';
46
+ nileGrid.resizeEnd.style.display = 'none';
47
+ });
48
+ slotEl.removeEventListener('slotchange', () => _attachObserverAndLayout());
49
+ };
50
+ export const getHead = (slotEl) => {
51
+ const nodes = slotEl?.assignedElements() ?? [];
52
+ return (nodes.find((n) => n.tagName.toLowerCase() === 'nile-grid-head') || null);
53
+ };
54
+ export const getBody = (slotEl) => {
55
+ const nodes = slotEl?.assignedElements() ?? [];
56
+ return (nodes.find((n) => n.tagName.toLowerCase() === 'nile-grid-body') || null);
57
+ };
58
+ export const rebuildTemplate = (colCount, columnWidths) => {
59
+ const parts = [];
60
+ for (let i = 0; i < colCount; i++) {
61
+ const explicit = columnWidths[i];
62
+ if (i === colCount - 1) {
63
+ parts.push(`minmax(${explicit}px, auto)`);
64
+ }
65
+ else {
66
+ parts.push(`${explicit}px`);
67
+ }
68
+ }
69
+ return parts.join(' ');
70
+ };
71
+ export const applyTemplate = (head, body, colTemplate) => {
72
+ if (head)
73
+ head.style.gridTemplateColumns = colTemplate;
74
+ if (body) {
75
+ body.style.gridTemplateColumns = colTemplate;
76
+ body.style.overflowX = 'auto';
77
+ }
78
+ };
79
+ function computeHeadLayout(headRows, carryHead, colCount) {
80
+ headRows.forEach((row, rIdx) => {
81
+ let c = 1;
82
+ const cells = Array.from(row.querySelectorAll('nile-grid-head-item, nile-grid-cell'));
83
+ const rStart = rIdx + 1;
84
+ cells.forEach(cell => {
85
+ while (carryHead[c - 1] > 0)
86
+ c++;
87
+ const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);
88
+ const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);
89
+ const cStart = c, cEnd = c + colspan;
90
+ const rEnd = rStart + rowspan;
91
+ cell.style.gridColumn = `${cStart} / ${cEnd}`;
92
+ cell.style.gridRow = `${rStart} / ${rEnd}`;
93
+ cell.dataset.cStart = String(cStart);
94
+ for (let k = 0; k < colspan; k++) {
95
+ const idx = c - 1 + k;
96
+ carryHead[idx] = Math.max(carryHead[idx] || 0, rowspan);
97
+ }
98
+ c = cEnd;
99
+ colCount = Math.max(colCount, cEnd - 1);
100
+ });
101
+ for (let i = 0; i < carryHead.length; i++)
102
+ if (carryHead[i] > 0)
103
+ carryHead[i]--;
104
+ });
105
+ return colCount;
106
+ }
107
+ function computeBodyLayout(bodyRows, carryBody, colCount) {
108
+ bodyRows.forEach((row, rIdx) => {
109
+ let c = 1;
110
+ const cells = Array.from(row.querySelectorAll('nile-grid-cell, nile-grid-header'));
111
+ const rStart = rIdx + 1;
112
+ let maxRowspan = 1;
113
+ const bg = row.shadowRoot?.querySelector('[data-row-bg]');
114
+ if (bg)
115
+ bg.style.gridColumn = `1 / -1`;
116
+ cells.forEach(cell => {
117
+ while (carryBody[c - 1] > 0)
118
+ c++;
119
+ const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);
120
+ const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);
121
+ const cStart = c, cEnd = c + colspan;
122
+ const rEnd = rStart + rowspan;
123
+ cell.style.gridColumn = `${cStart} / ${cEnd}`;
124
+ cell.style.gridRow = `${rStart} / ${rEnd}`;
125
+ cell.dataset.cStart = String(cStart);
126
+ for (let k = 0; k < colspan; k++) {
127
+ const idx = c - 1 + k;
128
+ carryBody[idx] = Math.max(carryBody[idx] || 0, rowspan);
129
+ }
130
+ maxRowspan = Math.max(maxRowspan, rowspan);
131
+ c = cEnd;
132
+ colCount = Math.max(colCount, cEnd - 1);
133
+ });
134
+ if (bg) {
135
+ const rEnd = rStart + maxRowspan;
136
+ bg.style.gridRow = `${rStart} / ${rEnd}`;
137
+ }
138
+ for (let i = 0; i < carryBody.length; i++)
139
+ if (carryBody[i] > 0)
140
+ carryBody[i]--;
141
+ });
142
+ return colCount;
143
+ }
144
+ function computeColumnWidths(nileGrid, colCount, columnWidths) {
145
+ for (let col = 0; col < colCount; col++) {
146
+ const containerWidth = (nileGrid.getBoundingClientRect().width || 1) - 2;
147
+ columnWidths[col] =
148
+ nileGrid.customWidths[col] || containerWidth / Math.max(colCount, 1);
149
+ }
150
+ }
151
+ export const layout = (nileGrid, slotEl, ensureWidths, rebuildTemplate, applyTemplate, columnWidths) => {
152
+ const head = getHead(slotEl);
153
+ const body = getBody(slotEl);
154
+ if (!body)
155
+ return;
156
+ const headRows = head
157
+ ? Array.from(head.querySelectorAll('nile-grid-row'))
158
+ : [];
159
+ const bodyRows = Array.from(body.querySelectorAll('nile-grid-row'));
160
+ let colCount = 0;
161
+ colCount = computeHeadLayout(headRows, [], colCount);
162
+ colCount = computeBodyLayout(bodyRows, [], colCount);
163
+ computeColumnWidths(nileGrid, colCount, columnWidths);
164
+ ensureWidths(colCount);
165
+ body.style.gridAutoRows = 'auto';
166
+ body.style.overflowY = 'auto';
167
+ nileGrid.colTemplate = rebuildTemplate(colCount, columnWidths);
168
+ applyTemplate(head, body, nileGrid.colTemplate, nileGrid.colTemplate);
169
+ };
170
+ //# sourceMappingURL=nile-grid.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-grid.utils.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\n\nexport const resizeLinesHandler = (\n resizeStart: any,\n resizeEnd: any,\n col: number,\n widthPx: number,\n scrollHeight: any,\n columnWidths: any,\n e: any\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n if (col === 0) {\n resizeStart.style.left = `${Math.max(60, widthPx) - 6}px`;\n resizeEnd.style.left = `${Math.max(60, widthPx) - 2}px`;\n } else {\n let totalWidth = 0;\n if (\n (e.target as HTMLElement).getAttribute('colspan') &&\n parseInt((e.target as HTMLElement).getAttribute('colspan')!) > 1\n ) {\n widthPx = widthPx - columnWidths[col - 1];\n for (let i = 0; i < col; i++) {\n totalWidth += columnWidths[i];\n }\n } else {\n for (let i = 0; i < col; i++) {\n totalWidth += columnWidths[i];\n }\n }\n resizeStart.style.left = `${totalWidth + Math.max(60, widthPx) - 6}px`;\n resizeEnd.style.left = `${totalWidth + Math.max(60, widthPx) - 2}px`;\n }\n};\n\nexport const listenToEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.addEventListener('nile-resize', onResize);\n nileGrid.addEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.addEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.addEventListener('slotchange', () => _attachObserverAndLayout());\n};\n\nexport const removeEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.removeEventListener('nile-resize', onResize);\n nileGrid.removeEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.removeEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.removeEventListener('slotchange', () => _attachObserverAndLayout());\n};\n\nexport const getHead = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-head'\n ) as HTMLElement) || null\n );\n};\n\nexport const getBody = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-body'\n ) as HTMLElement) || null\n );\n};\n\nexport const rebuildTemplate = (\n colCount: number,\n columnWidths: number[]\n): string => {\n const parts: string[] = [];\n\n for (let i = 0; i < colCount; i++) {\n const explicit = columnWidths[i];\n if (i === colCount - 1) {\n parts.push(`minmax(${explicit}px, auto)`);\n } else {\n parts.push(`${explicit}px`);\n }\n }\n return parts.join(' ');\n};\n\nexport const applyTemplate = (\n head: HTMLElement | null,\n body: HTMLElement | null,\n colTemplate: string\n) => {\n if (head) head.style.gridTemplateColumns = colTemplate;\n if (body) {\n body.style.gridTemplateColumns = colTemplate;\n body.style.overflowX = 'auto';\n }\n};\n\nfunction computeHeadLayout(\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number\n): number {\n headRows.forEach((row, rIdx) => {\n let c = 1;\n const cells = Array.from(\n row.querySelectorAll('nile-grid-head-item, nile-grid-cell')\n ) as HTMLElement[];\n const rStart = rIdx + 1;\n\n cells.forEach(cell => {\n while (carryHead[c - 1] > 0) c++;\n const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);\n const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);\n\n const cStart = c,\n cEnd = c + colspan;\n const rEnd = rStart + rowspan;\n\n cell.style.gridColumn = `${cStart} / ${cEnd}`;\n cell.style.gridRow = `${rStart} / ${rEnd}`;\n (cell as any).dataset.cStart = String(cStart);\n\n for (let k = 0; k < colspan; k++) {\n const idx = c - 1 + k;\n carryHead[idx] = Math.max(carryHead[idx] || 0, rowspan);\n }\n c = cEnd;\n colCount = Math.max(colCount, cEnd - 1);\n });\n\n for (let i = 0; i < carryHead.length; i++)\n if (carryHead[i] > 0) carryHead[i]--;\n });\n return colCount;\n}\n\nfunction computeBodyLayout(\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number\n) {\n bodyRows.forEach((row, rIdx) => {\n let c = 1;\n const cells = Array.from(\n row.querySelectorAll('nile-grid-cell, nile-grid-header')\n ) as HTMLElement[];\n const rStart = rIdx + 1;\n let maxRowspan = 1;\n\n const bg = row.shadowRoot?.querySelector<HTMLElement>('[data-row-bg]');\n if (bg) bg.style.gridColumn = `1 / -1`;\n\n cells.forEach(cell => {\n while (carryBody[c - 1] > 0) c++;\n const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);\n const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);\n\n const cStart = c,\n cEnd = c + colspan;\n const rEnd = rStart + rowspan;\n\n cell.style.gridColumn = `${cStart} / ${cEnd}`;\n cell.style.gridRow = `${rStart} / ${rEnd}`;\n (cell as any).dataset.cStart = String(cStart);\n\n for (let k = 0; k < colspan; k++) {\n const idx = c - 1 + k;\n carryBody[idx] = Math.max(carryBody[idx] || 0, rowspan);\n }\n maxRowspan = Math.max(maxRowspan, rowspan);\n c = cEnd;\n colCount = Math.max(colCount, cEnd - 1);\n });\n\n if (bg) {\n const rEnd = rStart + maxRowspan;\n bg.style.gridRow = `${rStart} / ${rEnd}`;\n }\n\n for (let i = 0; i < carryBody.length; i++)\n if (carryBody[i] > 0) carryBody[i]--;\n });\n\n return colCount;\n}\n\nfunction computeColumnWidths(\n nileGrid: NileGrid,\n colCount: number,\n columnWidths: number[]\n) {\n for (let col = 0; col < colCount; col++) {\n const containerWidth = (nileGrid.getBoundingClientRect().width || 1) - 2;\n columnWidths[col] =\n nileGrid.customWidths[col] || containerWidth / Math.max(colCount, 1);\n }\n}\n\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n rebuildTemplate: any,\n applyTemplate: any,\n columnWidths: any\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!body) return;\n\n const headRows = head\n ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[])\n : [];\n const bodyRows = Array.from(\n body.querySelectorAll('nile-grid-row')\n ) as HTMLElement[];\n\n let colCount = 0;\n\n colCount = computeHeadLayout(headRows, [], colCount);\n colCount = computeBodyLayout(bodyRows, [], colCount);\n\n computeColumnWidths(nileGrid, colCount, columnWidths);\n\n ensureWidths(colCount);\n body.style.gridAutoRows = 'auto';\n body.style.overflowY = 'auto';\n nileGrid.colTemplate = rebuildTemplate(colCount, columnWidths);\n applyTemplate(head, body, nileGrid.colTemplate, nileGrid.colTemplate);\n};\n"]}
@@ -0,0 +1 @@
1
+ export { NileGridBody } from './nile-grid-body';
@@ -0,0 +1,2 @@
1
+ export { NileGridBody } from './nile-grid-body';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nile-grid-body/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { NileGridBody } from './nile-grid-body';"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright Aquera Inc 2025
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * GridBody CSS
9
+ */
10
+ export declare const styles: import("lit").CSSResult;
11
+ declare const _default: import("lit").CSSResult[];
12
+ export default _default;