@aquera/nile-elements 1.5.1 → 1.5.3

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 (572) hide show
  1. package/README.md +9 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +253 -197
  5. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  6. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  7. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js +1 -1
  8. package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js.map +1 -1
  9. package/dist/nile-auto-complete/nile-auto-complete.css.esm.js +1 -1
  10. package/dist/nile-auto-complete/nile-auto-complete.esm.js +1 -1
  11. package/dist/nile-file-preview/nile-file-preview.cjs.js +1 -1
  12. package/dist/nile-file-preview/nile-file-preview.cjs.js.map +1 -1
  13. package/dist/nile-file-preview/nile-file-preview.css.cjs.js +1 -1
  14. package/dist/nile-file-preview/nile-file-preview.css.cjs.js.map +1 -1
  15. package/dist/nile-file-preview/nile-file-preview.css.esm.js +2 -2
  16. package/dist/nile-file-preview/nile-file-preview.esm.js +1 -1
  17. package/dist/nile-file-preview/nile-file-preview.template.cjs.js +1 -1
  18. package/dist/nile-file-preview/nile-file-preview.template.cjs.js.map +1 -1
  19. package/dist/nile-file-preview/nile-file-preview.template.esm.js +55 -25
  20. package/dist/nile-file-preview/utils/index.cjs.js +1 -1
  21. package/dist/nile-file-preview/utils/index.esm.js +1 -1
  22. package/dist/nile-file-preview/utils/nile-file-preview.util.cjs.js +1 -1
  23. package/dist/nile-file-preview/utils/nile-file-preview.util.cjs.js.map +1 -1
  24. package/dist/nile-file-preview/utils/nile-file-preview.util.esm.js +1 -1
  25. package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
  26. package/dist/nile-file-upload/nile-file-upload.cjs.js.map +1 -1
  27. package/dist/nile-file-upload/nile-file-upload.css.cjs.js +1 -1
  28. package/dist/nile-file-upload/nile-file-upload.css.cjs.js.map +1 -1
  29. package/dist/nile-file-upload/nile-file-upload.css.esm.js +15 -5
  30. package/dist/nile-file-upload/nile-file-upload.esm.js +2 -2
  31. package/dist/nile-file-upload/nile-file-upload.template.cjs.js +2 -2
  32. package/dist/nile-file-upload/nile-file-upload.template.cjs.js.map +1 -1
  33. package/dist/nile-file-upload/nile-file-upload.template.esm.js +36 -32
  34. package/dist/nile-file-upload/types/file-upload.enums.cjs.js +1 -1
  35. package/dist/nile-file-upload/types/file-upload.enums.cjs.js.map +1 -1
  36. package/dist/nile-file-upload/types/file-upload.enums.esm.js +1 -1
  37. package/dist/nile-file-upload/types/index.cjs.js +1 -1
  38. package/dist/nile-file-upload/types/index.esm.js +1 -1
  39. package/dist/nile-file-upload/utils/drag-drop.util.cjs.js +1 -1
  40. package/dist/nile-file-upload/utils/drag-drop.util.cjs.js.map +1 -1
  41. package/dist/nile-file-upload/utils/drag-drop.util.esm.js +1 -1
  42. package/dist/nile-file-upload/utils/file-validation.util.cjs.js +4 -2
  43. package/dist/nile-file-upload/utils/file-validation.util.cjs.js.map +1 -1
  44. package/dist/nile-file-upload/utils/file-validation.util.esm.js +1 -1
  45. package/dist/nile-grid/index.cjs.js +1 -1
  46. package/dist/nile-grid/index.esm.js +1 -1
  47. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js +1 -1
  48. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -1
  49. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +1 -1
  50. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -1
  51. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +2 -0
  52. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.esm.js +1 -1
  53. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js +1 -1
  54. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js.map +1 -1
  55. package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.esm.js +1 -1
  56. package/dist/nile-grid/nile-grid-head/nile-grid-head.css.cjs.js +1 -1
  57. package/dist/nile-grid/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -1
  58. package/dist/nile-grid/nile-grid-head/nile-grid-head.css.esm.js +8 -2
  59. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
  60. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
  61. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.cjs.js +1 -1
  62. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -1
  63. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.esm.js +2 -1
  64. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.esm.js +3 -3
  65. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +1 -1
  66. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +1 -1
  67. package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.esm.js +1 -1
  68. package/dist/nile-grid/nile-grid.cjs.js +1 -1
  69. package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
  70. package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
  71. package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
  72. package/dist/nile-grid/nile-grid.css.esm.js +1 -0
  73. package/dist/nile-grid/nile-grid.esm.js +5 -3
  74. package/dist/nile-grid/nile-grid.layout.cjs.js +1 -1
  75. package/dist/nile-grid/nile-grid.layout.esm.js +1 -1
  76. package/dist/nile-grid/nile-grid.resize.cjs.js +1 -1
  77. package/dist/nile-grid/nile-grid.resize.esm.js +1 -1
  78. package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
  79. package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -1
  80. package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
  81. package/dist/nile-grid/nile-grid.width.cjs.js +1 -1
  82. package/dist/nile-grid/nile-grid.width.cjs.js.map +1 -1
  83. package/dist/nile-grid/nile-grid.width.esm.js +1 -1
  84. package/dist/nile-input/nile-input.cjs.js +1 -1
  85. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  86. package/dist/nile-input/nile-input.esm.js +1 -1
  87. package/dist/nile-popover/index.cjs.js +1 -1
  88. package/dist/nile-popover/index.esm.js +1 -1
  89. package/dist/nile-popover/nile-popover.cjs.js +4 -4
  90. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  91. package/dist/nile-popover/nile-popover.esm.js +11 -6
  92. package/dist/src/nile-accordion/nile-accordian.test.js +101 -99
  93. package/dist/src/nile-accordion/nile-accordian.test.js.map +1 -1
  94. package/dist/src/nile-auto-complete/nile-auto-complete.css.js +1 -1
  95. package/dist/src/nile-auto-complete/nile-auto-complete.css.js.map +1 -1
  96. package/dist/src/nile-auto-complete/nile-auto-complete.js +1 -1
  97. package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
  98. package/dist/src/nile-auto-complete/nile-auto-complete.test.js +104 -112
  99. package/dist/src/nile-auto-complete/nile-auto-complete.test.js.map +1 -1
  100. package/dist/src/nile-avatar/nile-avatar.test.d.ts +0 -1
  101. package/dist/src/nile-avatar/nile-avatar.test.js +103 -87
  102. package/dist/src/nile-avatar/nile-avatar.test.js.map +1 -1
  103. package/dist/src/nile-badge/nile-badge.test.js +554 -35
  104. package/dist/src/nile-badge/nile-badge.test.js.map +1 -1
  105. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.d.ts +2 -0
  106. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js +106 -0
  107. package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js.map +1 -0
  108. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.d.ts +1 -0
  109. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.js +108 -0
  110. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.js.map +1 -0
  111. package/dist/src/nile-button/nile-button.test.js +499 -39
  112. package/dist/src/nile-button/nile-button.test.js.map +1 -1
  113. package/dist/src/nile-button-filter/nile-button-filter.test.d.ts +1 -0
  114. package/dist/src/nile-button-filter/nile-button-filter.test.js +108 -0
  115. package/dist/src/nile-button-filter/nile-button-filter.test.js.map +1 -0
  116. package/dist/src/nile-button-toggle/nile-button-toggle.test.d.ts +1 -0
  117. package/dist/src/nile-button-toggle/nile-button-toggle.test.js +108 -0
  118. package/dist/src/nile-button-toggle/nile-button-toggle.test.js.map +1 -0
  119. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.d.ts +1 -1
  120. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js +105 -104
  121. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js.map +1 -1
  122. package/dist/src/nile-calendar/nile-calendar.test.d.ts +0 -6
  123. package/dist/src/nile-calendar/nile-calendar.test.js +103 -318
  124. package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
  125. package/dist/src/nile-card/nile-card.test.js +102 -66
  126. package/dist/src/nile-card/nile-card.test.js.map +1 -1
  127. package/dist/src/nile-checkbox/nile-checkbox.test.js +547 -108
  128. package/dist/src/nile-checkbox/nile-checkbox.test.js.map +1 -1
  129. package/dist/src/nile-chip/nile-chip.test.d.ts +0 -2
  130. package/dist/src/nile-chip/nile-chip.test.js +101 -102
  131. package/dist/src/nile-chip/nile-chip.test.js.map +1 -1
  132. package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.d.ts +1 -0
  133. package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.js +108 -0
  134. package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.js.map +1 -0
  135. package/dist/src/nile-date-picker/nile-date-picker.test.d.ts +1 -0
  136. package/dist/src/nile-date-picker/nile-date-picker.test.js +108 -0
  137. package/dist/src/nile-date-picker/nile-date-picker.test.js.map +1 -0
  138. package/dist/src/nile-dialog/nile-dialog.test.d.ts +0 -1
  139. package/dist/src/nile-dialog/nile-dialog.test.js +104 -126
  140. package/dist/src/nile-dialog/nile-dialog.test.js.map +1 -1
  141. package/dist/src/nile-divider/nile-divider.test.d.ts +1 -0
  142. package/dist/src/nile-divider/nile-divider.test.js +560 -0
  143. package/dist/src/nile-divider/nile-divider.test.js.map +1 -0
  144. package/dist/src/nile-drawer/nile-drawer.test.js +106 -86
  145. package/dist/src/nile-drawer/nile-drawer.test.js.map +1 -1
  146. package/dist/src/nile-dropdown/nile-dropdown.test.js +104 -148
  147. package/dist/src/nile-dropdown/nile-dropdown.test.js.map +1 -1
  148. package/dist/src/nile-empty-state/nile-empty-state.test.js +107 -59
  149. package/dist/src/nile-empty-state/nile-empty-state.test.js.map +1 -1
  150. package/dist/src/nile-error-message/nile-error-message.test.js +105 -55
  151. package/dist/src/nile-error-message/nile-error-message.test.js.map +1 -1
  152. package/dist/src/nile-error-notification/nile-error-notification.test.d.ts +1 -0
  153. package/dist/src/nile-error-notification/nile-error-notification.test.js +108 -0
  154. package/dist/src/nile-error-notification/nile-error-notification.test.js.map +1 -0
  155. package/dist/src/nile-file-preview/nile-file-preview.css.js +2 -2
  156. package/dist/src/nile-file-preview/nile-file-preview.css.js.map +1 -1
  157. package/dist/src/nile-file-preview/nile-file-preview.d.ts +1 -4
  158. package/dist/src/nile-file-preview/nile-file-preview.js +21 -47
  159. package/dist/src/nile-file-preview/nile-file-preview.js.map +1 -1
  160. package/dist/src/nile-file-preview/nile-file-preview.template.d.ts +6 -6
  161. package/dist/src/nile-file-preview/nile-file-preview.template.js +53 -23
  162. package/dist/src/nile-file-preview/nile-file-preview.template.js.map +1 -1
  163. package/dist/src/nile-file-preview/nile-file-preview.test.d.ts +0 -6
  164. package/dist/src/nile-file-preview/nile-file-preview.test.js +106 -28
  165. package/dist/src/nile-file-preview/nile-file-preview.test.js.map +1 -1
  166. package/dist/src/nile-file-preview/utils/nile-file-preview.util.d.ts +3 -2
  167. package/dist/src/nile-file-preview/utils/nile-file-preview.util.js +32 -7
  168. package/dist/src/nile-file-preview/utils/nile-file-preview.util.js.map +1 -1
  169. package/dist/src/nile-file-upload/nile-file-upload.css.js +15 -5
  170. package/dist/src/nile-file-upload/nile-file-upload.css.js.map +1 -1
  171. package/dist/src/nile-file-upload/nile-file-upload.d.ts +4 -1
  172. package/dist/src/nile-file-upload/nile-file-upload.js +13 -1
  173. package/dist/src/nile-file-upload/nile-file-upload.js.map +1 -1
  174. package/dist/src/nile-file-upload/nile-file-upload.template.js +19 -15
  175. package/dist/src/nile-file-upload/nile-file-upload.template.js.map +1 -1
  176. package/dist/src/nile-file-upload/nile-file-upload.test.d.ts +0 -6
  177. package/dist/src/nile-file-upload/nile-file-upload.test.js +106 -28
  178. package/dist/src/nile-file-upload/nile-file-upload.test.js.map +1 -1
  179. package/dist/src/nile-file-upload/types/file-upload.enums.d.ts +17 -3
  180. package/dist/src/nile-file-upload/types/file-upload.enums.js +17 -1
  181. package/dist/src/nile-file-upload/types/file-upload.enums.js.map +1 -1
  182. package/dist/src/nile-file-upload/utils/drag-drop.util.d.ts +2 -0
  183. package/dist/src/nile-file-upload/utils/drag-drop.util.js +14 -8
  184. package/dist/src/nile-file-upload/utils/drag-drop.util.js.map +1 -1
  185. package/dist/src/nile-file-upload/utils/file-validation.util.js +89 -10
  186. package/dist/src/nile-file-upload/utils/file-validation.util.js.map +1 -1
  187. package/dist/src/nile-filter-chip/nile-filter-chip.test.js +102 -77
  188. package/dist/src/nile-filter-chip/nile-filter-chip.test.js.map +1 -1
  189. package/dist/src/nile-form-error-message/nile-form-error-message.test.d.ts +1 -0
  190. package/dist/src/nile-form-error-message/nile-form-error-message.test.js +108 -0
  191. package/dist/src/nile-form-error-message/nile-form-error-message.test.js.map +1 -0
  192. package/dist/src/nile-form-group/nile-form-group.test.js +104 -51
  193. package/dist/src/nile-form-group/nile-form-group.test.js.map +1 -1
  194. package/dist/src/nile-form-help-text/nile-form-help-text.test.js +104 -84
  195. package/dist/src/nile-form-help-text/nile-form-help-text.test.js.map +1 -1
  196. package/dist/src/nile-format-date/nile-format-date.test.d.ts +1 -0
  197. package/dist/src/nile-format-date/nile-format-date.test.js +108 -0
  198. package/dist/src/nile-format-date/nile-format-date.test.js.map +1 -0
  199. package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.js +2 -0
  200. package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -1
  201. package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.js +1 -1
  202. package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -1
  203. package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.d.ts +1 -1
  204. package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.js +2 -2
  205. package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +1 -1
  206. package/dist/src/nile-grid/nile-grid-head/nile-grid-head.css.js +6 -0
  207. package/dist/src/nile-grid/nile-grid-head/nile-grid-head.css.js.map +1 -1
  208. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.css.js +2 -1
  209. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -1
  210. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.js +6 -5
  211. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.js.map +1 -1
  212. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.d.ts +15 -1
  213. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.js +26 -2
  214. package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.js.map +1 -1
  215. package/dist/src/nile-grid/nile-grid.css.js +1 -0
  216. package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
  217. package/dist/src/nile-grid/nile-grid.d.ts +31 -3
  218. package/dist/src/nile-grid/nile-grid.js +107 -30
  219. package/dist/src/nile-grid/nile-grid.js.map +1 -1
  220. package/dist/src/nile-grid/nile-grid.layout.d.ts +2 -9
  221. package/dist/src/nile-grid/nile-grid.layout.js +120 -106
  222. package/dist/src/nile-grid/nile-grid.layout.js.map +1 -1
  223. package/dist/src/nile-grid/nile-grid.resize.d.ts +1 -0
  224. package/dist/src/nile-grid/nile-grid.resize.js +7 -3
  225. package/dist/src/nile-grid/nile-grid.resize.js.map +1 -1
  226. package/dist/src/nile-grid/nile-grid.utils.d.ts +7 -0
  227. package/dist/src/nile-grid/nile-grid.utils.js +37 -2
  228. package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
  229. package/dist/src/nile-grid/nile-grid.width.d.ts +2 -1
  230. package/dist/src/nile-grid/nile-grid.width.js +38 -8
  231. package/dist/src/nile-grid/nile-grid.width.js.map +1 -1
  232. package/dist/src/nile-grid/types/nile-grid.types.d.ts +5 -0
  233. package/dist/src/nile-grid/types/nile-grid.types.js.map +1 -1
  234. package/dist/src/nile-heading/nile-heading.test.d.ts +1 -0
  235. package/dist/src/nile-heading/nile-heading.test.js +108 -0
  236. package/dist/src/nile-heading/nile-heading.test.js.map +1 -0
  237. package/dist/src/nile-hero/nile-hero.test.js +101 -38
  238. package/dist/src/nile-hero/nile-hero.test.js.map +1 -1
  239. package/dist/src/nile-icon/nile-icon.test.js +103 -40
  240. package/dist/src/nile-icon/nile-icon.test.js.map +1 -1
  241. package/dist/src/nile-icon-button/nile-icon-button.test.d.ts +1 -0
  242. package/dist/src/nile-icon-button/nile-icon-button.test.js +568 -0
  243. package/dist/src/nile-icon-button/nile-icon-button.test.js.map +1 -0
  244. package/dist/src/nile-inline-edit/nile-inline-edit.test.d.ts +1 -0
  245. package/dist/src/nile-inline-edit/nile-inline-edit.test.js +108 -0
  246. package/dist/src/nile-inline-edit/nile-inline-edit.test.js.map +1 -0
  247. package/dist/src/nile-input/nile-input.js +1 -1
  248. package/dist/src/nile-input/nile-input.js.map +1 -1
  249. package/dist/src/nile-input/nile-input.test.js +109 -139
  250. package/dist/src/nile-input/nile-input.test.js.map +1 -1
  251. package/dist/src/nile-link/nile-link.test.js +103 -67
  252. package/dist/src/nile-link/nile-link.test.js.map +1 -1
  253. package/dist/src/nile-list/nile-list.test.d.ts +1 -0
  254. package/dist/src/nile-list/nile-list.test.js +108 -0
  255. package/dist/src/nile-list/nile-list.test.js.map +1 -0
  256. package/dist/src/nile-list-item/nile-list-item.test.d.ts +1 -0
  257. package/dist/src/nile-list-item/nile-list-item.test.js +108 -0
  258. package/dist/src/nile-list-item/nile-list-item.test.js.map +1 -0
  259. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.d.ts +2 -0
  260. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.js +109 -0
  261. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.js.map +1 -0
  262. package/dist/src/nile-loader/nile-loader.test.js +107 -40
  263. package/dist/src/nile-loader/nile-loader.test.js.map +1 -1
  264. package/dist/src/nile-menu/nile-menu.test.d.ts +1 -0
  265. package/dist/src/nile-menu/nile-menu.test.js +113 -0
  266. package/dist/src/nile-menu/nile-menu.test.js.map +1 -0
  267. package/dist/src/nile-menu-item/nile-menu-item.test.d.ts +1 -0
  268. package/dist/src/nile-menu-item/nile-menu-item.test.js +113 -0
  269. package/dist/src/nile-menu-item/nile-menu-item.test.js.map +1 -0
  270. package/dist/src/nile-option/nile-option.test.d.ts +1 -0
  271. package/dist/src/nile-option/nile-option.test.js +108 -0
  272. package/dist/src/nile-option/nile-option.test.js.map +1 -0
  273. package/dist/src/nile-option-group/nile-option-group.test.d.ts +1 -0
  274. package/dist/src/nile-option-group/nile-option-group.test.js +108 -0
  275. package/dist/src/nile-option-group/nile-option-group.test.js.map +1 -0
  276. package/dist/src/nile-page-header/nile-page-header.test.d.ts +1 -0
  277. package/dist/src/nile-page-header/nile-page-header.test.js +108 -0
  278. package/dist/src/nile-page-header/nile-page-header.test.js.map +1 -0
  279. package/dist/src/nile-pagination/nile-pagination.test.d.ts +1 -0
  280. package/dist/src/nile-pagination/nile-pagination.test.js +108 -0
  281. package/dist/src/nile-pagination/nile-pagination.test.js.map +1 -0
  282. package/dist/src/nile-popover/nile-popover.test.js +103 -68
  283. package/dist/src/nile-popover/nile-popover.test.js.map +1 -1
  284. package/dist/src/nile-popup/nile-popup.test.js +104 -65
  285. package/dist/src/nile-popup/nile-popup.test.js.map +1 -1
  286. package/dist/src/nile-progress-bar/nile-progress-bar.test.js +104 -44
  287. package/dist/src/nile-progress-bar/nile-progress-bar.test.js.map +1 -1
  288. package/dist/src/nile-radio/nile-radio.test.js +103 -66
  289. package/dist/src/nile-radio/nile-radio.test.js.map +1 -1
  290. package/dist/src/nile-radio-group/nile-radio-group.test.d.ts +0 -1
  291. package/dist/src/nile-radio-group/nile-radio-group.test.js +105 -171
  292. package/dist/src/nile-radio-group/nile-radio-group.test.js.map +1 -1
  293. package/dist/src/nile-section-message/nile-section-message.test.d.ts +1 -0
  294. package/dist/src/nile-section-message/nile-section-message.test.js +108 -0
  295. package/dist/src/nile-section-message/nile-section-message.test.js.map +1 -0
  296. package/dist/src/nile-select/nile-select.test.d.ts +0 -5
  297. package/dist/src/nile-select/nile-select.test.js +105 -244
  298. package/dist/src/nile-select/nile-select.test.js.map +1 -1
  299. package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.d.ts +1 -0
  300. package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.js +108 -0
  301. package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.js.map +1 -0
  302. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js +104 -50
  303. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js.map +1 -1
  304. package/dist/src/nile-slider/nile-slider.test.d.ts +1 -0
  305. package/dist/src/nile-slider/nile-slider.test.js +108 -0
  306. package/dist/src/nile-slider/nile-slider.test.js.map +1 -0
  307. package/dist/src/nile-spinner/nile-spinner.test.d.ts +1 -0
  308. package/dist/src/nile-spinner/nile-spinner.test.js +569 -0
  309. package/dist/src/nile-spinner/nile-spinner.test.js.map +1 -0
  310. package/dist/src/nile-split-panel/nile-split-panel.test.d.ts +1 -0
  311. package/dist/src/nile-split-panel/nile-split-panel.test.js +108 -0
  312. package/dist/src/nile-split-panel/nile-split-panel.test.js.map +1 -0
  313. package/dist/src/nile-stepper/nile-stepper.test.d.ts +2 -0
  314. package/dist/src/nile-stepper/nile-stepper.test.js +109 -0
  315. package/dist/src/nile-stepper/nile-stepper.test.js.map +1 -0
  316. package/dist/src/nile-stepper-item/nile-stepper-item.test.d.ts +1 -0
  317. package/dist/src/nile-stepper-item/nile-stepper-item.test.js +108 -0
  318. package/dist/src/nile-stepper-item/nile-stepper-item.test.js.map +1 -0
  319. package/dist/src/nile-tab/nile-tab.test.d.ts +1 -0
  320. package/dist/src/nile-tab/nile-tab.test.js +108 -0
  321. package/dist/src/nile-tab/nile-tab.test.js.map +1 -0
  322. package/dist/src/nile-tab-group/nile-tab-group.test.js +105 -172
  323. package/dist/src/nile-tab-group/nile-tab-group.test.js.map +1 -1
  324. package/dist/src/nile-tab-panel/nile-tab-panel.test.d.ts +1 -0
  325. package/dist/src/nile-tab-panel/nile-tab-panel.test.js +108 -0
  326. package/dist/src/nile-tab-panel/nile-tab-panel.test.js.map +1 -0
  327. package/dist/src/nile-tag/nile-tag.test.d.ts +1 -0
  328. package/dist/src/nile-tag/nile-tag.test.js +574 -0
  329. package/dist/src/nile-tag/nile-tag.test.js.map +1 -0
  330. package/dist/src/nile-textarea/nile-textarea.test.d.ts +1 -1
  331. package/dist/src/nile-textarea/nile-textarea.test.js +105 -84
  332. package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -1
  333. package/dist/src/nile-title/nile-title.test.d.ts +1 -0
  334. package/dist/src/nile-title/nile-title.test.js +108 -0
  335. package/dist/src/nile-title/nile-title.test.js.map +1 -0
  336. package/dist/src/nile-toast/nile-toast.test.d.ts +1 -0
  337. package/dist/src/nile-toast/nile-toast.test.js +526 -0
  338. package/dist/src/nile-toast/nile-toast.test.js.map +1 -0
  339. package/dist/src/nile-toolbar/nile-toolbar.test.d.ts +1 -0
  340. package/dist/src/nile-toolbar/nile-toolbar.test.js +108 -0
  341. package/dist/src/nile-toolbar/nile-toolbar.test.js.map +1 -0
  342. package/dist/src/nile-tooltip/nile-tooltip.test.d.ts +1 -0
  343. package/dist/src/nile-tooltip/nile-tooltip.test.js +546 -0
  344. package/dist/src/nile-tooltip/nile-tooltip.test.js.map +1 -0
  345. package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +1 -7
  346. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +105 -628
  347. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
  348. package/dist/src/version.js +1 -1
  349. package/dist/src/version.js.map +1 -1
  350. package/dist/tsconfig.tsbuildinfo +1 -1
  351. package/package.json +1 -1
  352. package/rollup.config.js +7 -1
  353. package/src/nile-accordion/nile-accordian.test.ts +102 -116
  354. package/src/nile-auto-complete/nile-auto-complete.css.ts +1 -1
  355. package/src/nile-auto-complete/nile-auto-complete.test.ts +102 -145
  356. package/src/nile-auto-complete/nile-auto-complete.ts +1 -1
  357. package/src/nile-avatar/nile-avatar.test.ts +102 -112
  358. package/src/nile-badge/nile-badge.test.ts +642 -30
  359. package/src/nile-breadcrumb/nile-breadcrumb.test.ts +107 -0
  360. package/src/nile-breadcrumb-item/nile-breadcrumb-item.test.ts +106 -0
  361. package/src/nile-button/nile-button.test.ts +593 -61
  362. package/src/nile-button-filter/nile-button-filter.test.ts +106 -0
  363. package/src/nile-button-toggle/nile-button-toggle.test.ts +106 -0
  364. package/src/nile-button-toggle-group/nile-button-toggle-group.test.ts +104 -126
  365. package/src/nile-calendar/nile-calendar.test.ts +102 -406
  366. package/src/nile-card/nile-card.test.ts +103 -71
  367. package/src/nile-checkbox/nile-checkbox.test.ts +614 -108
  368. package/src/nile-chip/nile-chip.test.ts +102 -136
  369. package/src/nile-circular-progressbar/nile-circular-progressbar.test.ts +106 -0
  370. package/src/nile-date-picker/nile-date-picker.test.ts +106 -0
  371. package/src/nile-dialog/nile-dialog.test.ts +102 -164
  372. package/src/nile-divider/nile-divider.test.ts +659 -0
  373. package/src/nile-drawer/nile-drawer.test.ts +105 -105
  374. package/src/nile-dropdown/nile-dropdown.test.ts +102 -190
  375. package/src/nile-empty-state/nile-empty-state.test.ts +104 -67
  376. package/src/nile-error-message/nile-error-message.test.ts +104 -67
  377. package/src/nile-error-notification/nile-error-notification.test.ts +106 -0
  378. package/src/nile-file-preview/nile-file-preview.css.ts +2 -2
  379. package/src/nile-file-preview/nile-file-preview.template.ts +59 -23
  380. package/src/nile-file-preview/nile-file-preview.test.ts +105 -37
  381. package/src/nile-file-preview/nile-file-preview.ts +23 -56
  382. package/src/nile-file-preview/utils/nile-file-preview.util.ts +37 -8
  383. package/src/nile-file-upload/nile-file-upload.css.ts +15 -5
  384. package/src/nile-file-upload/nile-file-upload.template.ts +22 -18
  385. package/src/nile-file-upload/nile-file-upload.test.ts +105 -37
  386. package/src/nile-file-upload/nile-file-upload.ts +11 -3
  387. package/src/nile-file-upload/types/file-upload.enums.ts +20 -4
  388. package/src/nile-file-upload/utils/drag-drop.util.ts +20 -11
  389. package/src/nile-file-upload/utils/file-validation.util.ts +104 -22
  390. package/src/nile-filter-chip/nile-filter-chip.test.ts +103 -89
  391. package/src/nile-form-error-message/nile-form-error-message.test.ts +106 -0
  392. package/src/nile-form-group/nile-form-group.test.ts +103 -60
  393. package/src/nile-form-help-text/nile-form-help-text.test.ts +102 -106
  394. package/src/nile-format-date/nile-format-date.test.ts +106 -0
  395. package/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.ts +2 -0
  396. package/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.ts +1 -1
  397. package/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.ts +2 -1
  398. package/src/nile-grid/nile-grid-head/nile-grid-head.css.ts +6 -0
  399. package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.css.ts +2 -1
  400. package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.ts +7 -5
  401. package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.ts +30 -1
  402. package/src/nile-grid/nile-grid.css.ts +1 -0
  403. package/src/nile-grid/nile-grid.layout.ts +122 -133
  404. package/src/nile-grid/nile-grid.resize.ts +15 -9
  405. package/src/nile-grid/nile-grid.ts +102 -28
  406. package/src/nile-grid/nile-grid.utils.ts +45 -3
  407. package/src/nile-grid/nile-grid.width.ts +45 -14
  408. package/src/nile-grid/types/nile-grid.types.ts +7 -1
  409. package/src/nile-heading/nile-heading.test.ts +106 -0
  410. package/src/nile-hero/nile-hero.test.ts +103 -42
  411. package/src/nile-icon/nile-icon.test.ts +103 -50
  412. package/src/nile-icon-button/nile-icon-button.test.ts +667 -0
  413. package/src/nile-inline-edit/nile-inline-edit.test.ts +106 -0
  414. package/src/nile-input/nile-input.test.ts +105 -164
  415. package/src/nile-input/nile-input.ts +1 -1
  416. package/src/nile-link/nile-link.test.ts +104 -81
  417. package/src/nile-list/nile-list.test.ts +106 -0
  418. package/src/nile-list-item/nile-list-item.test.ts +106 -0
  419. package/src/nile-lite-tooltip/nile-lite-tooltip.test.ts +107 -0
  420. package/src/nile-loader/nile-loader.test.ts +103 -48
  421. package/src/nile-menu/nile-menu.test.ts +106 -0
  422. package/src/nile-menu-item/nile-menu-item.test.ts +106 -0
  423. package/src/nile-option/nile-option.test.ts +106 -0
  424. package/src/nile-option-group/nile-option-group.test.ts +106 -0
  425. package/src/nile-page-header/nile-page-header.test.ts +106 -0
  426. package/src/nile-pagination/nile-pagination.test.ts +106 -0
  427. package/src/nile-popover/nile-popover.test.ts +103 -83
  428. package/src/nile-popup/nile-popup.test.ts +102 -82
  429. package/src/nile-progress-bar/nile-progress-bar.test.ts +103 -52
  430. package/src/nile-radio/nile-radio.test.ts +103 -78
  431. package/src/nile-radio-group/nile-radio-group.test.ts +104 -213
  432. package/src/nile-section-message/nile-section-message.test.ts +106 -0
  433. package/src/nile-select/nile-select.test.ts +105 -308
  434. package/src/nile-skeleton-loader/nile-skeleton-loader.test.ts +106 -0
  435. package/src/nile-slide-toggle/nile-slide-toggle.test.ts +103 -58
  436. package/src/nile-slider/nile-slider.test.ts +106 -0
  437. package/src/nile-spinner/nile-spinner.test.ts +668 -0
  438. package/src/nile-split-panel/nile-split-panel.test.ts +106 -0
  439. package/src/nile-stepper/nile-stepper.test.ts +107 -0
  440. package/src/nile-stepper-item/nile-stepper-item.test.ts +106 -0
  441. package/src/nile-tab/nile-tab.test.ts +106 -0
  442. package/src/nile-tab-group/nile-tab-group.test.ts +104 -211
  443. package/src/nile-tab-panel/nile-tab-panel.test.ts +106 -0
  444. package/src/nile-tag/nile-tag.test.ts +675 -0
  445. package/src/nile-textarea/nile-textarea.test.ts +104 -100
  446. package/src/nile-title/nile-title.test.ts +106 -0
  447. package/src/nile-toast/nile-toast.test.ts +625 -0
  448. package/src/nile-toolbar/nile-toolbar.test.ts +106 -0
  449. package/src/nile-tooltip/nile-tooltip.test.ts +645 -0
  450. package/src/nile-virtual-select/nile-virtual-select.test.ts +104 -772
  451. package/vscode-html-custom-data.json +10 -5
  452. package/web-test-runner.config.mjs +4 -2
  453. package/dist/axe.min-2720cd56.esm.js +0 -1
  454. package/dist/axe.min-69d47269.cjs.js +0 -2
  455. package/dist/axe.min-69d47269.cjs.js.map +0 -1
  456. package/dist/css-tag-bb10c0fa.cjs.js +0 -6
  457. package/dist/css-tag-bb10c0fa.cjs.js.map +0 -1
  458. package/dist/css-tag-dc564feb.esm.js +0 -6
  459. package/dist/fixture-958445f8.cjs.js +0 -395
  460. package/dist/fixture-958445f8.cjs.js.map +0 -1
  461. package/dist/fixture-985bba12.esm.js +0 -569
  462. package/dist/nile-accordion/nile-accordian.test.cjs.js +0 -2
  463. package/dist/nile-accordion/nile-accordian.test.cjs.js.map +0 -1
  464. package/dist/nile-accordion/nile-accordian.test.esm.js +0 -1
  465. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +0 -2
  466. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +0 -1
  467. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +0 -9
  468. package/dist/nile-avatar/nile-avatar.test.cjs.js +0 -2
  469. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +0 -1
  470. package/dist/nile-avatar/nile-avatar.test.esm.js +0 -11
  471. package/dist/nile-badge/nile-badge.test.cjs.js +0 -2
  472. package/dist/nile-badge/nile-badge.test.cjs.js.map +0 -1
  473. package/dist/nile-badge/nile-badge.test.esm.js +0 -1
  474. package/dist/nile-button/nile-button.test.cjs.js +0 -2
  475. package/dist/nile-button/nile-button.test.cjs.js.map +0 -1
  476. package/dist/nile-button/nile-button.test.esm.js +0 -4
  477. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +0 -2
  478. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js.map +0 -1
  479. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +0 -49
  480. package/dist/nile-calendar/nile-calendar.test.cjs.js +0 -2
  481. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +0 -1
  482. package/dist/nile-calendar/nile-calendar.test.esm.js +0 -11
  483. package/dist/nile-card/nile-card.test.cjs.js +0 -2
  484. package/dist/nile-card/nile-card.test.cjs.js.map +0 -1
  485. package/dist/nile-card/nile-card.test.esm.js +0 -51
  486. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +0 -2
  487. package/dist/nile-checkbox/nile-checkbox.test.cjs.js.map +0 -1
  488. package/dist/nile-checkbox/nile-checkbox.test.esm.js +0 -17
  489. package/dist/nile-chip/nile-chip.test.cjs.js +0 -2
  490. package/dist/nile-chip/nile-chip.test.cjs.js.map +0 -1
  491. package/dist/nile-chip/nile-chip.test.esm.js +0 -1
  492. package/dist/nile-dialog/nile-dialog.test.cjs.js +0 -2
  493. package/dist/nile-dialog/nile-dialog.test.cjs.js.map +0 -1
  494. package/dist/nile-dialog/nile-dialog.test.esm.js +0 -7
  495. package/dist/nile-drawer/nile-drawer.test.cjs.js +0 -2
  496. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +0 -1
  497. package/dist/nile-drawer/nile-drawer.test.esm.js +0 -17
  498. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +0 -2
  499. package/dist/nile-dropdown/nile-dropdown.test.cjs.js.map +0 -1
  500. package/dist/nile-dropdown/nile-dropdown.test.esm.js +0 -28
  501. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +0 -2
  502. package/dist/nile-empty-state/nile-empty-state.test.cjs.js.map +0 -1
  503. package/dist/nile-empty-state/nile-empty-state.test.esm.js +0 -9
  504. package/dist/nile-error-message/nile-error-message.test.cjs.js +0 -2
  505. package/dist/nile-error-message/nile-error-message.test.cjs.js.map +0 -1
  506. package/dist/nile-error-message/nile-error-message.test.esm.js +0 -1
  507. package/dist/nile-file-preview/nile-file-preview.test.cjs.js +0 -2
  508. package/dist/nile-file-preview/nile-file-preview.test.cjs.js.map +0 -1
  509. package/dist/nile-file-preview/nile-file-preview.test.esm.js +0 -1
  510. package/dist/nile-file-upload/nile-file-upload.test.cjs.js +0 -2
  511. package/dist/nile-file-upload/nile-file-upload.test.cjs.js.map +0 -1
  512. package/dist/nile-file-upload/nile-file-upload.test.esm.js +0 -1
  513. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +0 -2
  514. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js.map +0 -1
  515. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +0 -20
  516. package/dist/nile-form-group/nile-form-group.test.cjs.js +0 -2
  517. package/dist/nile-form-group/nile-form-group.test.cjs.js.map +0 -1
  518. package/dist/nile-form-group/nile-form-group.test.esm.js +0 -1
  519. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +0 -2
  520. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js.map +0 -1
  521. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +0 -1
  522. package/dist/nile-hero/nile-hero.test.cjs.js +0 -2
  523. package/dist/nile-hero/nile-hero.test.cjs.js.map +0 -1
  524. package/dist/nile-hero/nile-hero.test.esm.js +0 -14
  525. package/dist/nile-icon/nile-icon.test.cjs.js +0 -2
  526. package/dist/nile-icon/nile-icon.test.cjs.js.map +0 -1
  527. package/dist/nile-icon/nile-icon.test.esm.js +0 -1
  528. package/dist/nile-input/nile-input.test.cjs.js +0 -2
  529. package/dist/nile-input/nile-input.test.cjs.js.map +0 -1
  530. package/dist/nile-input/nile-input.test.esm.js +0 -17
  531. package/dist/nile-link/nile-link.test.cjs.js +0 -2
  532. package/dist/nile-link/nile-link.test.cjs.js.map +0 -1
  533. package/dist/nile-link/nile-link.test.esm.js +0 -1
  534. package/dist/nile-loader/nile-loader.test.cjs.js +0 -2
  535. package/dist/nile-loader/nile-loader.test.cjs.js.map +0 -1
  536. package/dist/nile-loader/nile-loader.test.esm.js +0 -1
  537. package/dist/nile-popover/nile-popover.test.cjs.js +0 -2
  538. package/dist/nile-popover/nile-popover.test.cjs.js.map +0 -1
  539. package/dist/nile-popover/nile-popover.test.esm.js +0 -21
  540. package/dist/nile-popup/nile-popup.test.cjs.js +0 -2
  541. package/dist/nile-popup/nile-popup.test.cjs.js.map +0 -1
  542. package/dist/nile-popup/nile-popup.test.esm.js +0 -1
  543. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +0 -2
  544. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js.map +0 -1
  545. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +0 -1
  546. package/dist/nile-radio/nile-radio.test.cjs.js +0 -2
  547. package/dist/nile-radio/nile-radio.test.cjs.js.map +0 -1
  548. package/dist/nile-radio/nile-radio.test.esm.js +0 -1
  549. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +0 -2
  550. package/dist/nile-radio-group/nile-radio-group.test.cjs.js.map +0 -1
  551. package/dist/nile-radio-group/nile-radio-group.test.esm.js +0 -57
  552. package/dist/nile-select/nile-select.test.cjs.js +0 -2
  553. package/dist/nile-select/nile-select.test.cjs.js.map +0 -1
  554. package/dist/nile-select/nile-select.test.esm.js +0 -55
  555. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +0 -2
  556. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js.map +0 -1
  557. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +0 -1
  558. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +0 -2
  559. package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +0 -1
  560. package/dist/nile-tab-group/nile-tab-group.test.esm.js +0 -65
  561. package/dist/nile-textarea/nile-textarea.test.cjs.js +0 -2
  562. package/dist/nile-textarea/nile-textarea.test.cjs.js.map +0 -1
  563. package/dist/nile-textarea/nile-textarea.test.esm.js +0 -1
  564. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +0 -2
  565. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js.map +0 -1
  566. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +0 -93
  567. package/dist/scopedElementsWrapper-31107e48.esm.js +0 -1
  568. package/dist/scopedElementsWrapper-9b188ea6.cjs.js +0 -2
  569. package/dist/scopedElementsWrapper-9b188ea6.cjs.js.map +0 -1
  570. package/dist/sinon-esm-68c8e378.esm.js +0 -1
  571. package/dist/sinon-esm-97570c13.cjs.js +0 -2
  572. package/dist/sinon-esm-97570c13.cjs.js.map +0 -1
