@aquera/nile-elements 1.3.3 → 1.3.4-beta-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 (455) hide show
  1. package/demo/index.html +20 -27
  2. package/dist/{fixture-1c49c014.cjs.js → fixture-54600b35.cjs.js} +2 -2
  3. package/dist/{fixture-1c49c014.cjs.js.map → fixture-54600b35.cjs.js.map} +1 -1
  4. package/dist/fixture-5b79f853.cjs.js +395 -0
  5. package/dist/fixture-5b79f853.cjs.js.map +1 -0
  6. package/dist/fixture-73855806.cjs.js +395 -0
  7. package/dist/fixture-73855806.cjs.js.map +1 -0
  8. package/dist/fixture-90b199c4.esm.js +569 -0
  9. package/dist/{fixture-985bba12.esm.js → fixture-9871e8a9.esm.js} +1 -1
  10. package/dist/fixture-c1d78368.cjs.js +395 -0
  11. package/dist/fixture-c1d78368.cjs.js.map +1 -0
  12. package/dist/fixture-cf7bfcf5.esm.js +569 -0
  13. package/dist/fixture-dbd66009.cjs.js +395 -0
  14. package/dist/fixture-dbd66009.cjs.js.map +1 -0
  15. package/dist/index.js +4 -3
  16. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  17. package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
  18. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  19. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  20. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  21. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  22. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  23. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  24. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  25. package/dist/nile-button/nile-button.test.esm.js +1 -1
  26. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  27. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
  28. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  29. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  30. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  31. package/dist/nile-card/nile-card.test.esm.js +1 -1
  32. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  33. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  34. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  35. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  36. package/dist/nile-chip/nile-chip.esm.js +3 -2
  37. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  38. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  39. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js +2 -0
  40. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js.map +1 -0
  41. package/dist/nile-code-editor/backup_nile-code-editor copy.esm.js +1 -0
  42. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  43. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  44. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  45. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  46. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  47. package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
  48. package/dist/nile-dropdown/portal-utils.cjs.js +1 -1
  49. package/dist/nile-dropdown/portal-utils.cjs.js.map +1 -1
  50. package/dist/nile-dropdown/portal-utils.esm.js +1 -1
  51. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  52. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  53. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  54. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
  55. package/dist/nile-file-preview/nile-file-preview.test.cjs.js +1 -1
  56. package/dist/nile-file-preview/nile-file-preview.test.esm.js +1 -1
  57. package/dist/nile-file-upload/nile-file-upload.test.cjs.js +1 -1
  58. package/dist/nile-file-upload/nile-file-upload.test.esm.js +1 -1
  59. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  60. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
  61. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  62. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
  63. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  64. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
  65. package/dist/nile-grid/nile-grid.types.cjs.js +2 -0
  66. package/dist/nile-grid/nile-grid.types.cjs.js.map +1 -0
  67. package/dist/nile-grid/nile-grid.types.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-hero/nile-hero.test.cjs.js +1 -1
  120. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  121. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  122. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  123. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  124. package/dist/nile-input/nile-input.test.esm.js +1 -1
  125. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  126. package/dist/nile-link/nile-link.test.esm.js +1 -1
  127. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  128. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  129. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  130. package/dist/nile-popover/nile-popover.test.esm.js +1 -1
  131. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  132. package/dist/nile-popup/nile-popup.test.esm.js +1 -1
  133. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  134. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
  135. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  136. package/dist/nile-radio/nile-radio.test.esm.js +1 -1
  137. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  138. package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
  139. package/dist/nile-rich-text-editor/utils.cjs.js +2 -0
  140. package/dist/nile-rich-text-editor/utils.cjs.js.map +1 -0
  141. package/dist/nile-rich-text-editor/utils.esm.js +1 -0
  142. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  143. package/dist/nile-select/nile-select.test.esm.js +1 -1
  144. package/dist/nile-sidebar/index.cjs.js +2 -0
  145. package/dist/nile-sidebar/index.cjs.js.map +1 -0
  146. package/dist/nile-sidebar/index.esm.js +75 -0
  147. package/dist/nile-sidebar-menu/index.cjs.js +2 -0
  148. package/dist/nile-sidebar-menu/index.cjs.js.map +1 -0
  149. package/dist/nile-sidebar-menu/index.esm.js +1 -0
  150. package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js +2 -0
  151. package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js.map +1 -0
  152. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js +2 -0
  153. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js.map +1 -0
  154. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.esm.js +38 -0
  155. package/dist/nile-sidebar-menu/nile-sidebar-menu.esm.js +10 -0
  156. package/dist/nile-sidebar-menu-items/index.cjs.js +2 -0
  157. package/dist/nile-sidebar-menu-items/index.cjs.js.map +1 -0
  158. package/dist/nile-sidebar-menu-items/index.esm.js +1 -0
  159. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js +2 -0
  160. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js.map +1 -0
  161. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js +2 -0
  162. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js.map +1 -0
  163. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.esm.js +36 -0
  164. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.esm.js +15 -0
  165. package/dist/nile-sidebar-wrapper/index.cjs.js +2 -0
  166. package/dist/nile-sidebar-wrapper/index.cjs.js.map +1 -0
  167. package/dist/nile-sidebar-wrapper/index.esm.js +1 -0
  168. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js +2 -0
  169. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js.map +1 -0
  170. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js +2 -0
  171. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js.map +1 -0
  172. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.esm.js +105 -0
  173. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.esm.js +16 -0
  174. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  175. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
  176. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  177. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  178. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  179. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
  180. package/dist/nile-virtual-select/group-manager.cjs.js +2 -0
  181. package/dist/nile-virtual-select/group-manager.cjs.js.map +1 -0
  182. package/dist/nile-virtual-select/group-manager.esm.js +1 -0
  183. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +1 -1
  184. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +1 -1
  185. package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js +2 -0
  186. package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js.map +1 -0
  187. package/dist/nile-virtual-select/temp_nile-virtual-select copy.esm.js +231 -0
  188. package/dist/scopedElementsWrapper-1bff26ef.cjs.js +2 -0
  189. package/dist/scopedElementsWrapper-1bff26ef.cjs.js.map +1 -0
  190. package/dist/scopedElementsWrapper-4c29be11.esm.js +7 -0
  191. package/dist/scopedElementsWrapper-a112fc73.cjs.js +6 -0
  192. package/dist/scopedElementsWrapper-a112fc73.cjs.js.map +1 -0
  193. package/dist/scopedElementsWrapper-c815042c.cjs.js +2 -0
  194. package/dist/scopedElementsWrapper-c815042c.cjs.js.map +1 -0
  195. package/dist/src/internal/portal-manager.d.ts +53 -0
  196. package/dist/src/internal/portal-manager.js +196 -0
  197. package/dist/src/internal/portal-manager.js.map +1 -0
  198. package/dist/src/internal/portal.d.ts +60 -0
  199. package/dist/src/internal/portal.js +199 -0
  200. package/dist/src/internal/portal.js.map +1 -0
  201. package/dist/src/internal/resizable-helper.d.ts +59 -0
  202. package/dist/src/internal/resizable-helper.js +115 -0
  203. package/dist/src/internal/resizable-helper.js.map +1 -0
  204. package/dist/src/internal/resizable-styles.d.ts +16 -0
  205. package/dist/src/internal/resizable-styles.js +144 -0
  206. package/dist/src/internal/resizable-styles.js.map +1 -0
  207. package/dist/src/internal/virtualizer-error-handler.d.ts +30 -0
  208. package/dist/src/internal/virtualizer-error-handler.js +82 -0
  209. package/dist/src/internal/virtualizer-error-handler.js.map +1 -0
  210. package/dist/src/lib/index.d.ts +7 -0
  211. package/dist/src/lib/index.js +8 -0
  212. package/dist/src/lib/index.js.map +1 -0
  213. package/dist/src/lib/virtualize.d.ts +32 -0
  214. package/dist/src/lib/virtualize.js +105 -0
  215. package/dist/src/lib/virtualize.js.map +1 -0
  216. package/dist/src/lib/virtualize.test.d.ts +7 -0
  217. package/dist/src/lib/virtualize.test.js +57 -0
  218. package/dist/src/lib/virtualize.test.js.map +1 -0
  219. package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +17 -0
  220. package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +310 -0
  221. package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +34 -0
  222. package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +31 -0
  223. package/dist/src/nile-chip/nile-chip.js +8 -0
  224. package/dist/src/nile-chip/nile-chip.js.map +1 -1
  225. package/dist/src/nile-code-editor/Old_theme copy.d.ts +191 -0
  226. package/dist/src/nile-code-editor/Old_theme copy.js +193 -0
  227. package/dist/src/nile-code-editor/Old_theme copy.js.map +1 -0
  228. package/dist/src/nile-code-editor/backup_nile-code-editor copy.d.ts +0 -0
  229. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js +675 -0
  230. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js.map +1 -0
  231. package/dist/src/nile-code-editor/theme copy.d.ts +191 -0
  232. package/dist/src/nile-code-editor/theme copy.js +193 -0
  233. package/dist/src/nile-code-editor/theme copy.js.map +1 -0
  234. package/dist/src/nile-dropdown/portal-utils.js +143 -59
  235. package/dist/src/nile-dropdown/portal-utils.js.map +1 -1
  236. package/dist/src/nile-floating-panel/anchor-manager.d.ts +26 -0
  237. package/dist/src/nile-floating-panel/anchor-manager.js +49 -0
  238. package/dist/src/nile-floating-panel/anchor-manager.js.map +1 -0
  239. package/dist/src/nile-floating-panel/content-manager.d.ts +23 -0
  240. package/dist/src/nile-floating-panel/content-manager.js +67 -0
  241. package/dist/src/nile-floating-panel/content-manager.js.map +1 -0
  242. package/dist/src/nile-floating-panel/event-manager.d.ts +38 -0
  243. package/dist/src/nile-floating-panel/event-manager.js +81 -0
  244. package/dist/src/nile-floating-panel/event-manager.js.map +1 -0
  245. package/dist/src/nile-floating-panel/index.d.ts +1 -0
  246. package/dist/src/nile-floating-panel/index.js +2 -0
  247. package/dist/src/nile-floating-panel/index.js.map +1 -0
  248. package/dist/src/nile-floating-panel/nile-floating-panel.css.d.ts +17 -0
  249. package/dist/src/nile-floating-panel/nile-floating-panel.css.js +51 -0
  250. package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +1 -0
  251. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +67 -0
  252. package/dist/src/nile-floating-panel/nile-floating-panel.js +203 -0
  253. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -0
  254. package/dist/src/nile-floating-panel/position-manager.d.ts +47 -0
  255. package/dist/src/nile-floating-panel/position-manager.js +94 -0
  256. package/dist/src/nile-floating-panel/position-manager.js.map +1 -0
  257. package/dist/src/nile-floating-panel/style-manager.d.ts +31 -0
  258. package/dist/src/nile-floating-panel/style-manager.js +74 -0
  259. package/dist/src/nile-floating-panel/style-manager.js.map +1 -0
  260. package/dist/src/nile-floating-panel/types.d.ts +29 -0
  261. package/dist/src/nile-floating-panel/types.js +8 -0
  262. package/dist/src/nile-floating-panel/types.js.map +1 -0
  263. package/dist/src/nile-grid/data-processor.d.ts +37 -0
  264. package/dist/src/nile-grid/data-processor.js +122 -0
  265. package/dist/src/nile-grid/data-processor.js.map +1 -0
  266. package/dist/src/nile-grid/event-handlers.d.ts +35 -0
  267. package/dist/src/nile-grid/event-handlers.js +158 -0
  268. package/dist/src/nile-grid/event-handlers.js.map +1 -0
  269. package/dist/src/nile-grid/nile-grid.types.d.ts +3 -0
  270. package/dist/src/nile-grid/nile-grid.types.js +2 -0
  271. package/dist/src/nile-grid/nile-grid.types.js.map +1 -0
  272. package/dist/src/nile-grid/renderer.d.ts +8 -0
  273. package/dist/src/nile-grid/renderer.js +78 -0
  274. package/dist/src/nile-grid/renderer.js.map +1 -0
  275. package/dist/src/nile-grid/resize-handler.d.ts +4 -0
  276. package/dist/src/nile-grid/resize-handler.js +36 -0
  277. package/dist/src/nile-grid/resize-handler.js.map +1 -0
  278. package/dist/src/nile-grid/types.d.ts +32 -0
  279. package/dist/src/nile-grid/types.js +2 -0
  280. package/dist/src/nile-grid/types.js.map +1 -0
  281. package/dist/src/nile-grid/utils.d.ts +4 -0
  282. package/dist/src/nile-grid/utils.js +32 -0
  283. package/dist/src/nile-grid/utils.js.map +1 -0
  284. package/dist/src/nile-grid-body/index.d.ts +1 -0
  285. package/dist/src/nile-grid-body/index.js +2 -0
  286. package/dist/src/nile-grid-body/index.js.map +1 -0
  287. package/dist/src/nile-grid-body/nile-grid-body.css.d.ts +12 -0
  288. package/dist/src/nile-grid-body/nile-grid-body.css.js +22 -0
  289. package/dist/src/nile-grid-body/nile-grid-body.css.js.map +1 -0
  290. package/dist/src/nile-grid-body/nile-grid-body.d.ts +29 -0
  291. package/dist/src/nile-grid-body/nile-grid-body.js +43 -0
  292. package/dist/src/nile-grid-body/nile-grid-body.js.map +1 -0
  293. package/dist/src/nile-grid-cell-item/index.d.ts +1 -0
  294. package/dist/src/nile-grid-cell-item/index.js +2 -0
  295. package/dist/src/nile-grid-cell-item/index.js.map +1 -0
  296. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.d.ts +12 -0
  297. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +47 -0
  298. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -0
  299. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +36 -0
  300. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +93 -0
  301. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -0
  302. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.d.ts +10 -0
  303. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js +34 -0
  304. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +1 -0
  305. package/dist/src/nile-grid-head/index.d.ts +1 -0
  306. package/dist/src/nile-grid-head/index.js +2 -0
  307. package/dist/src/nile-grid-head/index.js.map +1 -0
  308. package/dist/src/nile-grid-head/nile-grid-head.css.d.ts +12 -0
  309. package/dist/src/nile-grid-head/nile-grid-head.css.js +19 -0
  310. package/dist/src/nile-grid-head/nile-grid-head.css.js.map +1 -0
  311. package/dist/src/nile-grid-head/nile-grid-head.d.ts +28 -0
  312. package/dist/src/nile-grid-head/nile-grid-head.js +41 -0
  313. package/dist/src/nile-grid-head/nile-grid-head.js.map +1 -0
  314. package/dist/src/nile-grid-head-item/index.d.ts +1 -0
  315. package/dist/src/nile-grid-head-item/index.js +2 -0
  316. package/dist/src/nile-grid-head-item/index.js.map +1 -0
  317. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.d.ts +12 -0
  318. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +46 -0
  319. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -0
  320. package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +37 -0
  321. package/dist/src/nile-grid-head-item/nile-grid-head-item.js +100 -0
  322. package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +1 -0
  323. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.d.ts +10 -0
  324. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js +34 -0
  325. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js.map +1 -0
  326. package/dist/src/nile-grid-row/index.d.ts +1 -0
  327. package/dist/src/nile-grid-row/index.js +2 -0
  328. package/dist/src/nile-grid-row/index.js.map +1 -0
  329. package/dist/src/nile-grid-row/nile-grid-row.css.d.ts +12 -0
  330. package/dist/src/nile-grid-row/nile-grid-row.css.js +27 -0
  331. package/dist/src/nile-grid-row/nile-grid-row.css.js.map +1 -0
  332. package/dist/src/nile-grid-row/nile-grid-row.d.ts +29 -0
  333. package/dist/src/nile-grid-row/nile-grid-row.js +45 -0
  334. package/dist/src/nile-grid-row/nile-grid-row.js.map +1 -0
  335. package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +47 -0
  336. package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +16 -0
  337. package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +75 -0
  338. package/dist/src/nile-menu/portal-manager.d.ts +39 -0
  339. package/dist/src/nile-menu/portal-manager.js +340 -0
  340. package/dist/src/nile-menu/portal-manager.js.map +1 -0
  341. package/dist/src/nile-menu/portal-utils.d.ts +21 -0
  342. package/dist/src/nile-menu/portal-utils.js +128 -0
  343. package/dist/src/nile-menu/portal-utils.js.map +1 -0
  344. package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +22 -0
  345. package/dist/src/nile-popover/popover-portal-handler.d.ts +21 -0
  346. package/dist/src/nile-popover/popover-portal-handler.js +106 -0
  347. package/dist/src/nile-popover/popover-portal-handler.js.map +1 -0
  348. package/dist/src/nile-portal-wrapper/index.d.ts +1 -0
  349. package/dist/src/nile-portal-wrapper/index.js +2 -0
  350. package/dist/src/nile-portal-wrapper/index.js.map +1 -0
  351. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.d.ts +47 -0
  352. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js +451 -0
  353. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js.map +1 -0
  354. package/dist/src/nile-rich-text-editor/utils.d.ts +13 -0
  355. package/dist/src/nile-rich-text-editor/utils.js +538 -0
  356. package/dist/src/nile-rich-text-editor/utils.js.map +1 -0
  357. package/dist/src/nile-select/body-append-manager.d.ts +90 -0
  358. package/dist/src/nile-select/body-append-manager.js +298 -0
  359. package/dist/src/nile-select/body-append-manager.js.map +1 -0
  360. package/dist/src/nile-sidebar/index.d.ts +28 -0
  361. package/dist/src/nile-sidebar/index.js +116 -0
  362. package/dist/src/nile-sidebar/index.js.map +1 -0
  363. package/dist/src/nile-sidebar-menu/index.d.ts +1 -0
  364. package/dist/src/nile-sidebar-menu/index.js +2 -0
  365. package/dist/src/nile-sidebar-menu/index.js.map +1 -0
  366. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.d.ts +12 -0
  367. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.js +47 -0
  368. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.js.map +1 -0
  369. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.d.ts +37 -0
  370. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.js +84 -0
  371. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.js.map +1 -0
  372. package/dist/src/nile-sidebar-menu-items/index.d.ts +1 -0
  373. package/dist/src/nile-sidebar-menu-items/index.js +2 -0
  374. package/dist/src/nile-sidebar-menu-items/index.js.map +1 -0
  375. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.d.ts +12 -0
  376. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.js +45 -0
  377. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.js.map +1 -0
  378. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.d.ts +35 -0
  379. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.js +78 -0
  380. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.js.map +1 -0
  381. package/dist/src/nile-sidebar-wrapper/index.d.ts +1 -0
  382. package/dist/src/nile-sidebar-wrapper/index.js +2 -0
  383. package/dist/src/nile-sidebar-wrapper/index.js.map +1 -0
  384. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.d.ts +12 -0
  385. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.js +114 -0
  386. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.js.map +1 -0
  387. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.d.ts +35 -0
  388. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.js +89 -0
  389. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.js.map +1 -0
  390. package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +9 -0
  391. package/dist/src/nile-table-body/virtual-scroll-helper.js +24 -0
  392. package/dist/src/nile-table-body/virtual-scroll-helper.js.map +1 -0
  393. package/dist/src/nile-virtual-select/body-append-helper.d.ts +16 -0
  394. package/dist/src/nile-virtual-select/body-append-helper.js +95 -0
  395. package/dist/src/nile-virtual-select/body-append-helper.js.map +1 -0
  396. package/dist/src/nile-virtual-select/group-manager.d.ts +32 -0
  397. package/dist/src/nile-virtual-select/group-manager.js +134 -0
  398. package/dist/src/nile-virtual-select/group-manager.js.map +1 -0
  399. package/dist/src/nile-virtual-select/portal-utils.d.ts +65 -0
  400. package/dist/src/nile-virtual-select/portal-utils.js +376 -0
  401. package/dist/src/nile-virtual-select/portal-utils.js.map +1 -0
  402. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.d.ts +273 -0
  403. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js +1305 -0
  404. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js.map +1 -0
  405. package/dist/src/nile-virtual-select/virtualizer-error-handler.d.ts +21 -0
  406. package/dist/src/nile-virtual-select/virtualizer-error-handler.js +56 -0
  407. package/dist/src/nile-virtual-select/virtualizer-error-handler.js.map +1 -0
  408. package/dist/src/nile-virtual-select-disabled/index.d.ts +1 -0
  409. package/dist/src/nile-virtual-select-disabled/index.js +2 -0
  410. package/dist/src/nile-virtual-select-disabled/index.js.map +1 -0
  411. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.d.ts +12 -0
  412. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js +538 -0
  413. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js.map +1 -0
  414. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.d.ts +299 -0
  415. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js +1441 -0
  416. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js.map +1 -0
  417. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.d.ts +7 -0
  418. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js +631 -0
  419. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js.map +1 -0
  420. package/dist/src/nile-virtual-select-disabled/portal-manager.d.ts +45 -0
  421. package/dist/src/nile-virtual-select-disabled/portal-manager.js +333 -0
  422. package/dist/src/nile-virtual-select-disabled/portal-manager.js.map +1 -0
  423. package/dist/src/nile-virtual-select-disabled/renderer.d.ts +16 -0
  424. package/dist/src/nile-virtual-select-disabled/renderer.js +79 -0
  425. package/dist/src/nile-virtual-select-disabled/renderer.js.map +1 -0
  426. package/dist/src/nile-virtual-select-disabled/search-manager.d.ts +12 -0
  427. package/dist/src/nile-virtual-select-disabled/search-manager.js +40 -0
  428. package/dist/src/nile-virtual-select-disabled/search-manager.js.map +1 -0
  429. package/dist/src/nile-virtual-select-disabled/selection-manager.d.ts +12 -0
  430. package/dist/src/nile-virtual-select-disabled/selection-manager.js +64 -0
  431. package/dist/src/nile-virtual-select-disabled/selection-manager.js.map +1 -0
  432. package/dist/src/nile-virtual-select-disabled/types.d.ts +50 -0
  433. package/dist/src/nile-virtual-select-disabled/types.js +8 -0
  434. package/dist/src/nile-virtual-select-disabled/types.js.map +1 -0
  435. package/dist/src/nile-virtual-table-body/index.d.ts +2 -0
  436. package/dist/src/nile-virtual-table-body/index.js +3 -0
  437. package/dist/src/nile-virtual-table-body/index.js.map +1 -0
  438. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +1 -0
  439. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +44 -0
  440. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +1 -0
  441. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +50 -0
  442. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +135 -0
  443. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +1 -0
  444. package/dist/src/nile-virtual-table-body/renderer.d.ts +16 -0
  445. package/dist/src/nile-virtual-table-body/renderer.js +49 -0
  446. package/dist/src/nile-virtual-table-body/renderer.js.map +1 -0
  447. package/dist/src/utilities/stepper-utils.d.ts +71 -0
  448. package/dist/src/utilities/stepper-utils.js +108 -0
  449. package/dist/src/utilities/stepper-utils.js.map +1 -0
  450. package/dist/src/version.js +1 -1
  451. package/dist/src/version.js.map +1 -1
  452. package/dist/tsconfig.tsbuildinfo +1 -1
  453. package/package.json +1 -1
  454. package/src/nile-chip/nile-chip.ts +9 -0
  455. package/src/nile-dropdown/portal-utils.ts +153 -61