@@ -1,39 +1,79 @@
1
1
  import { getHead, getBody } from './nile-grid.utils';
2
- import { getScrollbarComp } from './nile-grid.resize';
3
- import { computeColumnWidths } from './nile-grid.width';
2
+ import { addVariablesValue, computeColumnWidths } from './nile-grid.width';
4
3
  import { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';
5
4
  /**
6
5
  * @param nileGrid Parent NileGrid instance
7
6
  * @param slotEl <slot> element hosting head/body
8
7
  * @param ensureWidths Function to ensure columnWidths length matches colCount
9
- * @param rebuildTemplate Function(colCount, widths) -> grid-template string
10
8
  * @param stickyLeftIndexes Mutable list of left-sticky column indexes
11
9
  * @param stickyRightIndexes Mutable list of right-sticky column indexes
12
10
  * @returns void
13
11
  */
14
- export const layout = (nileGrid, slotEl, ensureWidths, rebuildTemplate, stickyLeftIndexes, stickyRightIndexes) => {
12
+ export const layout = (nileGrid, slotEl, ensureWidths, stickyLeftIndexes, stickyRightIndexes) => {
15
13
  const head = getHead(slotEl);
16
14
  const body = getBody(slotEl);
17
- if (!body)
15
+ if (!head && !body)
18
16
  return;
19
- const headRows = head
20
- ? Array.from(head.querySelectorAll('nile-grid-row'))
21
- : [];
22
- const bodyRows = Array.from(body.querySelectorAll('nile-grid-row'));
23
- let colCount = 0;
24
- colCount = computeHeadLayout(nileGrid, headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);
25
- if (colCount) {
26
- computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);
17
+ let colCount = nileGrid.colCount || 0;
18
+ let headerChanged = false;
19
+ if (nileGrid.needsStructureLayout) {
20
+ headerChanged = true;
21
+ nileGrid.headRows = head ? Array.from(head.querySelectorAll('nile-grid-row')) : [];
22
+ colCount = 0;
23
+ if (nileGrid.headRows.length) {
24
+ colCount = computeHeadLayout(nileGrid, nileGrid.headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
25
+ }
26
+ if (body) {
27
+ nileGrid.bodyRows = Array.from(body.querySelectorAll('nile-grid-row'));
28
+ if (colCount) {
29
+ computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
30
+ }
31
+ else {
32
+ colCount = computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
33
+ }
34
+ }
35
+ if (nileGrid.stickyLeftIndexes.length || nileGrid.stickyRightIndexes.length) {
36
+ cacheStickyEls(nileGrid);
37
+ }
38
+ else {
39
+ nileGrid.stickyLeftHeadEls = [];
40
+ nileGrid.stickyRightHeadEls = [];
41
+ nileGrid.stickyLeftBodyEls = [];
42
+ nileGrid.stickyRightBodyEls = [];
43
+ nileGrid.shadowLeftVisibleSticky = false;
44
+ nileGrid.shadowRightVisibleSticky = false;
45
+ }
46
+ nileGrid.colCount = colCount;
47
+ nileGrid.needsStructureLayout = false;
48
+ nileGrid.needsSpanLayout = false;
49
+ nileGrid.needsWidthLayout = true;
27
50
  }
28
- else {
29
- colCount = computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);
51
+ else if (nileGrid.needsSpanLayout && body) {
52
+ const bodyRows = nileGrid.bodyRows;
53
+ colCount = nileGrid.colCount || 0;
54
+ if (colCount) {
55
+ computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
56
+ }
57
+ nileGrid.needsSpanLayout = false;
58
+ }
59
+ if (nileGrid.needsWidthLayout) {
60
+ colCount = nileGrid.colCount || colCount;
61
+ if (!colCount)
62
+ return;
63
+ ensureWidths(colCount);
64
+ computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns, headerChanged);
65
+ addVariablesValue(nileGrid);
66
+ applyColumnsTemplate(nileGrid, nileGrid.columnWidths);
67
+ nileGrid.needsWidthLayout = false;
30
68
  }
31
- setTimeout(() => {
32
- computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns);
33
- });
34
- ensureWidths(colCount);
35
- nileGrid.colTemplate = rebuildTemplate(colCount, nileGrid.columnWidths);
36
69
  };
70
+ export function cacheStickyEls(nileGrid) {
71
+ const { head, body } = getHeadAndBody(nileGrid);
72
+ nileGrid.stickyLeftHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky="left"]')) : [];
73
+ nileGrid.stickyRightHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky="right"]')) : [];
74
+ nileGrid.stickyLeftBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky="left"]')) : [];
75
+ nileGrid.stickyRightBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky="right"]')) : [];
76
+ }
37
77
  /**
38
78
  * @param nileGrid The parent NileGrid instance
39
79
  * @param rows Array of grid row elements
@@ -45,11 +85,11 @@ export const layout = (nileGrid, slotEl, ensureWidths, rebuildTemplate, stickyLe
45
85
  * @param opts Options controlling layout behavior
46
86
  * @returns Final computed column count
47
87
  */