@@ -0,0 +1,74 @@
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 { panelContainerStyles } from './nile-floating-panel.css';
8
+ /**
9
+ * Manages style injection for the floating panel
10
+ */
11
+ export class StyleManager {
12
+ constructor() {
13
+ this.injectedStyleId = null;
14
+ }
15
+ /**
16
+ * Injects styles into the document head
17
+ */
18
+ injectStyles(componentStyles) {
19
+ // Check if styles are already injected globally
20
+ const globalStyleId = 'nile-floating-panel-styles-global';
21
+ if (StyleManager.injectedStyleIds.has(globalStyleId)) {
22
+ return; // Styles already injected by another instance
23
+ }
24
+ if (this.injectedStyleId && document.getElementById(this.injectedStyleId)) {
25
+ return; // Styles already injected for this instance
26
+ }
27
+ this.injectedStyleId = globalStyleId;
28
+ StyleManager.injectedStyleIds.add(globalStyleId);
29
+ const cssText = this.extractCSSFromStyles(componentStyles);
30
+ const styleElement = document.createElement('style');
31
+ styleElement.id = globalStyleId;
32
+ styleElement.textContent = cssText;
33
+ document.head.appendChild(styleElement);
34
+ }
35
+ /**
36
+ * Extracts CSS text from CSSResultArray
37
+ */
38
+ extractCSSFromStyles(styles) {
39
+ // Extract panel container styles for injection
40
+ const containerStyles = panelContainerStyles.cssText || '';
41
+ // Also extract component styles if needed
42
+ const componentStyles = styles
43
+ .map(style => {
44
+ if (typeof style === 'string') {
45
+ return style;
46
+ }
47
+ // For CSSResult, get the cssText
48
+ if (style && 'cssText' in style) {
49
+ return style.cssText;
50
+ }
51
+ return '';
52
+ })
53
+ .join('\n');
54
+ // Return both, prioritizing container styles
55
+ return containerStyles + '\n' + componentStyles;
56
+ }
57
+ /**
58
+ * Cleans up injected styles (only if this is the last instance)
59
+ * Note: In production, you might want a shared style manager
60
+ */
61
+ cleanupStyles() {
62
+ // For now, we leave styles injected to avoid flicker
63
+ // In a production app, you might want to use a shared style manager
64
+ // that tracks instance count and removes styles when count reaches 0
65
+ }
66
+ /**
67
+ * Gets the injected style ID
68
+ */
69
+ getInjectedStyleId() {
70
+ return this.injectedStyleId;
71
+ }
72
+ }
73
+ StyleManager.injectedStyleIds = new Set();
74
+ //# sourceMappingURL=style-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/style-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;GAEG;AACH,MAAM,OAAO,YAAY;IAAzB;QACU,oBAAe,GAAkB,IAAI,CAAC;IAqEhD,CAAC;IAlEC;;OAEG;IACH,YAAY,CAAC,eAA+B;QAC1C,gDAAgD;QAChD,MAAM,aAAa,GAAG,mCAAmC,CAAC;QAC1D,IAAI,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,8CAA8C;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,4CAA4C;QACtD,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;QACrC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,YAAY,CAAC,EAAE,GAAG,aAAa,CAAC;QAChC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,MAAsB;QACjD,+CAA+C;QAC/C,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,IAAI,EAAE,CAAC;QAE3D,0CAA0C;QAC1C,MAAM,eAAe,GAAG,MAAM;aAC3B,GAAG,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,iCAAiC;YACjC,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBAChC,OAAQ,KAAa,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,6CAA6C;QAC7C,OAAO,eAAe,GAAG,IAAI,GAAG,eAAe,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,qDAAqD;QACrD,oEAAoE;QACpE,qEAAqE;IACvE,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;;AAnEc,6BAAgB,GAAgB,IAAI,GAAG,EAAE,AAAzB,CAA0B","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 type { CSSResultArray } from 'lit';\nimport { panelContainerStyles } from './nile-floating-panel.css';\n\n/**\n * Manages style injection for the floating panel\n */\nexport class StyleManager {\n private injectedStyleId: string | null = null;\n private static injectedStyleIds: Set<string> = new Set();\n\n /**\n * Injects styles into the document head\n */\n injectStyles(componentStyles: CSSResultArray): void {\n // Check if styles are already injected globally\n const globalStyleId = 'nile-floating-panel-styles-global';\n if (StyleManager.injectedStyleIds.has(globalStyleId)) {\n return; // Styles already injected by another instance\n }\n\n if (this.injectedStyleId && document.getElementById(this.injectedStyleId)) {\n return; // Styles already injected for this instance\n }\n\n this.injectedStyleId = globalStyleId;\n StyleManager.injectedStyleIds.add(globalStyleId);\n\n const cssText = this.extractCSSFromStyles(componentStyles);\n\n const styleElement = document.createElement('style');\n styleElement.id = globalStyleId;\n styleElement.textContent = cssText;\n document.head.appendChild(styleElement);\n }\n\n /**\n * Extracts CSS text from CSSResultArray\n */\n private extractCSSFromStyles(styles: CSSResultArray): string {\n // Extract panel container styles for injection\n const containerStyles = panelContainerStyles.cssText || '';\n\n // Also extract component styles if needed\n const componentStyles = styles\n .map(style => {\n if (typeof style === 'string') {\n return style;\n }\n // For CSSResult, get the cssText\n if (style && 'cssText' in style) {\n return (style as any).cssText;\n }\n return '';\n })\n .join('\\n');\n\n // Return both, prioritizing container styles\n return containerStyles + '\\n' + componentStyles;\n }\n\n /**\n * Cleans up injected styles (only if this is the last instance)\n * Note: In production, you might want a shared style manager\n */\n cleanupStyles(): void {\n // For now, we leave styles injected to avoid flicker\n // In a production app, you might want to use a shared style manager\n // that tracks instance count and removes styles when count reaches 0\n }\n\n /**\n * Gets the injected style ID\n */\n getInjectedStyleId(): string | null {\n return this.injectedStyleId;\n }\n}\n\n"]}
@@ -0,0 +1,29 @@
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
+ * Position options for the floating panel
9
+ */
10
+ export type FloatingPanelPosition = 'top' | 'bottom' | 'left' | 'right';
11
+ /**
12
+ * Anchor type - can be an HTMLElement or a string selector
13
+ */
14
+ export type FloatingPanelAnchor = HTMLElement | string | null;
15
+ /**
16
+ * Configuration for floating panel positioning
17
+ */
18
+ export interface FloatingPanelPositionConfig {
19
+ position: FloatingPanelPosition;
20
+ offset?: number;
21
+ shiftPadding?: number;
22
+ }
23
+ /**
24
+ * Configuration for floating panel content
25
+ */
26
+ export interface FloatingPanelContentConfig {
27
+ slotContent: Node[];
28
+ dataContent: string;
29
+ }
@@ -0,0 +1,8 @@
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
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","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\n/**\n * Position options for the floating panel\n */\nexport type FloatingPanelPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Anchor type - can be an HTMLElement or a string selector\n */\nexport type FloatingPanelAnchor = HTMLElement | string | null;\n\n/**\n * Configuration for floating panel positioning\n */\nexport interface FloatingPanelPositionConfig {\n position: FloatingPanelPosition;\n offset?: number;\n shiftPadding?: number;\n}\n\n/**\n * Configuration for floating panel content\n */\nexport interface FloatingPanelContentConfig {\n slotContent: Node[];\n dataContent: string;\n}\n\n"]}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
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 type { GridColumnDef, GridRowData, GridOptions } from './types.js';
8
+ export declare class GridDataProcessor {
9
+ private options;
10
+ private pageSize;
11
+ private currentPage;
12
+ private sortField;
13
+ private sortDirection;
14
+ private filterText;
15
+ constructor(options: GridOptions, pageSize?: number);
16
+ setOptions(options: GridOptions): void;
17
+ setPageSize(pageSize: number): void;
18
+ setCurrentPage(page: number): void;
19
+ setSortField(field: string): void;
20
+ setSortDirection(direction: 'asc' | 'desc'): void;
21
+ setFilterText(text: string): void;
22
+ processData(data: GridRowData[], columns: GridColumnDef[]): {
23
+ filteredData: GridRowData[];
24
+ sortedData: GridRowData[];
25
+ paginatedData: GridRowData[];
26
+ totalPages: number;
27
+ };
28
+ private applyFilters;
29
+ private applySorting;
30
+ private applyPagination;
31
+ getSortClass(column: GridColumnDef): string;
32
+ getSortIcon(column: GridColumnDef): string;
33
+ isAllSelected(paginatedData: GridRowData[]): boolean;
34
+ isPartiallySelected(paginatedData: GridRowData[]): boolean;
35
+ getSortField(): string;
36
+ getSortDirection(): 'asc' | 'desc';
37
+ }
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
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
+ export class GridDataProcessor {
8
+ constructor(options, pageSize = 20) {
9
+ this.options = options;
10
+ this.pageSize = pageSize;
11
+ this.currentPage = 1;
12
+ this.sortField = '';
13
+ this.sortDirection = 'asc';
14
+ this.filterText = '';
15
+ }
16
+ setOptions(options) {
17
+ this.options = options;
18
+ }
19
+ setPageSize(pageSize) {
20
+ this.pageSize = pageSize;
21
+ }
22
+ setCurrentPage(page) {
23
+ this.currentPage = page;
24
+ }
25
+ setSortField(field) {
26
+ this.sortField = field;
27
+ }
28
+ setSortDirection(direction) {
29
+ this.sortDirection = direction;
30
+ }
31
+ setFilterText(text) {
32
+ this.filterText = text;
33
+ }
34
+ processData(data, columns) {
35
+ // Apply filtering
36
+ const filteredData = this.applyFilters(data, columns);
37
+ // Apply sorting
38
+ const sortedData = this.applySorting(filteredData, columns);
39
+ // Apply pagination
40
+ const totalPages = Math.ceil(sortedData.length / this.pageSize);
41
+ const paginatedData = this.applyPagination(sortedData);
42
+ return {
43
+ filteredData,
44
+ sortedData,
45
+ paginatedData,
46
+ totalPages
47
+ };
48
+ }
49
+ applyFilters(data, columns) {
50
+ if (!this.filterText || !this.options.enableFiltering) {
51
+ return data;
52
+ }
53
+ return data.filter(row => {
54
+ return columns.some(column => {
55
+ const value = row[column.field];
56
+ if (value == null)
57
+ return false;
58
+ return String(value).toLowerCase().includes(this.filterText.toLowerCase());
59
+ });
60
+ });
61
+ }
62
+ applySorting(data, columns) {
63
+ if (!this.sortField || !this.options.enableSorting) {
64
+ return data;
65
+ }
66
+ const column = columns.find(col => col.field === this.sortField);
67
+ if (!column)
68
+ return data;
69
+ return [...data].sort((a, b) => {
70
+ const aVal = a[column.field];
71
+ const bVal = b[column.field];
72
+ if (aVal == null && bVal == null)
73
+ return 0;
74
+ if (aVal == null)
75
+ return 1;
76
+ if (bVal == null)
77
+ return -1;
78
+ if (typeof aVal === 'string' && typeof bVal === 'string') {
79
+ return this.sortDirection === 'asc'
80
+ ? aVal.localeCompare(bVal)
81
+ : bVal.localeCompare(aVal);
82
+ }
83
+ if (typeof aVal === 'number' && typeof bVal === 'number') {
84
+ return this.sortDirection === 'asc' ? aVal - bVal : bVal - aVal;
85
+ }
86
+ return 0;
87
+ });
88
+ }
89
+ applyPagination(data) {
90
+ if (!this.options.enablePagination) {
91
+ return data;
92
+ }
93
+ const startIndex = (this.currentPage - 1) * this.pageSize;
94
+ const endIndex = startIndex + this.pageSize;
95
+ return data.slice(startIndex, endIndex);
96
+ }
97
+ getSortClass(column) {
98
+ if (this.sortField !== column.field)
99
+ return '';
100
+ return this.sortDirection === 'asc' ? 'sort-asc' : 'sort-desc';
101
+ }
102
+ getSortIcon(column) {
103
+ if (this.sortField !== column.field)
104
+ return '↕';
105
+ return this.sortDirection === 'asc' ? '↑' : '↓';
106
+ }
107
+ isAllSelected(paginatedData) {
108
+ return paginatedData.length > 0 && paginatedData.every(row => row.selected);
109
+ }
110
+ isPartiallySelected(paginatedData) {
111
+ const selectedCount = paginatedData.filter(row => row.selected).length;
112
+ return selectedCount > 0 && selectedCount < paginatedData.length;
113
+ }
114
+ // Getters for event handlers
115
+ getSortField() {
116
+ return this.sortField;
117
+ }
118
+ getSortDirection() {
119
+ return this.sortDirection;
120
+ }
121
+ }
122
+ //# sourceMappingURL=data-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-processor.js","sourceRoot":"","sources":["../../../src/nile-grid/data-processor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\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 type { GridColumnDef, GridRowData, GridOptions } from './types.js';\n\nexport class GridDataProcessor {\n private options: GridOptions;\n private pageSize: number;\n private currentPage: number;\n private sortField: string;\n private sortDirection: 'asc' | 'desc';\n private filterText: string;\n\n constructor(options: GridOptions, pageSize: number = 20) {\n this.options = options;\n this.pageSize = pageSize;\n this.currentPage = 1;\n this.sortField = '';\n this.sortDirection = 'asc';\n this.filterText = '';\n }\n\n setOptions(options: GridOptions): void {\n this.options = options;\n }\n\n setPageSize(pageSize: number): void {\n this.pageSize = pageSize;\n }\n\n setCurrentPage(page: number): void {\n this.currentPage = page;\n }\n\n setSortField(field: string): void {\n this.sortField = field;\n }\n\n setSortDirection(direction: 'asc' | 'desc'): void {\n this.sortDirection = direction;\n }\n\n setFilterText(text: string): void {\n this.filterText = text;\n }\n\n processData(data: GridRowData[], columns: GridColumnDef[]): {\n filteredData: GridRowData[];\n sortedData: GridRowData[];\n paginatedData: GridRowData[];\n totalPages: number;\n } {\n // Apply filtering\n const filteredData = this.applyFilters(data, columns);\n \n // Apply sorting\n const sortedData = this.applySorting(filteredData, columns);\n \n // Apply pagination\n const totalPages = Math.ceil(sortedData.length / this.pageSize);\n const paginatedData = this.applyPagination(sortedData);\n\n return {\n filteredData,\n sortedData,\n paginatedData,\n totalPages\n };\n }\n\n private applyFilters(data: GridRowData[], columns: GridColumnDef[]): GridRowData[] {\n if (!this.filterText || !this.options.enableFiltering) {\n return data;\n }\n\n return data.filter(row => {\n return columns.some(column => {\n const value = row[column.field];\n if (value == null) return false;\n return String(value).toLowerCase().includes(this.filterText.toLowerCase());\n });\n });\n }\n\n private applySorting(data: GridRowData[], columns: GridColumnDef[]): GridRowData[] {\n if (!this.sortField || !this.options.enableSorting) {\n return data;\n }\n\n const column = columns.find(col => col.field === this.sortField);\n if (!column) return data;\n\n return [...data].sort((a, b) => {\n const aVal = a[column.field];\n const bVal = b[column.field];\n \n if (aVal == null && bVal == null) return 0;\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n\n if (typeof aVal === 'string' && typeof bVal === 'string') {\n return this.sortDirection === 'asc' \n ? aVal.localeCompare(bVal)\n : bVal.localeCompare(aVal);\n }\n\n if (typeof aVal === 'number' && typeof bVal === 'number') {\n return this.sortDirection === 'asc' ? aVal - bVal : bVal - aVal;\n }\n\n return 0;\n });\n }\n\n private applyPagination(data: GridRowData[]): GridRowData[] {\n if (!this.options.enablePagination) {\n return data;\n }\n\n const startIndex = (this.currentPage - 1) * this.pageSize;\n const endIndex = startIndex + this.pageSize;\n return data.slice(startIndex, endIndex);\n }\n\n getSortClass(column: GridColumnDef): string {\n if (this.sortField !== column.field) return '';\n return this.sortDirection === 'asc' ? 'sort-asc' : 'sort-desc';\n }\n\n getSortIcon(column: GridColumnDef): string {\n if (this.sortField !== column.field) return '↕';\n return this.sortDirection === 'asc' ? '↑' : '↓';\n }\n\n isAllSelected(paginatedData: GridRowData[]): boolean {\n return paginatedData.length > 0 && paginatedData.every(row => row.selected);\n }\n\n isPartiallySelected(paginatedData: GridRowData[]): boolean {\n const selectedCount = paginatedData.filter(row => row.selected).length;\n return selectedCount > 0 && selectedCount < paginatedData.length;\n }\n\n // Getters for event handlers\n getSortField(): string {\n return this.sortField;\n }\n\n getSortDirection(): 'asc' | 'desc' {\n return this.sortDirection;\n }\n}\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
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 type { GridColumnDef, GridRowData, GridOptions } from './types.js';
8
+ import type { GridDataProcessor } from './data-processor.js';
9
+ export declare class GridEventHandlers {
10
+ private options;
11
+ private dataProcessor;
12
+ private selectedRows;
13
+ private isResizing;
14
+ private resizingColumn;
15
+ private dragStartX;
16
+ private dragStartWidth;
17
+ constructor(options: GridOptions, dataProcessor: GridDataProcessor);
18
+ setOptions(options: GridOptions): void;
19
+ handleKeyDown(event: KeyboardEvent): void;
20
+ handleWheel(event: WheelEvent, updateVirtualScrolling: () => void): void;
21
+ handleColumnSort(column: GridColumnDef, onSort: (field: string, direction: 'asc' | 'desc') => void): void;
22
+ handleColumnFilter(column: GridColumnDef, value: string, onFilter: () => void): void;
23
+ handleRowSelection(row: GridRowData, event: Event, currentData: GridRowData[], onSelectionChange: () => void): void;
24
+ handleHeaderSelectionChange(event: Event, currentData: GridRowData[], onSelectionChange: () => void): void;
25
+ handleRowClick(row: GridRowData, event: Event): void;
26
+ handleCellEdit(row: GridRowData, column: GridColumnDef, value: any, onCellEdit: (row: GridRowData, column: GridColumnDef, oldValue: any, newValue: any) => void): void;
27
+ handleColumnResizeStart(column: GridColumnDef, event: MouseEvent): void;
28
+ private handleColumnResizeMove;
29
+ private handleColumnResizeEnd;
30
+ private handleArrowKeyNavigation;
31
+ private emit;
32
+ getSelectedRows(): GridRowData[];
33
+ isResizingColumn(): boolean;
34
+ getResizingColumn(): GridColumnDef | null;
35
+ }
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
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
+ export class GridEventHandlers {
8
+ constructor(options, dataProcessor) {
9
+ this.selectedRows = [];
10
+ this.isResizing = false;
11
+ this.resizingColumn = null;
12
+ this.dragStartX = 0;
13
+ this.dragStartWidth = 0;
14
+ this.options = options;
15
+ this.dataProcessor = dataProcessor;
16
+ }
17
+ setOptions(options) {
18
+ this.options = options;
19
+ this.dataProcessor.setOptions(options);
20
+ }
21
+ handleKeyDown(event) {
22
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
23
+ event.preventDefault();
24
+ this.handleArrowKeyNavigation(event.key);
25
+ }
26
+ }
27
+ handleWheel(event, updateVirtualScrolling) {
28
+ if (this.options.enableVirtualScrolling) {
29
+ updateVirtualScrolling();
30
+ }
31
+ }
32
+ handleColumnSort(column, onSort) {
33
+ if (!this.options.enableSorting)
34
+ return;
35
+ const currentField = this.dataProcessor.getSortField();
36
+ const currentDirection = this.dataProcessor.getSortDirection();
37
+ let newDirection;
38
+ if (currentField === column.field) {
39
+ newDirection = currentDirection === 'asc' ? 'desc' : 'asc';
40
+ }
41
+ else {
42
+ newDirection = 'asc';
43
+ }
44
+ this.dataProcessor.setSortField(column.field);
45
+ this.dataProcessor.setSortDirection(newDirection);
46
+ onSort(column.field, newDirection);
47
+ }
48
+ handleColumnFilter(column, value, onFilter) {
49
+ if (!this.options.enableFiltering)
50
+ return;
51
+ column.filterValue = value;
52
+ this.dataProcessor.setFilterText(value);
53
+ this.dataProcessor.setCurrentPage(1);
54
+ onFilter();
55
+ }
56
+ handleRowSelection(row, event, currentData, onSelectionChange) {
57
+ if (!this.options.enableRowSelection)
58
+ return;
59
+ const checkbox = event.target;
60
+ if (this.options.enableMultiRowSelection) {
61
+ if (checkbox.checked) {
62
+ if (!this.selectedRows.find(r => r.id === row.id)) {
63
+ this.selectedRows.push(row);
64
+ row.selected = true;
65
+ }
66
+ }
67
+ else {
68
+ const index = this.selectedRows.findIndex(r => r.id === row.id);
69
+ if (index > -1) {
70
+ this.selectedRows.splice(index, 1);
71
+ row.selected = false;
72
+ }
73
+ }
74
+ }
75
+ else {
76
+ this.selectedRows = checkbox.checked ? [row] : [];
77
+ // Update all rows selection state
78
+ currentData.forEach(r => {
79
+ r.selected = r.id === row.id ? checkbox.checked : false;
80
+ });
81
+ }
82
+ onSelectionChange();
83
+ }
84
+ handleHeaderSelectionChange(event, currentData, onSelectionChange) {
85
+ if (!this.options.enableRowSelection)
86
+ return;
87
+ const checkbox = event.target;
88
+ const isChecked = checkbox.checked;
89
+ currentData.forEach(row => {
90
+ row.selected = isChecked;
91
+ });
92
+ if (isChecked) {
93
+ this.selectedRows = [...currentData];
94
+ }
95
+ else {
96
+ this.selectedRows = [];
97
+ }
98
+ onSelectionChange();
99
+ }
100
+ handleRowClick(row, event) {
101
+ if (this.options.suppressRowClickSelection)
102
+ return;
103
+ const target = event.target;
104
+ if (target.tagName === 'INPUT' || target.closest('.checkbox-cell'))
105
+ return;
106
+ // Emit row click event
107
+ this.emit('nile-grid-row-click', { row, event });
108
+ }
109
+ handleCellEdit(row, column, value, onCellEdit) {
110
+ if (!column.editable)
111
+ return;
112
+ const oldValue = row[column.field];
113
+ row[column.field] = value;
114
+ onCellEdit(row, column, oldValue, value);
115
+ }
116
+ handleColumnResizeStart(column, event) {
117
+ if (!this.options.enableColumnResize)
118
+ return;
119
+ this.isResizing = true;
120
+ this.resizingColumn = column;
121
+ this.dragStartX = event.clientX;
122
+ this.dragStartWidth = column.width || 150;
123
+ document.addEventListener('mousemove', this.handleColumnResizeMove.bind(this));
124
+ document.addEventListener('mouseup', this.handleColumnResizeEnd.bind(this));
125
+ }
126
+ handleColumnResizeMove(event) {
127
+ if (!this.isResizing || !this.resizingColumn)
128
+ return;
129
+ const deltaX = event.clientX - this.dragStartX;
130
+ const newWidth = Math.max(this.resizingColumn.minWidth || 50, Math.min(this.resizingColumn.maxWidth || 500, this.dragStartWidth + deltaX));
131
+ this.resizingColumn.width = newWidth;
132
+ }
133
+ handleColumnResizeEnd() {
134
+ this.isResizing = false;
135
+ this.resizingColumn = null;
136
+ document.removeEventListener('mousemove', this.handleColumnResizeMove.bind(this));
137
+ document.removeEventListener('mouseup', this.handleColumnResizeEnd.bind(this));
138
+ }
139
+ handleArrowKeyNavigation(key) {
140
+ // Emit keyboard navigation event
141
+ this.emit('nile-grid-key-navigation', { key });
142
+ }
143
+ emit(eventName, detail) {
144
+ // This will be implemented by the main component
145
+ // The main component will listen to these events and emit them
146
+ }
147
+ // Getters
148
+ getSelectedRows() {
149
+ return this.selectedRows;
150
+ }
151
+ isResizingColumn() {
152
+ return this.isResizing;
153
+ }
154
+ getResizingColumn() {
155
+ return this.resizingColumn;
156
+ }
157
+ }
158
+ //# sourceMappingURL=event-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../src/nile-grid/event-handlers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\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 type { GridColumnDef, GridRowData, GridOptions } from './types.js';\nimport type { GridDataProcessor } from './data-processor.js';\n\nexport class GridEventHandlers {\n private options: GridOptions;\n private dataProcessor: GridDataProcessor;\n private selectedRows: GridRowData[] = [];\n private isResizing: boolean = false;\n private resizingColumn: GridColumnDef | null = null;\n private dragStartX: number = 0;\n private dragStartWidth: number = 0;\n\n constructor(options: GridOptions, dataProcessor: GridDataProcessor) {\n this.options = options;\n this.dataProcessor = dataProcessor;\n }\n\n setOptions(options: GridOptions): void {\n this.options = options;\n this.dataProcessor.setOptions(options);\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.handleArrowKeyNavigation(event.key);\n }\n }\n\n handleWheel(event: WheelEvent, updateVirtualScrolling: () => void): void {\n if (this.options.enableVirtualScrolling) {\n updateVirtualScrolling();\n }\n }\n\n handleColumnSort(column: GridColumnDef, onSort: (field: string, direction: 'asc' | 'desc') => void): void {\n if (!this.options.enableSorting) return;\n\n const currentField = this.dataProcessor.getSortField();\n const currentDirection = this.dataProcessor.getSortDirection();\n\n let newDirection: 'asc' | 'desc';\n if (currentField === column.field) {\n newDirection = currentDirection === 'asc' ? 'desc' : 'asc';\n } else {\n newDirection = 'asc';\n }\n\n this.dataProcessor.setSortField(column.field);\n this.dataProcessor.setSortDirection(newDirection);\n \n onSort(column.field, newDirection);\n }\n\n handleColumnFilter(column: GridColumnDef, value: string, onFilter: () => void): void {\n if (!this.options.enableFiltering) return;\n\n column.filterValue = value;\n this.dataProcessor.setFilterText(value);\n this.dataProcessor.setCurrentPage(1);\n \n onFilter();\n }\n\n handleRowSelection(row: GridRowData, event: Event, currentData: GridRowData[], onSelectionChange: () => void): void {\n if (!this.options.enableRowSelection) return;\n\n const checkbox = event.target as HTMLInputElement;\n \n if (this.options.enableMultiRowSelection) {\n if (checkbox.checked) {\n if (!this.selectedRows.find(r => r.id === row.id)) {\n this.selectedRows.push(row);\n row.selected = true;\n }\n } else {\n const index = this.selectedRows.findIndex(r => r.id === row.id);\n if (index > -1) {\n this.selectedRows.splice(index, 1);\n row.selected = false;\n }\n }\n } else {\n this.selectedRows = checkbox.checked ? [row] : [];\n // Update all rows selection state\n currentData.forEach(r => {\n r.selected = r.id === row.id ? checkbox.checked : false;\n });\n }\n\n onSelectionChange();\n }\n\n handleHeaderSelectionChange(event: Event, currentData: GridRowData[], onSelectionChange: () => void): void {\n if (!this.options.enableRowSelection) return;\n\n const checkbox = event.target as HTMLInputElement;\n const isChecked = checkbox.checked;\n \n currentData.forEach(row => {\n row.selected = isChecked;\n });\n\n if (isChecked) {\n this.selectedRows = [...currentData];\n } else {\n this.selectedRows = [];\n }\n\n onSelectionChange();\n }\n\n handleRowClick(row: GridRowData, event: Event): void {\n if (this.options.suppressRowClickSelection) return;\n\n const target = event.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.closest('.checkbox-cell')) return;\n\n // Emit row click event\n this.emit('nile-grid-row-click', { row, event });\n }\n\n handleCellEdit(row: GridRowData, column: GridColumnDef, value: any, onCellEdit: (row: GridRowData, column: GridColumnDef, oldValue: any, newValue: any) => void): void {\n if (!column.editable) return;\n\n const oldValue = row[column.field];\n row[column.field] = value;\n\n onCellEdit(row, column, oldValue, value);\n }\n\n handleColumnResizeStart(column: GridColumnDef, event: MouseEvent): void {\n if (!this.options.enableColumnResize) return;\n\n this.isResizing = true;\n this.resizingColumn = column;\n this.dragStartX = event.clientX;\n this.dragStartWidth = column.width || 150;\n\n document.addEventListener('mousemove', this.handleColumnResizeMove.bind(this));\n document.addEventListener('mouseup', this.handleColumnResizeEnd.bind(this));\n }\n\n private handleColumnResizeMove(event: MouseEvent): void {\n if (!this.isResizing || !this.resizingColumn) return;\n\n const deltaX = event.clientX - this.dragStartX;\n const newWidth = Math.max(\n this.resizingColumn.minWidth || 50,\n Math.min(this.resizingColumn.maxWidth || 500, this.dragStartWidth + deltaX)\n );\n\n this.resizingColumn.width = newWidth;\n }\n\n private handleColumnResizeEnd(): void {\n this.isResizing = false;\n this.resizingColumn = null;\n \n document.removeEventListener('mousemove', this.handleColumnResizeMove.bind(this));\n document.removeEventListener('mouseup', this.handleColumnResizeEnd.bind(this));\n }\n\n private handleArrowKeyNavigation(key: string): void {\n // Emit keyboard navigation event\n this.emit('nile-grid-key-navigation', { key });\n }\n\n private emit(eventName: string, detail: any): void {\n // This will be implemented by the main component\n // The main component will listen to these events and emit them\n }\n\n // Getters\n getSelectedRows(): GridRowData[] {\n return this.selectedRows;\n }\n\n isResizingColumn(): boolean {\n return this.isResizing;\n }\n\n getResizingColumn(): GridColumnDef | null {\n return this.resizingColumn;\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export type HeadItemEl = HTMLElement & {
2
+ width?: number | null;
3
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nile-grid.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-grid.types.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.types.ts"],"names":[],"mappings":"","sourcesContent":["export type HeadItemEl = HTMLElement & { width?: number | null };"]}
@@ -0,0 +1,8 @@
1
+ import { TemplateResult } from 'lit';
2
+ import type { ColumnDef } from './types.js';
3
+ export declare class GridRenderer {
4
+ static renderHeader(columnDefs: ColumnDef[], enableColResize: boolean, onResizeStart: (e: MouseEvent, col: ColumnDef, index: number) => void): TemplateResult;
5
+ static renderBody(rowData: any[], columnDefs: ColumnDef[], enableVirtualScroll: boolean, onVirtualizeRender: (row: any, rowIndex: number) => TemplateResult): TemplateResult;
6
+ static renderRowWithSpanning(row: any, rowIndex: number, columnDefs: ColumnDef[]): TemplateResult;
7
+ private static shouldShowResizeHandle;
8
+ }
@@ -0,0 +1,78 @@
1
+ import { html } from 'lit';
2
+ import { getGridTemplateColumns, calculateColSpan } from './utils.js';
3
+ export class GridRenderer {
4
+ static renderHeader(columnDefs, enableColResize, onResizeStart) {
5
+ return html `
6
+ <div class="grid-header" style="grid-template-columns: ${getGridTemplateColumns(columnDefs)};">
7
+ ${columnDefs.map((col, index) => html `
8
+ <div class="grid-header-cell">
9
+ <span>${col.headerName || col.field}</span>
10
+ ${this.shouldShowResizeHandle(col, enableColResize) ? html `
11
+ <div
12
+ class="grid-resize-handle"
13
+ @mousedown=${(e) => onResizeStart(e, col, index)}
14
+ title="Drag to resize column"
15
+ ></div>
16
+ ` : ''}
17
+ </div>
18
+ `)}
19
+ </div>
20
+ `;
21
+ }
22
+ static renderBody(rowData, columnDefs, enableVirtualScroll, onVirtualizeRender) {
23
+ if (rowData.length === 0) {
24
+ return html `
25
+ <div class="grid-empty">
26
+ <div class="empty-text">No data available</div>
27
+ </div>
28
+ `;
29
+ }
30
+ if (enableVirtualScroll) {
31
+ return html `
32
+ <div class="grid-body">
33
+ ${onVirtualizeRender}
34
+ </div>
35
+ `;
36
+ }
37
+ return html `
38
+ <div class="grid-body">
39
+ ${rowData.map((row, rowIndex) => this.renderRowWithSpanning(row, rowIndex, columnDefs))}
40
+ </div>
41
+ `;
42
+ }
43
+ static renderRowWithSpanning(row, rowIndex, columnDefs) {
44
+ const cells = [];
45
+ let currentColIndex = 0;
46
+ for (let colIndex = 0; colIndex < columnDefs.length; colIndex++) {
47
+ const col = columnDefs[colIndex];
48
+ // Check if this column should be skipped due to previous spanning
49
+ if (currentColIndex > colIndex) {
50
+ continue;
51
+ }
52
+ // Calculate column span
53
+ const colSpan = calculateColSpan(col, row, rowIndex, colIndex);
54
+ if (colSpan > 0) {
55
+ const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;
56
+ cells.push(html `
57
+ <div class="grid-cell" style="${cellStyle}">
58
+ <span>${row[col.field]}</span>
59
+ </div>
60
+ `);
61
+ currentColIndex += colSpan;
62
+ }
63
+ }
64
+ return html `
65
+ <div class="grid-row" style="grid-template-columns: ${getGridTemplateColumns(columnDefs)};">
66
+ ${cells}
67
+ </div>
68
+ `;
69
+ }
70
+ static shouldShowResizeHandle(col, enableColResize) {
71
+ if (!enableColResize)
72
+ return false;
73
+ if (col.resizable === false)
74
+ return false;
75
+ return true;
76
+ }
77
+ }
78
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/nile-grid/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,YAAY,CAAC,UAAuB,EAAE,eAAwB,EAAE,aAAqE;QAC1I,OAAO,IAAI,CAAA;+DACgD,sBAAsB,CAAC,UAAU,CAAC;UACvF,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;oBAEzB,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK;cACjC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;;;6BAGzC,CAAC,CAAa,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;;;aAG/D,CAAC,CAAC,CAAC,EAAE;;SAET,CAAC;;KAEL,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CACf,OAAc,EACd,UAAuB,EACvB,mBAA4B,EAC5B,kBAAkE;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAA;;;;OAIV,CAAC;QACJ,CAAC;QAED,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAA;;YAEL,kBAAkB;;OAEvB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;;UAEL,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;;KAE1F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,GAAQ,EAAE,QAAgB,EAAE,UAAuB;QAC9E,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEjC,kEAAkE;YAClE,IAAI,eAAe,GAAG,QAAQ,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,wBAAwB;YACxB,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE/D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,gBAAgB,eAAe,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC;gBAE3E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;0CACmB,SAAS;oBAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;;SAEzB,CAAC,CAAC;gBAEH,eAAe,IAAI,OAAO,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;4DAC6C,sBAAsB,CAAC,UAAU,CAAC;UACpF,KAAK;;KAEV,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,GAAc,EAAE,eAAwB;QAC5E,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { ColumnDef } from './types.js';\nimport { getGridTemplateColumns, calculateColSpan } from './utils.js';\n\nexport class GridRenderer {\n static renderHeader(columnDefs: ColumnDef[], enableColResize: boolean, onResizeStart: (e: MouseEvent, col: ColumnDef, index: number) => void): TemplateResult {\n return html`\n <div class=\"grid-header\" style=\"grid-template-columns: ${getGridTemplateColumns(columnDefs)};\">\n ${columnDefs.map((col, index) => html`\n <div class=\"grid-header-cell\">\n <span>${col.headerName || col.field}</span>\n ${this.shouldShowResizeHandle(col, enableColResize) ? html`\n <div \n class=\"grid-resize-handle\"\n @mousedown=${(e: MouseEvent) => onResizeStart(e, col, index)}\n title=\"Drag to resize column\"\n ></div>\n ` : ''}\n </div>\n `)}\n </div>\n `;\n }\n\n static renderBody(\n rowData: any[], \n columnDefs: ColumnDef[], \n enableVirtualScroll: boolean,\n onVirtualizeRender: (row: any, rowIndex: number) => TemplateResult\n ): TemplateResult {\n if (rowData.length === 0) {\n return html`\n <div class=\"grid-empty\">\n <div class=\"empty-text\">No data available</div>\n </div>\n `;\n }\n\n if (enableVirtualScroll) {\n return html`\n <div class=\"grid-body\">\n ${onVirtualizeRender}\n </div>\n `;\n }\n\n return html`\n <div class=\"grid-body\">\n ${rowData.map((row, rowIndex) => this.renderRowWithSpanning(row, rowIndex, columnDefs))}\n </div>\n `;\n }\n\n static renderRowWithSpanning(row: any, rowIndex: number, columnDefs: ColumnDef[]): TemplateResult {\n const cells: TemplateResult[] = [];\n let currentColIndex = 0;\n\n for (let colIndex = 0; colIndex < columnDefs.length; colIndex++) {\n const col = 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 = 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`\n <div class=\"grid-row\" style=\"grid-template-columns: ${getGridTemplateColumns(columnDefs)};\">\n ${cells}\n </div>\n `;\n }\n\n private static shouldShowResizeHandle(col: ColumnDef, enableColResize: boolean): boolean {\n if (!enableColResize) return false;\n if (col.resizable === false) return false;\n return true;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ColumnDef, GridOptions } from './types.js';
2
+ export declare class ResizeHandler {
3
+ static handleResizeStart(event: MouseEvent, col: ColumnDef, columnIndex: number, columnDefs: ColumnDef[], gridOptions: GridOptions, onUpdate: () => void): void;
4
+ }