48
- function layoutRows(nileGrid, rows, carry, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, opts) {
88
+ function layoutRows(nileGrid, rows, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts) {
49
89
  rows.forEach((row, rIdx) => {
50
90
  if (nileGrid.hoverable)
51
91
  row.setAttribute('hover', 'true');
52
- colCount = layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, opts);
92
+ colCount = layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts);
53
93
  });
54
94
  return colCount;
55
95
  }
@@ -61,18 +101,18 @@ function layoutRows(nileGrid, rows, carry, colCount, stickyLeftIndexes, stickyRi
61
101
  * @param colCount Current column count
62
102
  * @param stickyLeftIndexes Sticky-left indexes
63
103
  * @param stickyRightIndexes Sticky-right indexes
64
- * @param columnWidths Column widths array
65
104
  * @param opts Layout options
66
105
  * @returns Updated column count
67
106
  */
68
- function layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, opts) {
107
+ function layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts) {
69
108
  let c = 1;
70
109
  const rStart = rIdx + 1;
71
- const items = [...row.querySelectorAll(opts.itemSelector)];
110
+ const tag = opts.itemSelector.toLowerCase();
111
+ const items = Array.from(row.children).filter((child) => child.tagName.toLowerCase() === tag);
72
112
  for (const el of items) {
73
113
  while ((carry[c - 1] || 0) > 0)
74
114
  c++;
75
- ({ c, colCount } = layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, opts));
115
+ ({ c, colCount } = layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts));
76
116
  }
77
117
  decrementCarry(carry);
78
118
  return colCount;
@@ -86,18 +126,19 @@ function layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes
86
126
  * @param colCount Current max column count
87
127
  * @param stickyLeftIndexes Left sticky indexes
88
128
  * @param stickyRightIndexes Right sticky indexes
89
- * @param columnWidths Column widths
90
129
  * @param opts Sticky and layout options
91
130
  * @returns Updated column index and column count
92
131
  */
93
- function layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, opts) {
132
+ function layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts) {
94
133
  const colspan = Math.max(1, +el.getAttribute('colspan') || 1);
95
134
  const rowspan = Math.max(1, +el.getAttribute('rowspan') || 1);
96
135
  handleRowspan(nileGrid, el, rowspan);
97
136
  const cStart = c;
98
137
  const cEnd = c + colspan;
99
138
  setGridPosition(el, cStart, cEnd, rStart, rowspan);
100
- handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes, columnWidths);
139
+ if (opts.useStickyAttr || stickyLeftIndexes.length || stickyRightIndexes.length) {
140
+ handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes);
141
+ }
101
142
  for (let k = 0; k < colspan; k++) {
102
143
  carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);
103
144
  }
@@ -121,12 +162,14 @@ function handleRowspan(nileGrid, el, rowspan) {
121
162
  nileGrid.headHeight = el.getBoundingClientRect().height;
122
163
  el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;
123
164
  el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
165
+ el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
124
166
  }
125
167
  else {
126
168
  if (!nileGrid.cellHeight)
127
169
  nileGrid.cellHeight = el.getBoundingClientRect().height;
128
170
  el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;
129
171
  el.style.backgroundColor = "var(--nile-colors-white-base, var(--ng-colors-bg-primary))";
172
+ el.style.backgroundColor = "var(--nile-colors-white-base, var(--ng-colors-bg-primary))";
130
173
  }
131
174
  }
132
175
  /**
@@ -148,16 +191,15 @@ function setGridPosition(el, cStart, cEnd, rStart, rowspan) {
148
191
  * @param opts Sticky configuration options
149
192
  * @param stickyLeftIndexes Left sticky indexes
150
193
  * @param stickyRightIndexes Right sticky indexes
151
- * @param columnWidths Array of column widths
152
194
  */
153
- function handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes, columnWidths) {
195
+ function handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes) {
154
196
  if (opts.useStickyAttr && el.getAttribute('sticky') === "left" && !stickyLeftIndexes.includes(cStart - 1)) {
155
197
  stickyLeftIndexes.push(cStart - 1);
156
198
  }
157
199
  if (opts.useStickyAttr && el.getAttribute('sticky') === "right" && !stickyRightIndexes.includes(cStart - 1)) {
158
200
  stickyRightIndexes.push(cStart - 1);
159
201
  }
160
- applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes, columnWidths);
202
+ applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes);
161
203
  }
162
204
  /**
163
205
  * @param carry Rowspan tracking array
@@ -174,19 +216,18 @@ function decrementCarry(carry) {
174
216
  * @param colIndex Column index
175
217
  * @param stickyLeftIndexes Sticky-left indexes
176
218
  * @param stickyRightIndexes Sticky-right indexes
177
- * @param columnWidths Column widths array
178
219
  */
179
- function applySticky(el, colIndex, stickyLeftIndexes, stickyRightIndexes, columnWidths) {
220
+ function applySticky(el, colIndex, stickyLeftIndexes, stickyRightIndexes) {
180
221
  const onLeft = stickyLeftIndexes.includes(colIndex);
181
222
  const onRight = stickyRightIndexes.includes(colIndex);
182
223
  if (!onLeft && !onRight)
183
224
  return;
184
225
  prepareStickyElement(el);
185
226
  if (onLeft && !onRight) {
186
- applyLeftSticky(el, colIndex, stickyLeftIndexes, columnWidths);
227
+ applyLeftSticky(el, colIndex);
187
228
  }
188
229
  else {
189
- applyRightSticky(el, colIndex, stickyRightIndexes, columnWidths);
230
+ applyRightSticky(el, colIndex);
190
231
  }
191
232
  }
192
233
  /**
@@ -194,7 +235,6 @@ function applySticky(el, colIndex, stickyLeftIndexes, stickyRightIndexes, column
194
235
  */
195
236
  function prepareStickyElement(el) {
196
237
  el.style.position = 'sticky';
197
- el.style.zIndex = '1';
198
238
  el.style.left = '';
199
239
  el.style.right = '';
200
240
  el.removeAttribute('data-sticky');
@@ -203,39 +243,60 @@ function prepareStickyElement(el) {
203
243
  * @param el Target element
204
244
  * @param colIndex Column index
205
245
  * @param stickyLeftIndexes Sticky-left column indexes
206
- * @param columnWidths Column width array
207
246
  */
208
- function applyLeftSticky(el, colIndex, stickyLeftIndexes, columnWidths) {
247
+ function applyLeftSticky(el, colIndex) {
209
248
  el.setAttribute('data-sticky', 'left');
210
- const leftOrder = [...stickyLeftIndexes].sort((a, b) => a - b);
211
- const pos = leftOrder.indexOf(colIndex);
212
- const left = computeOffset(leftOrder, pos, columnWidths);
213
- el.style.left = `${Math.max(0, Math.round(left))}px`;
249
+ if (el.tagName === NILE_GRID_HEAD_ITEM) {
250
+ el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
251
+ }
252
+ else {
253
+ el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';
254
+ }
255
+ el.style.zIndex = '1';
256
+ el.style.left = `var(--sticky-left-${colIndex})`;
214
257
  }
215
258
  /**
216
259
  * @param el Target element
217
260
  * @param colIndex Column index
218
261
  * @param stickyRightIndexes Sticky-right indexes
219
- * @param columnWidths Column widths array
220
262
  */
221
- function applyRightSticky(el, colIndex, stickyRightIndexes, columnWidths) {
263
+ function applyRightSticky(el, colIndex) {
222
264
  el.setAttribute('data-sticky', 'right');
223
- const rightOrder = [...stickyRightIndexes].sort((a, b) => b - a);
224
- const pos = rightOrder.indexOf(colIndex);
225
- const scrollbarComp = getScrollbarComp(el);
226
- const right = computeOffset(rightOrder, pos, columnWidths, scrollbarComp);
227
- el.style.right = `${Math.max(0, Math.round(right - 2))}px`;
265
+ if (el.tagName === NILE_GRID_HEAD_ITEM) {
266
+ el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
267
+ }
268
+ else {
269
+ el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';
270
+ }
271
+ el.style.zIndex = '1';
272
+ el.style.right = `var(--sticky-right-${colIndex})`;
228
273
  }
229
274
  /**
230
275
  * @param nileGrid Grid instance to sync shadows for
231
276
  */
232
277
  export function syncStickyShadows(nileGrid) {
278
+ if (!nileGrid.stickyLeftIndexes.length && !nileGrid.stickyRightIndexes.length) {
279
+ return;
280
+ }
233
281
  const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);
234
- const { head, body } = getHeadAndBody(nileGrid);
235
- toggleStickyShadow(head, 'nile-grid-head-item', 'left', 'shadow-right', showRightOnLeftStickies);
236
- toggleStickyShadow(body, 'nile-grid-cell-item', 'left', 'shadow-right', showRightOnLeftStickies);
237
- toggleStickyShadow(head, 'nile-grid-head-item', 'right', 'shadow-left', showLeftOnRightStickies);
238
- toggleStickyShadow(body, 'nile-grid-cell-item', 'right', 'shadow-left', showLeftOnRightStickies);
282
+ if (nileGrid.shadowLeftVisibleSticky === showRightOnLeftStickies &&
283
+ nileGrid.shadowRightVisibleSticky === showLeftOnRightStickies) {
284
+ return;
285
+ }
286
+ nileGrid.shadowLeftVisibleSticky = showRightOnLeftStickies;
287
+ nileGrid.shadowRightVisibleSticky = showLeftOnRightStickies;
288
+ for (const el of nileGrid.stickyLeftHeadEls) {
289
+ el.classList.toggle('shadow-left', showRightOnLeftStickies);
290
+ }
291
+ for (const el of nileGrid.stickyLeftBodyEls) {
292
+ el.classList.toggle('shadow-left', showRightOnLeftStickies);
293
+ }
294
+ for (const el of nileGrid.stickyRightHeadEls) {
295
+ el.classList.toggle('shadow-right', showLeftOnRightStickies);
296
+ }
297
+ for (const el of nileGrid.stickyRightBodyEls) {
298
+ el.classList.toggle('shadow-right', showLeftOnRightStickies);
299
+ }
239
300
  }
240
301
  /**
241
302
  * @param nileGrid Grid instance
@@ -248,37 +309,6 @@ function getShadowStates(nileGrid) {
248
309
  showLeftOnRightStickies: nileGrid.scrollLeft < max
249
310
  };
250
311
  }
251
- /**
252
- * @param root Root element (head or body)
253
- * @param tag Target tag selector
254
- * @param side Sticky side ('left' or 'right')
255
- * @param cls Shadow CSS class to toggle
256
- * @param on Whether to apply or remove the shadow
257
- */
258
- function toggleStickyShadow(root, tag, side, cls, on) {
259
- if (!root)
260
- return;
261
- const sel = `${tag}[data-sticky="${side}"]`;
262
- root.querySelectorAll(sel).forEach(el => el.classList.toggle(cls, on));
263
- }
264
- /** rebuildTemplate
265
- * @param colCount Number of columns
266
- * @param columnWidths Array of explicit column widths (px)
267
- * @returns CSS grid-template-columns string
268
- */
269
- export const rebuildTemplate = (colCount, columnWidths) => {
270
- const parts = [];
271
- for (let i = 0; i < colCount; i++) {
272
- const explicit = columnWidths[i];
273
- if (i === colCount - 1) {
274
- parts.push(`minmax(${explicit}px, auto)`);
275
- }
276
- else {
277
- parts.push(`${explicit}px`);
278
- }
279
- }
280
- return parts.join(' ');
281
- };
282
312
  /** computeHeadLayout
283
313
  * @param nileGrid Grid instance
284
314
  * @param headRows Header rows (<nile-grid-row>[])
@@ -286,11 +316,10 @@ export const rebuildTemplate = (colCount, columnWidths) => {
286
316
  * @param colCount Current column count
287
317
  * @param stickyLeftIndexes Left-sticky indexes
288
318
  * @param stickyRightIndexes Right-sticky indexes
289
- * @param columnWidths Column widths array
290
319
  * @returns Final column count after header layout
291
320
  */
292
- function computeHeadLayout(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths) {
293
- return layoutRows(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, {
321
+ function computeHeadLayout(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes) {
322
+ return layoutRows(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes, {
294
323
  itemSelector: 'nile-grid-head-item',
295
324
  useStickyAttr: true,
296
325
  handleRowBg: false,
@@ -303,11 +332,10 @@ function computeHeadLayout(nileGrid, headRows, carryHead, colCount, stickyLeftIn
303
332
  * @param colCount Current column count
304
333
  * @param stickyLeftIndexes Left-sticky indexes
305
334
  * @param stickyRightIndexes Right-sticky indexes
306
- * @param columnWidths Column widths array
307
335
  * @returns Final column count after body layout
308
336
  */
309
- function computeBodyLayout(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths) {
310
- return layoutRows(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, {
337
+ function computeBodyLayout(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes) {
338
+ return layoutRows(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes, {
311
339
  itemSelector: 'nile-grid-cell-item',
312
340
  useStickyAttr: false,
313
341
  handleRowBg: true,
@@ -317,7 +345,6 @@ function computeBodyLayout(nileGrid, bodyRows, carryBody, colCount, stickyLeftIn
317
345
  * @param nileGrid Grid container element
318
346
  * @param colCount Total number of columns
319
347
  * @param columnWidths Column width array
320
- * @param headElement Header element for template update
321
348
  */
322
349
  export function applyColumnsTemplate(nileGrid, columnWidths) {
323
350
  const cols = columnWidths
@@ -330,19 +357,6 @@ export function applyColumnsTemplate(nileGrid, columnWidths) {
330
357
  .join(' ');
331
358
  nileGrid.style.setProperty('--nile-grid-columns', cols);
332
359
  }
333
- /**
334
- * @param order Array of sticky column indexes
335
- * @param pos Current position within order
336
- * @param widths Column widths
337
- * @param base Base offset value
338
- * @returns Computed pixel offset
339
- */
340
- function computeOffset(order, pos, widths, base = 0) {
341
- let total = base;
342
- for (let i = 0; i < pos; i++)
343
- total += widths[order[i]] ?? 0;
344
- return total;
345
- }
346
360
  /**
347
361
  * @param nileGrid Grid instance
348
362
  * @returns Head and body elements from the grid slot
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid.layout.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.layout.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { getHead, getBody } from './nile-grid.utils';\nimport { getScrollbarComp } from './nile-grid.resize';\nimport { computeColumnWidths } from './nile-grid.width';\nimport { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';\n\n/**\n * @param nileGrid Parent NileGrid instance\n * @param slotEl <slot> element hosting head/body\n * @param ensureWidths Function to ensure columnWidths length matches colCount\n * @param rebuildTemplate Function(colCount, widths) -> grid-template string\n * @param stickyLeftIndexes Mutable list of left-sticky column indexes\n * @param stickyRightIndexes Mutable list of right-sticky column indexes\n * @returns void\n */\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n rebuildTemplate: any,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[]\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 colCount = computeHeadLayout(nileGrid, headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);\n if (colCount) {\n computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);\n } else {\n colCount = computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);\n }\n\n setTimeout(() => {\n computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns); \n });\n ensureWidths(colCount);\n nileGrid.colTemplate = rebuildTemplate(colCount, nileGrid.columnWidths);\n};\n\n/** \n * @param nileGrid The parent NileGrid instance\n * @param rows Array of grid row elements\n * @param carry Array tracking rowspan, colspan continuation\n * @param colCount Total column count\n * @param stickyLeftIndexes List of sticky-left column indexes\n * @param stickyRightIndexes List of sticky-right column indexes\n * @param columnWidths Computed column widths\n * @param opts Options controlling layout behavior\n * @returns Final computed column count\n */\nfunction layoutRows(\n nileGrid: NileGrid,\n rows: HTMLElement[],\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean; handleRowBg?: boolean }\n): number {\n rows.forEach((row, rIdx) => {\n if (nileGrid.hoverable) row.setAttribute('hover', 'true');\n colCount = layoutSingleRow(\n nileGrid,\n row,\n rIdx,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n opts\n );\n });\n return colCount;\n}\n\n/**\n * @param nileGrid The grid element being processed\n * @param row Single row element to layout\n * @param rIdx Row index in the grid\n * @param carry Rowspan tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param columnWidths Column widths array\n * @param opts Layout options\n * @returns Updated column count\n */\nfunction layoutSingleRow(\n nileGrid: NileGrid,\n row: HTMLElement,\n rIdx: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean }\n): number {\n let c = 1;\n const rStart = rIdx + 1;\n const items = [...row.querySelectorAll(opts.itemSelector)] as HTMLElement[];\n\n for (const el of items) {\n while ((carry[c - 1] || 0) > 0) c++;\n ({ c, colCount } = layoutCell(\n nileGrid,\n el,\n c,\n rStart,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n opts\n ));\n }\n decrementCarry(carry);\n return colCount;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param el Cell element being laid out\n * @param c Current column index\n * @param rStart Row start index\n * @param carry Rowspan carry array\n * @param colCount Current max column count\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param columnWidths Column widths\n * @param opts Sticky and layout options\n * @returns Updated column index and column count\n */\nfunction layoutCell(\n nileGrid: NileGrid,\n el: HTMLElement,\n c: number,\n rStart: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[],\n opts: { useStickyAttr?: boolean }\n) {\n const colspan = Math.max(1, +el.getAttribute('colspan')! || 1);\n const rowspan = Math.max(1, +el.getAttribute('rowspan')! || 1);\n handleRowspan(nileGrid, el, rowspan);\n\n const cStart = c;\n const cEnd = c + colspan;\n setGridPosition(el, cStart, cEnd, rStart, rowspan);\n handleSticky(\n el,\n cStart,\n opts,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths\n );\n\n for (let k = 0; k < colspan; k++) {\n carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);\n }\n return {\n c: cEnd,\n colCount: Math.max(colCount, cEnd - 1),\n };\n}\n\n/** \n * @param nileGrid The grid container \n * @param el Element that spans multiple rows \n * @param rowspan Number of rows to span \n */\nfunction handleRowspan(nileGrid: NileGrid, el: HTMLElement, rowspan: number) {\n if (rowspan <= 1) return;\n el.style.position = \"absolute\";\n el.style.zIndex = \"1\";\n\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n if (!nileGrid.headHeight) nileGrid.headHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n } else {\n if (!nileGrid.cellHeight) nileGrid.cellHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n }\n}\n\n/**\n * @param el Grid item element\n * @param cStart Starting column index\n * @param cEnd Ending column index\n * @param rStart Starting row index\n * @param rowspan Row span value\n */\nfunction setGridPosition(\n el: HTMLElement,\n cStart: number,\n cEnd: number,\n rStart: number,\n rowspan: number\n) {\n const rEnd = rStart + rowspan;\n el.style.gridColumn = `${cStart} / ${cEnd}`;\n el.style.gridRow = `${rStart} / ${rEnd}`;\n (el as any).dataset.cStart = String(cStart);\n}\n\n/**\n * @param el Grid item element\n * @param cStart Column start index\n * @param opts Sticky configuration options\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param columnWidths Array of column widths\n */\nfunction handleSticky(\n el: HTMLElement,\n cStart: number,\n opts: { useStickyAttr?: boolean },\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n) {\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"left\" && !stickyLeftIndexes.includes(cStart - 1)) {\n stickyLeftIndexes.push(cStart - 1);\n }\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"right\" && !stickyRightIndexes.includes(cStart - 1)) {\n stickyRightIndexes.push(cStart - 1);\n }\n applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes, columnWidths);\n}\n\n/**\n * @param carry Rowspan tracking array\n */\nfunction decrementCarry(carry: number[]) {\n for (let i = 0; i < carry.length; i++) {\n if (carry[i] > 0) {\n carry[i]--;\n }\n }\n}\n\n/**\n * @param el Target grid cell element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param columnWidths Column widths array\n */\nfunction applySticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n) {\n const onLeft = stickyLeftIndexes.includes(colIndex);\n const onRight = stickyRightIndexes.includes(colIndex);\n if (!onLeft && !onRight) return;\n\n prepareStickyElement(el);\n if (onLeft && !onRight) {\n applyLeftSticky(el, colIndex, stickyLeftIndexes, columnWidths);\n } else {\n applyRightSticky(el, colIndex, stickyRightIndexes, columnWidths);\n }\n}\n\n/**\n * @param el Grid item element to prepare for sticky positioning\n */\nfunction prepareStickyElement(el: HTMLElement) {\n el.style.position = 'sticky';\n el.style.zIndex = '1';\n el.style.left = '';\n el.style.right = '';\n el.removeAttribute('data-sticky');\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left column indexes\n * @param columnWidths Column width array\n */\nfunction applyLeftSticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n columnWidths: number[]\n) {\n el.setAttribute('data-sticky', 'left');\n const leftOrder = [...stickyLeftIndexes].sort((a, b) => a - b);\n const pos = leftOrder.indexOf(colIndex);\n const left = computeOffset(leftOrder, pos, columnWidths);\n el.style.left = `${Math.max(0, Math.round(left))}px`;\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyRightIndexes Sticky-right indexes\n * @param columnWidths Column widths array\n */\nfunction applyRightSticky(\n el: HTMLElement,\n colIndex: number,\n stickyRightIndexes: number[],\n columnWidths: number[]\n) {\n el.setAttribute('data-sticky', 'right');\n const rightOrder = [...stickyRightIndexes].sort((a, b) => b - a);\n const pos = rightOrder.indexOf(colIndex);\n const scrollbarComp = getScrollbarComp(el);\n const right = computeOffset(rightOrder, pos, columnWidths, scrollbarComp);\n el.style.right = `${Math.max(0, Math.round(right - 2))}px`;\n}\n\n/**\n * @param nileGrid Grid instance to sync shadows for\n */\nexport function syncStickyShadows(nileGrid: NileGrid) {\n const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);\n const { head, body } = getHeadAndBody(nileGrid);\n\n toggleStickyShadow(head, 'nile-grid-head-item', 'left', 'shadow-right', showRightOnLeftStickies);\n toggleStickyShadow(body, 'nile-grid-cell-item', 'left', 'shadow-right', showRightOnLeftStickies);\n toggleStickyShadow(head, 'nile-grid-head-item', 'right', 'shadow-left', showLeftOnRightStickies);\n toggleStickyShadow(body, 'nile-grid-cell-item', 'right', 'shadow-left', showLeftOnRightStickies);\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Object containing booleans for left/right shadow visibility\n */\nfunction getShadowStates(nileGrid: NileGrid) {\n const max = Math.max(0, nileGrid.scrollWidth - nileGrid.clientWidth);\n return {\n showRightOnLeftStickies: nileGrid.scrollLeft > 0,\n showLeftOnRightStickies: nileGrid.scrollLeft < max\n };\n}\n\n/**\n * @param root Root element (head or body)\n * @param tag Target tag selector\n * @param side Sticky side ('left' or 'right')\n * @param cls Shadow CSS class to toggle\n * @param on Whether to apply or remove the shadow\n */\nfunction toggleStickyShadow(\n root: HTMLElement | undefined,\n tag: string,\n side: 'left' | 'right',\n cls: string,\n on: boolean\n) {\n if (!root) return;\n const sel = `${tag}[data-sticky=\"${side}\"]`;\n root.querySelectorAll<HTMLElement>(sel).forEach(el => el.classList.toggle(cls, on));\n}\n\n/** rebuildTemplate\n * @param colCount Number of columns\n * @param columnWidths Array of explicit column widths (px)\n * @returns CSS grid-template-columns string\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\n/** computeHeadLayout\n * @param nileGrid Grid instance\n * @param headRows Header rows (<nile-grid-row>[])\n * @param carryHead Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @param columnWidths Column widths array\n * @returns Final column count after header layout\n */\nfunction computeHeadLayout(\n nileGrid: NileGrid,\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n): number {\n return layoutRows(\n nileGrid,\n headRows,\n carryHead,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n {\n itemSelector: 'nile-grid-head-item',\n useStickyAttr: true,\n handleRowBg: false,\n }\n );\n}\n\n/** computeBodyLayout\n * @param nileGrid Grid instance\n * @param bodyRows Body rows (<nile-grid-row>[])\n * @param carryBody Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @param columnWidths Column widths array\n * @returns Final column count after body layout\n */\nfunction computeBodyLayout(\n nileGrid: NileGrid,\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n): number {\n return layoutRows(\n nileGrid,\n bodyRows,\n carryBody,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n {\n itemSelector: 'nile-grid-cell-item',\n useStickyAttr: false,\n handleRowBg: true,\n }\n );\n}\n\n/**\n * @param nileGrid Grid container element\n * @param colCount Total number of columns\n * @param columnWidths Column width array\n * @param headElement Header element for template update\n */\nexport function applyColumnsTemplate(\n nileGrid: NileGrid,\n columnWidths: number[]\n) {\n const cols = columnWidths\n .map((w, idx) => {\n if (idx === columnWidths.length - 1) {\n return `minmax(${Math.round(w)}px, auto)`;\n }\n return `${Math.max(0, Math.round(w))}px`;\n })\n .join(' ');\n nileGrid.style.setProperty('--nile-grid-columns', cols);\n}\n\n/**\n * @param order Array of sticky column indexes\n * @param pos Current position within order\n * @param widths Column widths\n * @param base Base offset value\n * @returns Computed pixel offset\n */\nfunction computeOffset(\n order: number[],\n pos: number,\n widths: number[],\n base = 0\n) {\n let total = base;\n for (let i = 0; i < pos; i++) total += widths[order[i]] ?? 0;\n return total;\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Head and body elements from the grid slot\n */\nfunction getHeadAndBody(nileGrid: NileGrid) {\n if (!nileGrid.shadowRoot) return { head: undefined, body: undefined };\n const assigned = nileGrid.slotEl.assignedElements();\n const find = (tag: string) =>\n assigned.find(n => n.tagName.toLowerCase() === tag) as HTMLElement | undefined;\n return { head: find('nile-grid-head'), body: find('nile-grid-body') };\n}"]}
1
+ {"version":3,"file":"nile-grid.layout.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.layout.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { getHead, getBody } from './nile-grid.utils';\nimport { getScrollbarComp } from './nile-grid.resize';\nimport { addVariablesValue, computeColumnWidths } from './nile-grid.width';\nimport { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';\n\n/**\n * @param nileGrid Parent NileGrid instance\n * @param slotEl <slot> element hosting head/body\n * @param ensureWidths Function to ensure columnWidths length matches colCount\n * @param stickyLeftIndexes Mutable list of left-sticky column indexes\n * @param stickyRightIndexes Mutable list of right-sticky column indexes\n * @returns void\n */\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[]\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!head && !body) return;\n\n let colCount = nileGrid.colCount || 0;\n let headerChanged = false;\n\n if (nileGrid.needsStructureLayout) {\n headerChanged = true;\n \n nileGrid.headRows = head ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[]) : [];\n colCount = 0;\n if (nileGrid.headRows.length) {\n colCount = computeHeadLayout(nileGrid, nileGrid.headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n\n if (body) {\n nileGrid.bodyRows = Array.from(body.querySelectorAll('nile-grid-row')) as HTMLElement[];\n if (colCount) {\n computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n } else {\n colCount = computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n }\n\n if (nileGrid.stickyLeftIndexes.length || nileGrid.stickyRightIndexes.length) {\n cacheStickyEls(nileGrid);\n } else {\n nileGrid.stickyLeftHeadEls = [];\n nileGrid.stickyRightHeadEls = [];\n nileGrid.stickyLeftBodyEls = [];\n nileGrid.stickyRightBodyEls = [];\n nileGrid.shadowLeftVisibleSticky = false;\n nileGrid.shadowRightVisibleSticky = false;\n }\n\n nileGrid.colCount = colCount;\n nileGrid.needsStructureLayout = false;\n nileGrid.needsSpanLayout = false;\n nileGrid.needsWidthLayout = true;\n } else if (nileGrid.needsSpanLayout && body) {\n const bodyRows = nileGrid.bodyRows;\n colCount = nileGrid.colCount || 0;\n if (colCount) {\n computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n nileGrid.needsSpanLayout = false;\n }\n\n if (nileGrid.needsWidthLayout) {\n colCount = nileGrid.colCount || colCount;\n if (!colCount) return;\n\n ensureWidths(colCount);\n computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns, headerChanged);\n addVariablesValue(nileGrid);\n applyColumnsTemplate(nileGrid, nileGrid.columnWidths);\n nileGrid.needsWidthLayout = false;\n }\n};\n\nexport function cacheStickyEls(nileGrid: NileGrid) {\n const { head, body } = getHeadAndBody(nileGrid);\n\n nileGrid.stickyLeftHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"right\"]')) : [];\n nileGrid.stickyLeftBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"right\"]')) : [];\n}\n\n/** \n * @param nileGrid The parent NileGrid instance\n * @param rows Array of grid row elements\n * @param carry Array tracking rowspan, colspan continuation\n * @param colCount Total column count\n * @param stickyLeftIndexes List of sticky-left column indexes\n * @param stickyRightIndexes List of sticky-right column indexes\n * @param columnWidths Computed column widths\n * @param opts Options controlling layout behavior\n * @returns Final computed column count\n */\nfunction layoutRows(\n nileGrid: NileGrid,\n rows: HTMLElement[],\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean; handleRowBg?: boolean }\n): number {\n rows.forEach((row, rIdx) => {\n if (nileGrid.hoverable) row.setAttribute('hover', 'true');\n colCount = layoutSingleRow(\n nileGrid,\n row,\n rIdx,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n );\n });\n return colCount;\n}\n\n/**\n * @param nileGrid The grid element being processed\n * @param row Single row element to layout\n * @param rIdx Row index in the grid\n * @param carry Rowspan tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param opts Layout options\n * @returns Updated column count\n */\nfunction layoutSingleRow(\n nileGrid: NileGrid,\n row: HTMLElement,\n rIdx: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean }\n): number {\n let c = 1;\n const rStart = rIdx + 1;\n const tag = opts.itemSelector.toLowerCase();\n const items = Array.from(row.children).filter(\n (child): child is HTMLElement =>\n child.tagName.toLowerCase() === tag\n );\n\n for (const el of items) {\n while ((carry[c - 1] || 0) > 0) c++;\n ({ c, colCount } = layoutCell(\n nileGrid,\n el,\n c,\n rStart,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n ));\n }\n decrementCarry(carry);\n return colCount;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param el Cell element being laid out\n * @param c Current column index\n * @param rStart Row start index\n * @param carry Rowspan carry array\n * @param colCount Current max column count\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param opts Sticky and layout options\n * @returns Updated column index and column count\n */\nfunction layoutCell(\n nileGrid: NileGrid,\n el: HTMLElement,\n c: number,\n rStart: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { useStickyAttr?: boolean }\n) {\n const colspan = Math.max(1, +el.getAttribute('colspan')! || 1);\n const rowspan = Math.max(1, +el.getAttribute('rowspan')! || 1);\n handleRowspan(nileGrid, el, rowspan);\n\n const cStart = c;\n const cEnd = c + colspan;\n setGridPosition(el, cStart, cEnd, rStart, rowspan);\n if (opts.useStickyAttr || stickyLeftIndexes.length || stickyRightIndexes.length) {\n handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes);\n }\n\n for (let k = 0; k < colspan; k++) {\n carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);\n }\n return {\n c: cEnd,\n colCount: Math.max(colCount, cEnd - 1),\n };\n}\n\n/** \n * @param nileGrid The grid container \n * @param el Element that spans multiple rows \n * @param rowspan Number of rows to span \n */\nfunction handleRowspan(nileGrid: NileGrid, el: HTMLElement, rowspan: number) {\n if (rowspan <= 1) return;\n el.style.position = \"absolute\";\n el.style.zIndex = \"1\";\n\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n if (!nileGrid.headHeight) nileGrid.headHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n } else {\n if (!nileGrid.cellHeight) nileGrid.cellHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n }\n}\n\n/**\n * @param el Grid item element\n * @param cStart Starting column index\n * @param cEnd Ending column index\n * @param rStart Starting row index\n * @param rowspan Row span value\n */\nfunction setGridPosition(\n el: HTMLElement,\n cStart: number,\n cEnd: number,\n rStart: number,\n rowspan: number\n) {\n const rEnd = rStart + rowspan;\n el.style.gridColumn = `${cStart} / ${cEnd}`;\n el.style.gridRow = `${rStart} / ${rEnd}`;\n (el as any).dataset.cStart = String(cStart);\n}\n\n/**\n * @param el Grid item element\n * @param cStart Column start index\n * @param opts Sticky configuration options\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n */\nfunction handleSticky(\n el: HTMLElement,\n cStart: number,\n opts: { useStickyAttr?: boolean },\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"left\" && !stickyLeftIndexes.includes(cStart - 1)) {\n stickyLeftIndexes.push(cStart - 1);\n }\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"right\" && !stickyRightIndexes.includes(cStart - 1)) {\n stickyRightIndexes.push(cStart - 1);\n }\n applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes);\n}\n\n/**\n * @param carry Rowspan tracking array\n */\nfunction decrementCarry(carry: number[]) {\n for (let i = 0; i < carry.length; i++) {\n if (carry[i] > 0) {\n carry[i]--;\n }\n }\n}\n\n/**\n * @param el Target grid cell element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applySticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n const onLeft = stickyLeftIndexes.includes(colIndex);\n const onRight = stickyRightIndexes.includes(colIndex);\n if (!onLeft && !onRight) return;\n\n prepareStickyElement(el);\n if (onLeft && !onRight) {\n applyLeftSticky(el, colIndex);\n } else {\n applyRightSticky(el, colIndex);\n }\n}\n\n/**\n * @param el Grid item element to prepare for sticky positioning\n */\nfunction prepareStickyElement(el: HTMLElement) {\n el.style.position = 'sticky';\n el.style.left = '';\n el.style.right = '';\n el.removeAttribute('data-sticky');\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left column indexes\n */\nfunction applyLeftSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'left');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.left = `var(--sticky-left-${colIndex})`;\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applyRightSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'right');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.right = `var(--sticky-right-${colIndex})`;\n}\n\n/**\n * @param nileGrid Grid instance to sync shadows for\n */\nexport function syncStickyShadows(nileGrid: NileGrid) {\n if (!nileGrid.stickyLeftIndexes.length && !nileGrid.stickyRightIndexes.length) {\n return;\n }\n\n const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);\n\n if (\n nileGrid.shadowLeftVisibleSticky === showRightOnLeftStickies &&\n nileGrid.shadowRightVisibleSticky === showLeftOnRightStickies\n ) {\n return;\n }\n\n nileGrid.shadowLeftVisibleSticky = showRightOnLeftStickies;\n nileGrid.shadowRightVisibleSticky = showLeftOnRightStickies;\n \n\n for (const el of nileGrid.stickyLeftHeadEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyLeftBodyEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyRightHeadEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n for (const el of nileGrid.stickyRightBodyEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n}\n\n\n/**\n * @param nileGrid Grid instance\n * @returns Object containing booleans for left/right shadow visibility\n */\nfunction getShadowStates(nileGrid: NileGrid) {\n const max = Math.max(0, nileGrid.scrollWidth - nileGrid.clientWidth);\n return {\n showRightOnLeftStickies: nileGrid.scrollLeft > 0,\n showLeftOnRightStickies: nileGrid.scrollLeft < max\n };\n}\n\n/** computeHeadLayout\n * @param nileGrid Grid instance\n * @param headRows Header rows (<nile-grid-row>[])\n * @param carryHead Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after header layout\n */\nfunction computeHeadLayout(\n nileGrid: NileGrid,\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n headRows,\n carryHead,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-head-item',\n useStickyAttr: true,\n handleRowBg: false,\n }\n );\n}\n\n/** computeBodyLayout\n * @param nileGrid Grid instance\n * @param bodyRows Body rows (<nile-grid-row>[])\n * @param carryBody Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after body layout\n */\nfunction computeBodyLayout(\n nileGrid: NileGrid,\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n bodyRows,\n carryBody,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-cell-item',\n useStickyAttr: false,\n handleRowBg: true,\n }\n );\n}\n\n/**\n * @param nileGrid Grid container element\n * @param colCount Total number of columns\n * @param columnWidths Column width array\n */\nexport function applyColumnsTemplate(\n nileGrid: NileGrid,\n columnWidths: number[]\n) {\n const cols = columnWidths\n .map((w, idx) => {\n if (idx === columnWidths.length - 1) {\n return `minmax(${Math.round(w)}px, auto)`;\n }\n return `${Math.max(0, Math.round(w))}px`;\n })\n .join(' ');\n nileGrid.style.setProperty('--nile-grid-columns', cols);\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Head and body elements from the grid slot\n */\nfunction getHeadAndBody(nileGrid: NileGrid) {\n if (!nileGrid.shadowRoot) return { head: undefined, body: undefined };\n const assigned = nileGrid.slotEl.assignedElements();\n const find = (tag: string) =>\n assigned.find(n => n.tagName.toLowerCase() === tag) as HTMLElement | undefined;\n return { head: find('nile-grid-head'), body: find('nile-grid-body') };\n}"]}
@@ -56,3 +56,4 @@ export declare function getScrollbarComp(el: HTMLElement): number;
56
56
  * @param columnWidths New column width array
57
57
  */
58
58
  export declare function applyAfterResize(grid: any, col: number): void;
59
+ export declare function updateResizeGuides(grid: NileGrid, col: number): void;
@@ -1,5 +1,5 @@
1
1
  import { takeFromRight, giveToRight, totalReducibleRight } from './nile-grid.width';
2
- import { rebuildTemplate, syncStickyShadows, applyColumnsTemplate } from './nile-grid.layout';
2
+ import { applyColumnsTemplate } from './nile-grid.layout';
3
3
  /**
4
4
  * @param minColumnWidth Minimum allowed column width
5
5
  * @param resizeStart Guide line element (start)
@@ -36,6 +36,7 @@ export const resizeLinesHandler = (minColumnWidth, resizeStart, resizeEnd, col,
36
36
  */
37
37
  export function computeNewWidth(opts) {
38
38
  const { target, col, widthPx, floor, columnWidths } = opts;
39
+ // move this outside - getAttribute
39
40
  const hasSpan = !!target.getAttribute('colspan') &&
40
41
  parseInt(target.getAttribute('colspan'), 10) > 1;
41
42
  const prevW = columnWidths[col] ?? floor;
@@ -72,6 +73,8 @@ export function resizeNoScroll({ grid, col, prevW, newW, floor }) {
72
73
  */
73
74
  export function resizeWithScroll(opts) {
74
75
  const { grid, col, newW } = opts;
76
+ if (grid.lockedWidthColumns?.[col])
77
+ return;
75
78
  grid.columnWidths[col] = newW;
76
79
  }
77
80
  /**
@@ -88,8 +91,9 @@ export function getScrollbarComp(el) {
88
91
  */
89
92
  export function applyAfterResize(grid, col) {
90
93
  resizeLinesHandler(grid.minColumnWidth, grid.resizeStart, grid.resizeEnd, col, grid.scrollHeight, grid.columnWidths);
91
- grid.colTemplate = rebuildTemplate(grid.columnWidths.length, grid.columnWidths);
92
- syncStickyShadows(grid);
93
94
  applyColumnsTemplate(grid, grid.columnWidths);
94
95
  }
96
+ export function updateResizeGuides(grid, col) {
97
+ resizeLinesHandler(grid.minColumnWidth, grid.resizeStart, grid.resizeEnd, col, grid.scrollHeight, grid.columnWidths);
98
+ }
95
99
  //# sourceMappingURL=nile-grid.resize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid.resize.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.resize.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { takeFromRight, giveToRight, totalReducibleRight } from './nile-grid.width';\nimport { rebuildTemplate, syncStickyShadows, applyColumnsTemplate } from './nile-grid.layout';\n\n/**\n * @param minColumnWidth Minimum allowed column width\n * @param resizeStart Guide line element (start)\n * @param resizeEnd Guide line element (end)\n * @param col Active column index\n * @param scrollHeight Height to apply to guides\n * @param columnWidths Current column widths\n * @returns void\n */\nexport const resizeLinesHandler = (\n minColumnWidth: number,\n resizeStart: HTMLElement,\n resizeEnd: HTMLElement,\n col: number,\n scrollHeight: number,\n columnWidths: number[],\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n const floor = minColumnWidth;\n const safe = (n: number) => Math.max(0, Math.round(n || 0));\n const sum = (arr: number[], endExclusive: number) => safe(arr.slice(0, Math.max(0, endExclusive)).reduce((a, b) => a + (b || 0), 0));\n\n const totalGridWidth = safe(columnWidths.reduce((a, b) => a + (b || 0), 0));\n const baseLeft = sum(columnWidths, col);\n const appliedColWidth = safe(Math.max(floor, columnWidths[col] ?? floor));\n let handleLeft = baseLeft + appliedColWidth;\n\n const minEdge = baseLeft + floor;\n const maxEdge = totalGridWidth;\n handleLeft = Math.min(Math.max(handleLeft, minEdge), maxEdge);\n handleLeft = Math.max(handleLeft, 20);\n\n resizeStart.style.left = `${handleLeft - 6}px`;\n resizeEnd.style.left = `${handleLeft - 2}px`;\n};\n\n/**\n * @param targetWidth New computed width in pixels\n * @param min Minimum allowed width\n * @param max Maximum allowed width\n * @returns Adjusted column width\n */\nexport function computeNewWidth(opts: {\n target: HTMLElement;\n col: number;\n widthPx: number;\n floor: number;\n columnWidths: number[];\n}) {\n const { target, col, widthPx, floor, columnWidths } = opts;\n const hasSpan =\n !!target.getAttribute('colspan') &&\n parseInt(target.getAttribute('colspan')!, 10) > 1;\n const prevW = columnWidths[col] ?? floor;\n const newWraw = hasSpan ? widthPx - (columnWidths[col - 1] ?? 0) : widthPx;\n const newW = Math.max(\n floor,\n Math.round(Number.isFinite(newWraw) ? newWraw : prevW)\n );\n return { prevW, newW, delta0: newW - prevW };\n}\n\n/**\n * @param columnWidths Current widths array\n * @param containerWidth Container total width\n */\nexport function resizeNoScroll({ grid, col, prevW, newW, floor }: {\n grid: NileGrid;\n col: number;\n prevW: number;\n newW: number;\n floor: number;\n}) {\n if (grid.lockedWidthColumns?.[col]) return;\n let delta = newW - prevW;\n if (delta > 0) {\n const rightReducible = totalReducibleRight(grid.columnWidths, col + 1, floor, grid.lockedWidthColumns);\n if (rightReducible <= 0) return;\n delta = Math.min(delta, rightReducible);\n grid.columnWidths[col] = prevW + delta;\n takeFromRight(grid.columnWidths, col + 1, delta, floor, grid.lockedWidthColumns);\n } else {\n const newColW = Math.max(floor, newW);\n const actualShrink = prevW - newColW;\n grid.columnWidths[col] = newColW;\n giveToRight(grid.columnWidths, col + 1, actualShrink);\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param containerWidth Container width\n */\nexport function resizeWithScroll(opts: {\n grid: NileGrid;\n col: number;\n newW: number;\n}) {\n const { grid, col, newW } = opts;\n grid.columnWidths[col] = newW;\n}\n\n/**\n * @param el Target element within grid\n * @returns Scrollbar width compensation value\n */\nexport function getScrollbarComp(el: HTMLElement) {\n const scroller = el.closest('nile-grid') as HTMLElement | null;\n return scroller ? scroller.offsetWidth - scroller.clientWidth : 0;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param columnWidths New column width array\n */\nexport function applyAfterResize(grid: any, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n grid.colTemplate = rebuildTemplate(\n grid.columnWidths.length,\n grid.columnWidths\n );\n syncStickyShadows(grid);\n applyColumnsTemplate(grid, grid.columnWidths);\n}"]}
1
+ {"version":3,"file":"nile-grid.resize.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.resize.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { takeFromRight, giveToRight, totalReducibleRight } from './nile-grid.width';\nimport { applyColumnsTemplate } from './nile-grid.layout';\n\n/**\n * @param minColumnWidth Minimum allowed column width\n * @param resizeStart Guide line element (start)\n * @param resizeEnd Guide line element (end)\n * @param col Active column index\n * @param scrollHeight Height to apply to guides\n * @param columnWidths Current column widths\n * @returns void\n */\nexport const resizeLinesHandler = (\n minColumnWidth: number,\n resizeStart: HTMLElement,\n resizeEnd: HTMLElement,\n col: number,\n scrollHeight: number,\n columnWidths: number[],\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n const floor = minColumnWidth;\n const safe = (n: number) => Math.max(0, Math.round(n || 0));\n const sum = (arr: number[], endExclusive: number) => safe(arr.slice(0, Math.max(0, endExclusive)).reduce((a, b) => a + (b || 0), 0));\n\n const totalGridWidth = safe(columnWidths.reduce((a, b) => a + (b || 0), 0));\n const baseLeft = sum(columnWidths, col);\n const appliedColWidth = safe(Math.max(floor, columnWidths[col] ?? floor));\n let handleLeft = baseLeft + appliedColWidth;\n\n const minEdge = baseLeft + floor;\n const maxEdge = totalGridWidth;\n handleLeft = Math.min(Math.max(handleLeft, minEdge), maxEdge);\n handleLeft = Math.max(handleLeft, 20);\n\n resizeStart.style.left = `${handleLeft - 6}px`;\n resizeEnd.style.left = `${handleLeft - 2}px`;\n};\n\n/**\n * @param targetWidth New computed width in pixels\n * @param min Minimum allowed width\n * @param max Maximum allowed width\n * @returns Adjusted column width\n */\nexport function computeNewWidth(opts: {\n target: HTMLElement;\n col: number;\n widthPx: number;\n floor: number;\n columnWidths: number[];\n}) {\n const { target, col, widthPx, floor, columnWidths } = opts;\n\n // move this outside - getAttribute\n const hasSpan =\n !!target.getAttribute('colspan') &&\n parseInt(target.getAttribute('colspan')!, 10) > 1;\n const prevW = columnWidths[col] ?? floor;\n const newWraw = hasSpan ? widthPx - (columnWidths[col - 1] ?? 0) : widthPx;\n const newW = Math.max(floor, Math.round(Number.isFinite(newWraw) ? newWraw : prevW));\n return { prevW, newW, delta0: newW - prevW };\n}\n\n/**\n * @param columnWidths Current widths array\n * @param containerWidth Container total width\n */\nexport function resizeNoScroll({ grid, col, prevW, newW, floor }: {\n grid: NileGrid;\n col: number;\n prevW: number;\n newW: number;\n floor: number;\n}) {\n if (grid.lockedWidthColumns?.[col]) return;\n let delta = newW - prevW;\n if (delta > 0) {\n const rightReducible = totalReducibleRight(grid.columnWidths, col + 1, floor, grid.lockedWidthColumns);\n if (rightReducible <= 0) return;\n delta = Math.min(delta, rightReducible);\n grid.columnWidths[col] = prevW + delta;\n takeFromRight(grid.columnWidths, col + 1, delta, floor, grid.lockedWidthColumns);\n } else {\n const newColW = Math.max(floor, newW);\n const actualShrink = prevW - newColW;\n grid.columnWidths[col] = newColW;\n giveToRight(grid.columnWidths, col + 1, actualShrink);\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param containerWidth Container width\n */\nexport function resizeWithScroll(opts: {\n grid: NileGrid;\n col: number;\n newW: number;\n}) {\n const { grid, col, newW } = opts;\n if (grid.lockedWidthColumns?.[col]) return;\n grid.columnWidths[col] = newW;\n}\n\n/**\n * @param el Target element within grid\n * @returns Scrollbar width compensation value\n */\nexport function getScrollbarComp(el: HTMLElement) {\n const scroller = el.closest('nile-grid') as HTMLElement | null;\n return scroller ? scroller.offsetWidth - scroller.clientWidth : 0;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param columnWidths New column width array\n */\nexport function applyAfterResize(grid: any, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n applyColumnsTemplate(grid, grid.columnWidths);\n}\n\nexport function updateResizeGuides(grid: NileGrid, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n}"]}
@@ -25,3 +25,10 @@ export declare const getHead: (slotEl: any) => HTMLElement;
25
25
  * @returns <nile-grid-body> element or null
26
26
  */
27
27
  export declare const getBody: (slotEl: any) => HTMLElement;
28
+ export declare const scrollEventHandler: (el: NileGrid) => void;
29
+ /** copyArrayValuesInPlace
30
+ * @param target Target array
31
+ * @param source Source array
32
+ * @returns void
33
+ */
34
+ export declare function copyArrayValuesInPlace(target: number[], source: number[]): void;