@aquera/nile-elements 0.1.70-beta-1.0 → 0.1.70-beta-1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +15 -0
  2. package/demo/index.html +248 -332
  3. package/dist/{fixture-28d63bc4.cjs.js → fixture-5b79f853.cjs.js} +2 -2
  4. package/dist/{fixture-28d63bc4.cjs.js.map → fixture-5b79f853.cjs.js.map} +1 -1
  5. package/dist/{fixture-ba65eb22.esm.js → fixture-90b199c4.esm.js} +1 -1
  6. package/dist/{fixture-78a015b8.esm.js → fixture-cf7bfcf5.esm.js} +1 -1
  7. package/dist/{fixture-324a7ef9.cjs.js → fixture-dbd66009.cjs.js} +2 -2
  8. package/dist/{fixture-324a7ef9.cjs.js.map → fixture-dbd66009.cjs.js.map} +1 -1
  9. package/dist/index.cjs.js +1 -1
  10. package/dist/index.esm.js +1 -1
  11. package/dist/index.js +103 -118
  12. package/dist/internal/resizable-table-helper.cjs.js +1 -1
  13. package/dist/internal/resizable-table-helper.cjs.js.map +1 -1
  14. package/dist/internal/resizable-table-helper.esm.js +1 -1
  15. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  16. package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
  17. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  18. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  19. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  20. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  21. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  22. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  23. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  24. package/dist/nile-button/nile-button.test.esm.js +1 -1
  25. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  26. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
  27. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  28. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  29. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  30. package/dist/nile-card/nile-card.test.esm.js +1 -1
  31. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  32. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  33. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  34. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  35. package/dist/nile-code-editor/extensionSetup.cjs.js +3 -3
  36. package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
  37. package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
  38. package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
  39. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  40. package/dist/nile-code-editor/nile-code-editor.esm.js +2 -2
  41. package/dist/nile-code-editor/theme.cjs.js +1 -1
  42. package/dist/nile-code-editor/theme.cjs.js.map +1 -1
  43. package/dist/nile-code-editor/theme.esm.js +1 -1
  44. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  45. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  46. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  47. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  48. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  49. package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
  50. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  51. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  52. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  53. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
  54. package/dist/nile-file-preview/nile-file-preview.test.cjs.js +1 -1
  55. package/dist/nile-file-preview/nile-file-preview.test.esm.js +1 -1
  56. package/dist/nile-file-upload/nile-file-upload.test.cjs.js +1 -1
  57. package/dist/nile-file-upload/nile-file-upload.test.esm.js +1 -1
  58. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  59. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
  60. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  61. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
  62. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  63. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
  64. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  65. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  66. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  67. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  68. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  69. package/dist/nile-input/nile-input.test.esm.js +1 -1
  70. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  71. package/dist/nile-link/nile-link.test.esm.js +1 -1
  72. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  73. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  74. package/dist/nile-option/nile-option.cjs.js +1 -1
  75. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  76. package/dist/nile-option/nile-option.esm.js +2 -2
  77. package/dist/nile-option-group/nile-option-group.cjs.js +1 -1
  78. package/dist/nile-option-group/nile-option-group.cjs.js.map +1 -1
  79. package/dist/nile-option-group/nile-option-group.esm.js +5 -5
  80. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  81. package/dist/nile-popover/nile-popover.test.esm.js +1 -1
  82. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  83. package/dist/nile-popup/nile-popup.test.esm.js +1 -1
  84. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  85. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
  86. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  87. package/dist/nile-radio/nile-radio.test.esm.js +1 -1
  88. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  89. package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
  90. package/dist/nile-select/nile-select.cjs.js +1 -1
  91. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  92. package/dist/nile-select/nile-select.esm.js +9 -9
  93. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  94. package/dist/nile-select/nile-select.test.esm.js +1 -1
  95. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  96. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
  97. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  98. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  99. package/dist/nile-table-body/nile-table-body.cjs.js +1 -1
  100. package/dist/nile-table-body/nile-table-body.cjs.js.map +1 -1
  101. package/dist/nile-table-body/nile-table-body.esm.js +3 -2
  102. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js +1 -1
  103. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js.map +1 -1
  104. package/dist/nile-table-cell-item/nile-table-cell-item.esm.js +1 -1
  105. package/dist/nile-table-header-item/nile-table-header-item.cjs.js +1 -1
  106. package/dist/nile-table-header-item/nile-table-header-item.cjs.js.map +1 -1
  107. package/dist/nile-table-header-item/nile-table-header-item.esm.js +2 -2
  108. package/dist/nile-table-row/nile-table-row.cjs.js +1 -1
  109. package/dist/nile-table-row/nile-table-row.cjs.js.map +1 -1
  110. package/dist/nile-table-row/nile-table-row.css.cjs.js +1 -1
  111. package/dist/nile-table-row/nile-table-row.css.cjs.js.map +1 -1
  112. package/dist/nile-table-row/nile-table-row.css.esm.js +0 -47
  113. package/dist/nile-table-row/nile-table-row.esm.js +6 -33
  114. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  115. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
  116. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +1 -1
  117. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +1 -1
  118. package/dist/src/index.d.ts +1 -0
  119. package/dist/src/index.js +1 -0
  120. package/dist/src/index.js.map +1 -1
  121. package/dist/src/internal/resizable-helper.d.ts +59 -0
  122. package/dist/src/internal/resizable-helper.js +115 -0
  123. package/dist/src/internal/resizable-helper.js.map +1 -0
  124. package/dist/src/internal/resizable-styles.d.ts +16 -0
  125. package/dist/src/internal/resizable-styles.js +144 -0
  126. package/dist/src/internal/resizable-styles.js.map +1 -0
  127. package/dist/src/internal/resizable-table-helper.d.ts +5 -0
  128. package/dist/src/internal/resizable-table-helper.js +27 -4
  129. package/dist/src/internal/resizable-table-helper.js.map +1 -1
  130. package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +17 -0
  131. package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +310 -0
  132. package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +34 -0
  133. package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +31 -0
  134. package/dist/src/nile-code-editor/nile-code-editor.d.ts +2 -0
  135. package/dist/src/nile-code-editor/nile-code-editor.js +22 -5
  136. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  137. package/dist/src/nile-code-editor/theme.d.ts +9 -0
  138. package/dist/src/nile-code-editor/theme.js +9 -0
  139. package/dist/src/nile-code-editor/theme.js.map +1 -1
  140. package/dist/src/nile-grid/data-processor.d.ts +37 -0
  141. package/dist/src/nile-grid/data-processor.js +122 -0
  142. package/dist/src/nile-grid/data-processor.js.map +1 -0
  143. package/dist/src/nile-grid/event-handlers.d.ts +35 -0
  144. package/dist/src/nile-grid/event-handlers.js +158 -0
  145. package/dist/src/nile-grid/event-handlers.js.map +1 -0
  146. package/dist/src/nile-grid/index.d.ts +5 -0
  147. package/dist/src/nile-grid/index.js +6 -0
  148. package/dist/src/nile-grid/index.js.map +1 -0
  149. package/dist/src/nile-grid/nile-grid.css.d.ts +1 -0
  150. package/dist/src/nile-grid/nile-grid.css.js +120 -0
  151. package/dist/src/nile-grid/nile-grid.css.js.map +1 -0
  152. package/dist/src/nile-grid/nile-grid.d.ts +39 -0
  153. package/dist/src/nile-grid/nile-grid.js +182 -0
  154. package/dist/src/nile-grid/nile-grid.js.map +1 -0
  155. package/dist/src/nile-grid/renderer.d.ts +8 -0
  156. package/dist/src/nile-grid/renderer.js +78 -0
  157. package/dist/src/nile-grid/renderer.js.map +1 -0
  158. package/dist/src/nile-grid/resize-handler.d.ts +4 -0
  159. package/dist/src/nile-grid/resize-handler.js +36 -0
  160. package/dist/src/nile-grid/resize-handler.js.map +1 -0
  161. package/dist/src/nile-grid/types.d.ts +32 -0
  162. package/dist/src/nile-grid/types.js +2 -0
  163. package/dist/src/nile-grid/types.js.map +1 -0
  164. package/dist/src/nile-grid/utils.d.ts +4 -0
  165. package/dist/src/nile-grid/utils.js +32 -0
  166. package/dist/src/nile-grid/utils.js.map +1 -0
  167. package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +47 -0
  168. package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +16 -0
  169. package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +75 -0
  170. package/dist/src/nile-option/nile-option.d.ts +1 -0
  171. package/dist/src/nile-option/nile-option.js +5 -0
  172. package/dist/src/nile-option/nile-option.js.map +1 -1
  173. package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +22 -0
  174. package/dist/src/nile-select/nile-select.d.ts +6 -0
  175. package/dist/src/nile-select/nile-select.js +59 -1
  176. package/dist/src/nile-select/nile-select.js.map +1 -1
  177. package/dist/src/nile-table-body/nile-table-body.d.ts +1 -3
  178. package/dist/src/nile-table-body/nile-table-body.js +3 -31
  179. package/dist/src/nile-table-body/nile-table-body.js.map +1 -1
  180. package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +9 -0
  181. package/dist/src/nile-table-body/virtual-scroll-helper.js +24 -0
  182. package/dist/src/nile-table-body/virtual-scroll-helper.js.map +1 -0
  183. package/dist/src/nile-table-cell-item/nile-table-cell-item.d.ts +2 -1
  184. package/dist/src/nile-table-cell-item/nile-table-cell-item.js +12 -1
  185. package/dist/src/nile-table-cell-item/nile-table-cell-item.js.map +1 -1
  186. package/dist/src/nile-table-header-item/nile-table-header-item.d.ts +2 -1
  187. package/dist/src/nile-table-header-item/nile-table-header-item.js +12 -1
  188. package/dist/src/nile-table-header-item/nile-table-header-item.js.map +1 -1
  189. package/dist/src/nile-table-row/nile-table-row.css.js +0 -47
  190. package/dist/src/nile-table-row/nile-table-row.css.js.map +1 -1
  191. package/dist/src/nile-table-row/nile-table-row.d.ts +1 -10
  192. package/dist/src/nile-table-row/nile-table-row.js +9 -88
  193. package/dist/src/nile-table-row/nile-table-row.js.map +1 -1
  194. package/dist/src/nile-virtual-table-body/index.d.ts +2 -0
  195. package/dist/src/nile-virtual-table-body/index.js +3 -0
  196. package/dist/src/nile-virtual-table-body/index.js.map +1 -0
  197. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +1 -0
  198. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +44 -0
  199. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +1 -0
  200. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +50 -0
  201. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +135 -0
  202. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +1 -0
  203. package/dist/src/nile-virtual-table-body/renderer.d.ts +16 -0
  204. package/dist/src/nile-virtual-table-body/renderer.js +49 -0
  205. package/dist/src/nile-virtual-table-body/renderer.js.map +1 -0
  206. package/dist/tsconfig.tsbuildinfo +1 -1
  207. package/package.json +3 -2
  208. package/src/index.ts +2 -1
  209. package/src/internal/resizable-table-helper.ts +31 -8
  210. package/src/nile-code-editor/nile-code-editor.ts +25 -6
  211. package/src/nile-code-editor/theme.ts +11 -1
  212. package/src/nile-option/nile-option.ts +3 -0
  213. package/src/nile-option-group/index.ts +1 -0
  214. package/src/nile-option-group/nile-option-group.css.ts +60 -0
  215. package/src/nile-option-group/nile-option-group.interface.ts +25 -0
  216. package/src/nile-option-group/nile-option-group.ts +84 -0
  217. package/src/nile-select/nile-select.interface.ts +5 -0
  218. package/src/nile-select/nile-select.ts +74 -2
  219. package/src/nile-table-body/nile-table-body.ts +3 -27
  220. package/src/nile-table-cell-item/nile-table-cell-item.ts +15 -1
  221. package/src/nile-table-header-item/nile-table-header-item.ts +15 -1
  222. package/src/nile-table-row/nile-table-row.css.ts +0 -47
  223. package/src/nile-table-row/nile-table-row.ts +5 -87
  224. package/vscode-html-custom-data.json +37 -29
  225. package/dist/aquera-nile-elements-0.1.57-beta-2.0.tgz +0 -0
  226. package/dist/axe.min-2b379f29.cjs.js +0 -12
  227. package/dist/axe.min-2b379f29.cjs.js.map +0 -1
  228. package/dist/axe.min-c2cd8733.esm.js +0 -12
  229. package/dist/fixture-add72f26.esm.js +0 -569
  230. package/dist/fixture-c1bd203f.cjs.js +0 -395
  231. package/dist/fixture-c1bd203f.cjs.js.map +0 -1
  232. package/dist/fixture-cb376a7f.cjs.js +0 -395
  233. package/dist/fixture-cb376a7f.cjs.js.map +0 -1
  234. package/dist/fixture-f2693d97.esm.js +0 -569
  235. package/dist/src/internal/expandable-row-helper.d.ts +0 -13
  236. package/dist/src/internal/expandable-row-helper.js +0 -37
  237. package/dist/src/internal/expandable-row-helper.js.map +0 -1
  238. package/dist/src/internal/expandable-row-styles.d.ts +0 -11
  239. package/dist/src/internal/expandable-row-styles.js +0 -27
  240. package/dist/src/internal/expandable-row-styles.js.map +0 -1
  241. package/dist/src/internal/table-expandable-helper.d.ts +0 -0
  242. package/dist/src/internal/table-expandable-helper.js +0 -2
  243. package/dist/src/internal/table-expandable-helper.js.map +0 -1
  244. package/dist/src/internal/table-row-expandable-helper.d.ts +0 -12
  245. package/dist/src/internal/table-row-expandable-helper.js +0 -32
  246. package/dist/src/internal/table-row-expandable-helper.js.map +0 -1
  247. package/dist/src/internal/table-row-expandable-styles.d.ts +0 -11
  248. package/dist/src/internal/table-row-expandable-styles.js +0 -12
  249. package/dist/src/internal/table-row-expandable-styles.js.map +0 -1
  250. package/dist/src/nile-group-header/index.d.ts +0 -1
  251. package/dist/src/nile-group-header/index.js +0 -2
  252. package/dist/src/nile-group-header/index.js.map +0 -1
  253. package/dist/src/nile-group-header/nile-group-header.css.d.ts +0 -12
  254. package/dist/src/nile-group-header/nile-group-header.css.js +0 -30
  255. package/dist/src/nile-group-header/nile-group-header.css.js.map +0 -1
  256. package/dist/src/nile-group-header/nile-group-header.d.ts +0 -19
  257. package/dist/src/nile-group-header/nile-group-header.js +0 -36
  258. package/dist/src/nile-group-header/nile-group-header.js.map +0 -1
  259. package/dist/src/nile-group-header/nile-option-header.css.d.ts +0 -12
  260. package/dist/src/nile-group-header/nile-option-header.css.js +0 -30
  261. package/dist/src/nile-group-header/nile-option-header.css.js.map +0 -1
  262. package/dist/src/nile-group-header/nile-option-header.d.ts +0 -33
  263. package/dist/src/nile-group-header/nile-option-header.js +0 -51
  264. package/dist/src/nile-group-header/nile-option-header.js.map +0 -1
  265. package/dist/src/nile-option-header/index.d.ts +0 -1
  266. package/dist/src/nile-option-header/index.js +0 -2
  267. package/dist/src/nile-option-header/index.js.map +0 -1
  268. package/dist/src/nile-option-header/nile-option-header.css.d.ts +0 -12
  269. package/dist/src/nile-option-header/nile-option-header.css.js +0 -30
  270. package/dist/src/nile-option-header/nile-option-header.css.js.map +0 -1
  271. package/dist/src/nile-option-header/nile-option-header.d.ts +0 -33
  272. package/dist/src/nile-option-header/nile-option-header.js +0 -51
  273. package/dist/src/nile-option-header/nile-option-header.js.map +0 -1
  274. package/dist/src/nile-table-row/TableRowExpandableHelper.d.ts +0 -9
  275. package/dist/src/nile-table-row/TableRowExpandableHelper.js +0 -26
  276. package/dist/src/nile-table-row/TableRowExpandableHelper.js.map +0 -1
  277. package/dist/src/nile-table-row/helper.ts.d.ts +0 -37
  278. package/dist/src/nile-table-row/helper.ts.js +0 -105
  279. package/dist/src/nile-table-row/helper.ts.js.map +0 -1
  280. package/dist/src/nile-table-row/nile-table-row-expandable.d.ts +0 -37
  281. package/dist/src/nile-table-row/nile-table-row-expandable.js +0 -105
  282. package/dist/src/nile-table-row/nile-table-row-expandable.js.map +0 -1
  283. package/dist/src/nile-table-row-expandable/index.d.ts +0 -1
  284. package/dist/src/nile-table-row-expandable/index.js +0 -2
  285. package/dist/src/nile-table-row-expandable/index.js.map +0 -1
  286. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.d.ts +0 -12
  287. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.js +0 -17
  288. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.js.map +0 -1
  289. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.d.ts +0 -37
  290. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.js +0 -103
  291. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.js.map +0 -1
  292. package/dist/src/nile-tooltip/nile-tooltip-utils.d.ts +0 -18
  293. package/dist/src/nile-tooltip/nile-tooltip-utils.js +0 -216
  294. package/dist/src/nile-tooltip/nile-tooltip-utils.js.map +0 -1
  295. package/dist/src/nile-tooltip/nile-tooltip.test.d.ts +0 -1
  296. package/dist/src/nile-tooltip/nile-tooltip.test.js +0 -148
  297. package/dist/src/nile-tooltip/nile-tooltip.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/nile-grid/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,YAAY,CAAC,UAAuB,EAAE,eAAwB,EAAE,aAAqE;QAC1I,OAAO,IAAI,CAAA;+DACgD,sBAAsB,CAAC,UAAU,CAAC;UACvF,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;oBAEzB,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK;cACjC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;;;6BAGzC,CAAC,CAAa,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;;;aAG/D,CAAC,CAAC,CAAC,EAAE;;SAET,CAAC;;KAEL,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CACf,OAAc,EACd,UAAuB,EACvB,mBAA4B,EAC5B,kBAAkE;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAA;;;;OAIV,CAAC;QACJ,CAAC;QAED,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAA;;YAEL,kBAAkB;;OAEvB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;;UAEL,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;;KAE1F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,GAAQ,EAAE,QAAgB,EAAE,UAAuB;QAC9E,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEjC,kEAAkE;YAClE,IAAI,eAAe,GAAG,QAAQ,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,wBAAwB;YACxB,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE/D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,gBAAgB,eAAe,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC;gBAE3E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;0CACmB,SAAS;oBAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;;SAEzB,CAAC,CAAC;gBAEH,eAAe,IAAI,OAAO,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;4DAC6C,sBAAsB,CAAC,UAAU,CAAC;UACpF,KAAK;;KAEV,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,GAAc,EAAE,eAAwB;QAC5E,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { ColumnDef } from './types.js';\nimport { getGridTemplateColumns, calculateColSpan } from './utils.js';\n\nexport class GridRenderer {\n static renderHeader(columnDefs: ColumnDef[], enableColResize: boolean, onResizeStart: (e: MouseEvent, col: ColumnDef, index: number) => void): TemplateResult {\n return html`\n <div class=\"grid-header\" style=\"grid-template-columns: ${getGridTemplateColumns(columnDefs)};\">\n ${columnDefs.map((col, index) => html`\n <div class=\"grid-header-cell\">\n <span>${col.headerName || col.field}</span>\n ${this.shouldShowResizeHandle(col, enableColResize) ? html`\n <div \n class=\"grid-resize-handle\"\n @mousedown=${(e: MouseEvent) => onResizeStart(e, col, index)}\n title=\"Drag to resize column\"\n ></div>\n ` : ''}\n </div>\n `)}\n </div>\n `;\n }\n\n static renderBody(\n rowData: any[], \n columnDefs: ColumnDef[], \n enableVirtualScroll: boolean,\n onVirtualizeRender: (row: any, rowIndex: number) => TemplateResult\n ): TemplateResult {\n if (rowData.length === 0) {\n return html`\n <div class=\"grid-empty\">\n <div class=\"empty-text\">No data available</div>\n </div>\n `;\n }\n\n if (enableVirtualScroll) {\n return html`\n <div class=\"grid-body\">\n ${onVirtualizeRender}\n </div>\n `;\n }\n\n return html`\n <div class=\"grid-body\">\n ${rowData.map((row, rowIndex) => this.renderRowWithSpanning(row, rowIndex, columnDefs))}\n </div>\n `;\n }\n\n static renderRowWithSpanning(row: any, rowIndex: number, columnDefs: ColumnDef[]): TemplateResult {\n const cells: TemplateResult[] = [];\n let currentColIndex = 0;\n\n for (let colIndex = 0; colIndex < columnDefs.length; colIndex++) {\n const col = columnDefs[colIndex];\n \n // Check if this column should be skipped due to previous spanning\n if (currentColIndex > colIndex) {\n continue;\n }\n\n // Calculate column span\n const colSpan = calculateColSpan(col, row, rowIndex, colIndex);\n \n if (colSpan > 0) {\n const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;\n \n cells.push(html`\n <div class=\"grid-cell\" style=\"${cellStyle}\">\n <span>${row[col.field]}</span>\n </div>\n `);\n \n currentColIndex += colSpan;\n }\n }\n\n return html`\n <div class=\"grid-row\" style=\"grid-template-columns: ${getGridTemplateColumns(columnDefs)};\">\n ${cells}\n </div>\n `;\n }\n\n private static shouldShowResizeHandle(col: ColumnDef, enableColResize: boolean): boolean {\n if (!enableColResize) return false;\n if (col.resizable === false) return false;\n return true;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ColumnDef, GridOptions } from './types.js';
2
+ export declare class ResizeHandler {
3
+ static handleResizeStart(event: MouseEvent, col: ColumnDef, columnIndex: number, columnDefs: ColumnDef[], gridOptions: GridOptions, onUpdate: () => void): void;
4
+ }
@@ -0,0 +1,36 @@
1
+ export class ResizeHandler {
2
+ static handleResizeStart(event, col, columnIndex, columnDefs, gridOptions, onUpdate) {
3
+ event.preventDefault();
4
+ event.stopPropagation();
5
+ const startX = event.clientX;
6
+ const startWidth = col.width || 100;
7
+ const isShiftKey = event.shiftKey || gridOptions.colResizeDefault === 'shift';
8
+ const handleMouseMove = (e) => {
9
+ const deltaX = e.clientX - startX;
10
+ let newWidth = startWidth + deltaX;
11
+ // Ensure minimum width for usability
12
+ newWidth = Math.max(newWidth, 50);
13
+ // Update column width
14
+ col.width = newWidth;
15
+ // If shift resize, adjust adjacent column
16
+ if (isShiftKey && columnIndex < columnDefs.length - 1) {
17
+ const nextCol = columnDefs[columnIndex + 1];
18
+ const totalWidth = (col.width || 0) + (nextCol.width || 0);
19
+ const newNextWidth = totalWidth - newWidth;
20
+ // Ensure adjacent column doesn't get too narrow
21
+ if (newNextWidth >= 50) {
22
+ nextCol.width = newNextWidth;
23
+ }
24
+ }
25
+ // Force complete re-render for virtual scrolling
26
+ onUpdate();
27
+ };
28
+ const handleMouseUp = () => {
29
+ document.removeEventListener('mousemove', handleMouseMove);
30
+ document.removeEventListener('mouseup', handleMouseUp);
31
+ };
32
+ document.addEventListener('mousemove', handleMouseMove);
33
+ document.addEventListener('mouseup', handleMouseUp);
34
+ }
35
+ }
36
+ //# sourceMappingURL=resize-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-handler.js","sourceRoot":"","sources":["../../../src/nile-grid/resize-handler.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,iBAAiB,CACtB,KAAiB,EACjB,GAAc,EACd,WAAmB,EACnB,UAAuB,EACvB,WAAwB,EACxB,QAAoB;QAEpB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,gBAAgB,KAAK,OAAO,CAAC;QAE9E,MAAM,eAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;YAClC,IAAI,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;YAEnC,qCAAqC;YACrC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAElC,sBAAsB;YACtB,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;YAErB,0CAA0C;YAC1C,IAAI,UAAU,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBAC5C,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;gBAE3C,gDAAgD;gBAChD,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["import type { ColumnDef, GridOptions } from './types.js';\n\nexport class ResizeHandler {\n static handleResizeStart(\n event: MouseEvent, \n col: ColumnDef, \n columnIndex: number, \n columnDefs: ColumnDef[],\n gridOptions: GridOptions,\n onUpdate: () => void\n ): void {\n event.preventDefault();\n event.stopPropagation();\n \n const startX = event.clientX;\n const startWidth = col.width || 100;\n const isShiftKey = event.shiftKey || gridOptions.colResizeDefault === 'shift';\n \n const handleMouseMove = (e: MouseEvent) => {\n const deltaX = e.clientX - startX;\n let newWidth = startWidth + deltaX;\n \n // Ensure minimum width for usability\n newWidth = Math.max(newWidth, 50);\n \n // Update column width\n col.width = newWidth;\n \n // If shift resize, adjust adjacent column\n if (isShiftKey && columnIndex < columnDefs.length - 1) {\n const nextCol = columnDefs[columnIndex + 1];\n const totalWidth = (col.width || 0) + (nextCol.width || 0);\n const newNextWidth = totalWidth - newWidth;\n \n // Ensure adjacent column doesn't get too narrow\n if (newNextWidth >= 50) {\n nextCol.width = newNextWidth;\n }\n }\n \n // Force complete re-render for virtual scrolling\n onUpdate();\n };\n \n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n \n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n }\n}\n"]}
@@ -0,0 +1,32 @@
1
+ export interface ColumnDef {
2
+ field: string;
3
+ headerName?: string;
4
+ sortable?: boolean;
5
+ width?: number;
6
+ resizable?: boolean;
7
+ minWidth?: number;
8
+ maxWidth?: number;
9
+ colSpan?: (params: ColSpanParams) => number;
10
+ }
11
+ export interface GridOptions {
12
+ rowSelection?: 'single' | 'multiple';
13
+ enableSorting?: boolean;
14
+ enableVirtualScroll?: boolean;
15
+ enableColResize?: boolean;
16
+ colResizeDefault?: 'normal' | 'shift';
17
+ }
18
+ export interface ColSpanParams {
19
+ data: any;
20
+ field: string;
21
+ rowIndex: number;
22
+ columnIndex: number;
23
+ }
24
+ export interface GridApi {
25
+ getSelectedRows: () => any[];
26
+ setRowData: (data: any[]) => void;
27
+ setColumnDefs: (defs: ColumnDef[]) => void;
28
+ }
29
+ export interface GridReadyEvent {
30
+ api: GridApi;
31
+ type: 'gridReady';
32
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/nile-grid/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface ColumnDef {\n field: string;\n headerName?: string;\n sortable?: boolean;\n width?: number;\n resizable?: boolean;\n minWidth?: number;\n maxWidth?: number;\n colSpan?: (params: ColSpanParams) => number;\n}\n\nexport interface GridOptions {\n rowSelection?: 'single' | 'multiple';\n enableSorting?: boolean;\n enableVirtualScroll?: boolean;\n enableColResize?: boolean;\n colResizeDefault?: 'normal' | 'shift';\n}\n\nexport interface ColSpanParams {\n data: any;\n field: string;\n rowIndex: number;\n columnIndex: number;\n}\n\nexport interface GridApi {\n getSelectedRows: () => any[];\n setRowData: (data: any[]) => void;\n setColumnDefs: (defs: ColumnDef[]) => void;\n}\n\nexport interface GridReadyEvent {\n api: GridApi;\n type: 'gridReady';\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ColumnDef } from './types.js';
2
+ export declare function getGridTemplateColumns(columnDefs: ColumnDef[]): string;
3
+ export declare function calculateColSpan(col: ColumnDef, row: any, rowIndex: number, colIndex: number): number;
4
+ export declare function shouldShowResizeHandle(col: ColumnDef, enableColResize: boolean): boolean;
@@ -0,0 +1,32 @@
1
+ export function getGridTemplateColumns(columnDefs) {
2
+ return columnDefs.map((col, index) => {
3
+ if (col.width) {
4
+ return `${col.width}px`;
5
+ }
6
+ // Last column takes remaining space
7
+ if (index === columnDefs.length - 1) {
8
+ return '1fr';
9
+ }
10
+ return 'auto';
11
+ }).join(' ');
12
+ }
13
+ export function calculateColSpan(col, row, rowIndex, colIndex) {
14
+ if (col.colSpan) {
15
+ const params = {
16
+ data: row,
17
+ field: col.field,
18
+ rowIndex,
19
+ columnIndex: colIndex
20
+ };
21
+ return col.colSpan(params);
22
+ }
23
+ return 1;
24
+ }
25
+ export function shouldShowResizeHandle(col, enableColResize) {
26
+ if (!enableColResize)
27
+ return false;
28
+ if (col.resizable === false)
29
+ return false;
30
+ return true;
31
+ }
32
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/nile-grid/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,UAAuB;IAC5D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC;QAC1B,CAAC;QACD,oCAAoC;QACpC,IAAI,KAAK,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAc,EAAE,GAAQ,EAAE,QAAgB,EAAE,QAAgB;IAC3F,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ;YACR,WAAW,EAAE,QAAQ;SACtB,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAc,EAAE,eAAwB;IAC7E,IAAI,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { ColumnDef, ColSpanParams } from './types.js';\n\nexport function getGridTemplateColumns(columnDefs: ColumnDef[]): string {\n return columnDefs.map((col, index) => {\n if (col.width) {\n return `${col.width}px`;\n }\n // Last column takes remaining space\n if (index === columnDefs.length - 1) {\n return '1fr';\n }\n return 'auto';\n }).join(' ');\n}\n\nexport function calculateColSpan(col: ColumnDef, row: any, rowIndex: number, colIndex: number): number {\n if (col.colSpan) {\n const params: ColSpanParams = {\n data: row,\n field: col.field,\n rowIndex,\n columnIndex: colIndex\n };\n return col.colSpan(params);\n }\n return 1;\n}\n\nexport function shouldShowResizeHandle(col: ColumnDef, enableColResize: boolean): boolean {\n if (!enableColResize) return false;\n if (col.resizable === false) return false;\n return true;\n}\n"]}
@@ -0,0 +1,47 @@
1
+ /* @web/test-runner snapshot v1 */
2
+ export const snapshots = {};
3
+
4
+ snapshots["NileHero renders correctly with default properties"] =
5
+ `<div
6
+ class="hero__container hero__container--expanded"
7
+ part="nile__hero__container"
8
+ >
9
+ <nile-hero-header
10
+ class="hero__header--collapsed"
11
+ hero-text="Test Hero"
12
+ icon="error"
13
+ part="nile__hero__header"
14
+ style="opacity:0"
15
+ >
16
+ </nile-hero-header>
17
+ <div
18
+ class="hero__slot__container"
19
+ style="opacity:1"
20
+ >
21
+ <div class="hero__slot">
22
+ <span class="icon__container">
23
+ <nile-icon
24
+ method="stroke"
25
+ name="error"
26
+ size="16"
27
+ >
28
+ </nile-icon>
29
+ </span>
30
+ <slot>
31
+ </slot>
32
+ </div>
33
+ </div>
34
+ <div
35
+ class="hero__img__container"
36
+ id="hero__img__container"
37
+ style="opacity:1"
38
+ >
39
+ <img
40
+ class="hero__img"
41
+ src=""
42
+ >
43
+ </div>
44
+ </div>
45
+ `;
46
+ /* end snapshot NileHero renders correctly with default properties */
47
+
@@ -0,0 +1,16 @@
1
+ /* @web/test-runner snapshot v1 */
2
+ export const snapshots = {};
3
+
4
+ snapshots["NileIcon should render the icon with the correct name"] =
5
+ `<nile-icon
6
+ description=""
7
+ method="fill"
8
+ name="info"
9
+ set="local"
10
+ size="16"
11
+ style="--nile-svg-fill: var(--nile-colors-dark-500); --nile-svg-height: 16px; --nile-svg-width: 16px;"
12
+ >
13
+ </nile-icon>
14
+ `;
15
+ /* end snapshot NileIcon should render the icon with the correct name */
16
+
@@ -0,0 +1,75 @@
1
+ /* @web/test-runner snapshot v1 */
2
+ export const snapshots = {};
3
+
4
+ snapshots["nile-input renders correctly"] =
5
+ `<div
6
+ class="form-control form-control--has-label form-control--medium"
7
+ part="form-control"
8
+ >
9
+ <label
10
+ aria-hidden="false"
11
+ class="form-control__label"
12
+ for="input"
13
+ part="form-control-label"
14
+ >
15
+ <slot name="label">
16
+ Test Label
17
+ </slot>
18
+ </label>
19
+ <div
20
+ class="form-control-input"
21
+ part="form-control-input"
22
+ >
23
+ <nile-popup
24
+ distance="5"
25
+ exportparts="input"
26
+ placement="bottom-start"
27
+ strategy="fixed"
28
+ >
29
+ <div
30
+ class="input input--empty input--medium input--standard"
31
+ part="base"
32
+ slot="anchor"
33
+ >
34
+ <slot
35
+ class="input__prefix"
36
+ name="prefix"
37
+ part="prefix"
38
+ >
39
+ </slot>
40
+ <input
41
+ aria-describedby="help-text"
42
+ autocomplete="off"
43
+ class="input__control"
44
+ id="input"
45
+ name=""
46
+ part="input"
47
+ placeholder=""
48
+ spellcheck="true"
49
+ title=""
50
+ type="text"
51
+ >
52
+ <slot
53
+ class="input__suffix"
54
+ name="suffix"
55
+ part="suffix"
56
+ >
57
+ </slot>
58
+ </div>
59
+ <div class="input__non-printable">
60
+ Non-printable character detected.
61
+ <nile-badge
62
+ class="input__remove-non-printable"
63
+ variant="error"
64
+ >
65
+ Remove All
66
+ </nile-badge>
67
+ <div class="input__srtiked-text-container">
68
+ </div>
69
+ </div>
70
+ </nile-popup>
71
+ </div>
72
+ </div>
73
+ `;
74
+ /* end snapshot nile-input renders correctly */
75
+
@@ -50,6 +50,7 @@ export declare class NileOption extends NileElement {
50
50
  disabled: boolean;
51
51
  /** Indicates whether the option is selected. */
52
52
  selected: boolean;
53
+ groupName: string;
53
54
  connectedCallback(): void;
54
55
  checkIfMultipleSelect(): void;
55
56
  protected updated(_changedProperties: PropertyValues): void;
@@ -53,6 +53,8 @@ let NileOption = class NileOption extends NileElement {
53
53
  this.disabled = false;
54
54
  /** Indicates whether the option is selected. */
55
55
  this.selected = false;
56
+ /* used to pass group name to the option, so that grouped options can be shown */
57
+ this.groupName = '';
56
58
  }
57
59
  connectedCallback() {
58
60
  super.connectedCallback();
@@ -191,6 +193,9 @@ __decorate([
191
193
  __decorate([
192
194
  property({ type: Boolean, reflect: true })
193
195
  ], NileOption.prototype, "selected", void 0);
196
+ __decorate([
197
+ property({ type: String, reflect: true })
198
+ ], NileOption.prototype, "groupName", void 0);
194
199
  __decorate([
195
200
  watch('disabled')
196
201
  ], NileOption.prototype, "handleDisabledChange", null);
@@ -1 +1 @@
1
- {"version":3,"file":"nile-option.js","sourceRoot":"","sources":["../../../src/nile-option/nile-option.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, CSSResultArray, TemplateResult } from 'lit';\nimport { styles } from './nile-option.css';\nimport '../nile-icon';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { watch } from '../internal/watch';\nimport type { CSSResultGroup, PropertyValues } from 'lit';\nimport NileElement from '../internal/nile-element';\nimport '../nile-checkbox';\n\n/**\n * Nile icon component.\n *\n * @tag nile-option\n *\n */\n\n/**\n * @summary Options define the selectable items within various form controls such as [select](/components/select).\n * @status stable\n *\n * @dependency nile-icon\n *\n * @slot - The option's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart checked-icon - The checked icon, an `<nile-icon>` element.\n * @csspart base - The component's base wrapper.\n * @csspart label - The option's label.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n */\n\n@customElement('nile-option')\nexport class NileOption extends NileElement {\n static styles: CSSResultGroup = styles;\n\n private cachedTextLabel: string;\n\n @query('.option__label') defaultSlot: HTMLSlotElement;\n\n @state() current = false; // the user has keyed into the option, but hasn't selected it yet (shows a highlight)\n @state() hasHover = false; // we need this because Safari doesn't honor :hover styles while dragging\n @state() hidden = false; // the option is hidden\n @state() isMultipleSelect = false;\n\n /**\n * The option's value. When selected, the containing form control will receive this value. The value must be unique\n * from other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\n * multiple values.\n */\n @property({ reflect: true }) value = '';\n\n @property({ type: Boolean }) showCheckbox: boolean = false;\n\n /** Draws the option in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Indicates whether the option is selected. */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'option');\n this.setAttribute('aria-selected', 'false');\n\n // Find the closest parent 'nile-select' or 'nile-virtual-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n this.checkIfMultipleSelect();\n }\n\n checkIfMultipleSelect() {\n // Find the closest parent 'nile-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n\n // Check if the parent has the 'multiple' attribute\n if (parentSelect && parentSelect.hasAttribute('multiple')) {\n // let multipleValue = parentSelect.getAttribute('multiple');\n if(parentSelect.hasAttribute('multiple') && parentSelect.getAttribute('multiple') === '') {\n this.isMultipleSelect = true;\n } else if (parentSelect.getAttribute('multiple') === 'true') {\n this.isMultipleSelect = true;\n } else {\n this.isMultipleSelect = false;\n }\n }\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n this.checkIfMultipleSelect();\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange');\n }\n }\n\n private handleMouseEnter() {\n this.hasHover = true;\n }\n\n private handleMouseLeave() {\n this.hasHover = false;\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('selected')\n handleSelectedChange() {\n this.setAttribute('aria-selected', this.selected ? 'true' : 'false');\n }\n\n @watch('value')\n handleValueChange() {\n // Ensure the value is a string. This ensures the next line doesn't error and allows framework users to pass numbers\n // instead of requiring them to cast the value to a string.\n if (typeof this.value !== 'string') {\n this.value = String(this.value);\n }\n\n // if (this.value.includes(' ')) {\n // console.error(\n // `Option values cannot include a space. All spaces have been replaced with underscores.`,\n // this\n // );\n // this.value = this.value.replace(/ /g, '_');\n // }\n }\n\n /** Returns a plain text label based on the option's content. */\n getTextLabel() {\n // Search for a label element inside the component\n const labelElement = this.querySelector('label');\n\n // If a label element is found, return its text content\n if (labelElement) {\n return labelElement.textContent?.trim() ?? '';\n }\n\n // If no label element is found, return the existing behavior\n return (this.textContent ?? '').trim();\n }\n\n render() {\n return html`\n ${!this.hidden\n ? html` <div\n part=\"base\"\n class=${classMap({\n option: true,\n 'option--single-select': !this.isMultipleSelect,\n 'option--current': this.selected && !this.isMultipleSelect,\n 'option--disabled': this.disabled,\n 'option--selected': this.selected && !this.isMultipleSelect,\n 'option--hover': this.hasHover,\n })}\n @mouseenter=${this.handleMouseEnter}\n @mouseleave=${this.handleMouseLeave}\n >\n\n ${this.isMultipleSelect ? html`<nile-checkbox part=\"checkbox\" class=\"option--checkbox\" .checked=${this.selected}></nile-checkbox>` : ''}\n\n <slot part=\"prefix\" name=\"prefix\" class=\"option__prefix\"></slot>\n <slot\n part=\"label\"\n class=\"option__label\"\n @slotchange=${this.handleDefaultSlotChange}\n ></slot>\n <slot part=\"suffix\" name=\"suffix\" class=\"option__suffix\"></slot>\n </div>`\n : ''}\n `;\n }\n}\n\nexport default NileOption;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-option': NileOption;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-option.js","sourceRoot":"","sources":["../../../src/nile-option/nile-option.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, CSSResultArray, TemplateResult } from 'lit';\nimport { styles } from './nile-option.css';\nimport '../nile-icon';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { watch } from '../internal/watch';\nimport type { CSSResultGroup, PropertyValues } from 'lit';\nimport NileElement from '../internal/nile-element';\nimport '../nile-checkbox';\n\n/**\n * Nile icon component.\n *\n * @tag nile-option\n *\n */\n\n/**\n * @summary Options define the selectable items within various form controls such as [select](/components/select).\n * @status stable\n *\n * @dependency nile-icon\n *\n * @slot - The option's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart checked-icon - The checked icon, an `<nile-icon>` element.\n * @csspart base - The component's base wrapper.\n * @csspart label - The option's label.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n */\n\n@customElement('nile-option')\nexport class NileOption extends NileElement {\n static styles: CSSResultGroup = styles;\n\n private cachedTextLabel: string;\n\n @query('.option__label') defaultSlot: HTMLSlotElement;\n\n @state() current = false; // the user has keyed into the option, but hasn't selected it yet (shows a highlight)\n @state() hasHover = false; // we need this because Safari doesn't honor :hover styles while dragging\n @state() hidden = false; // the option is hidden\n @state() isMultipleSelect = false;\n\n /**\n * The option's value. When selected, the containing form control will receive this value. The value must be unique\n * from other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\n * multiple values.\n */\n @property({ reflect: true }) value = '';\n\n @property({ type: Boolean }) showCheckbox: boolean = false;\n\n /** Draws the option in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Indicates whether the option is selected. */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n /* used to pass group name to the option, so that grouped options can be shown */\n @property({ type: String, reflect: true }) groupName: string = '';\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'option');\n this.setAttribute('aria-selected', 'false');\n\n // Find the closest parent 'nile-select' or 'nile-virtual-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n this.checkIfMultipleSelect();\n }\n\n checkIfMultipleSelect() {\n // Find the closest parent 'nile-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n\n // Check if the parent has the 'multiple' attribute\n if (parentSelect && parentSelect.hasAttribute('multiple')) {\n // let multipleValue = parentSelect.getAttribute('multiple');\n if(parentSelect.hasAttribute('multiple') && parentSelect.getAttribute('multiple') === '') {\n this.isMultipleSelect = true;\n } else if (parentSelect.getAttribute('multiple') === 'true') {\n this.isMultipleSelect = true;\n } else {\n this.isMultipleSelect = false;\n }\n }\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n this.checkIfMultipleSelect();\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange');\n }\n }\n\n private handleMouseEnter() {\n this.hasHover = true;\n }\n\n private handleMouseLeave() {\n this.hasHover = false;\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('selected')\n handleSelectedChange() {\n this.setAttribute('aria-selected', this.selected ? 'true' : 'false');\n }\n\n @watch('value')\n handleValueChange() {\n // Ensure the value is a string. This ensures the next line doesn't error and allows framework users to pass numbers\n // instead of requiring them to cast the value to a string.\n if (typeof this.value !== 'string') {\n this.value = String(this.value);\n }\n\n // if (this.value.includes(' ')) {\n // console.error(\n // `Option values cannot include a space. All spaces have been replaced with underscores.`,\n // this\n // );\n // this.value = this.value.replace(/ /g, '_');\n // }\n }\n\n /** Returns a plain text label based on the option's content. */\n getTextLabel() {\n // Search for a label element inside the component\n const labelElement = this.querySelector('label');\n\n // If a label element is found, return its text content\n if (labelElement) {\n return labelElement.textContent?.trim() ?? '';\n }\n\n // If no label element is found, return the existing behavior\n return (this.textContent ?? '').trim();\n }\n\n render() {\n return html`\n ${!this.hidden\n ? html` <div\n part=\"base\"\n class=${classMap({\n option: true,\n 'option--single-select': !this.isMultipleSelect,\n 'option--current': this.selected && !this.isMultipleSelect,\n 'option--disabled': this.disabled,\n 'option--selected': this.selected && !this.isMultipleSelect,\n 'option--hover': this.hasHover,\n })}\n @mouseenter=${this.handleMouseEnter}\n @mouseleave=${this.handleMouseLeave}\n >\n\n ${this.isMultipleSelect ? html`<nile-checkbox part=\"checkbox\" class=\"option--checkbox\" .checked=${this.selected}></nile-checkbox>` : ''}\n\n <slot part=\"prefix\" name=\"prefix\" class=\"option__prefix\"></slot>\n <slot\n part=\"label\"\n class=\"option__label\"\n @slotchange=${this.handleDefaultSlotChange}\n ></slot>\n <slot part=\"suffix\" name=\"suffix\" class=\"option__suffix\"></slot>\n </div>`\n : ''}\n `;\n }\n}\n\nexport default NileOption;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-option': NileOption;\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ /* @web/test-runner snapshot v1 */
2
+ export const snapshots = {};
3
+
4
+ snapshots["NilePopover renders correctly"] =
5
+ `<nile-popup
6
+ active=""
7
+ arrowplacement="anchor"
8
+ distance="18"
9
+ placement="top"
10
+ shift=""
11
+ strategy="absolute"
12
+ >
13
+ <slot
14
+ aria-describedby="tooltip"
15
+ name="anchor"
16
+ slot="anchor"
17
+ >
18
+ </slot>
19
+ </nile-popup>
20
+ `;
21
+ /* end snapshot NilePopover renders correctly */
22
+
@@ -159,6 +159,8 @@ export declare class NileSelect extends NileElement implements NileFormControl {
159
159
  renderItemConfig?: RenderItemConfig;
160
160
  data: any;
161
161
  enableVirtualScroll: boolean;
162
+ /** To enable the group header in the select */
163
+ enableGroupHeader: boolean;
162
164
  /** Gets the validity state object */
163
165
  get validity(): ValidityState;
164
166
  /** Gets the validation message */
@@ -214,6 +216,10 @@ export declare class NileSelect extends NileElement implements NileFormControl {
214
216
  handleDisabledChange(): void;
215
217
  handleValueChange(): void;
216
218
  handleOpenChange(): Promise<void>;
219
+ private getAllGroupAttributes;
220
+ getUniqueGroupNames(arr: NileOption[]): string[];
221
+ handleGroupSearchChange(): void;
222
+ handleGroupShowSelected(): void;
217
223
  /** Shows the listbox. */
218
224
  show(): Promise<void>;
219
225
  /** Hides the listbox. */
@@ -169,6 +169,8 @@ let NileSelect = class NileSelect extends NileElement {
169
169
  this.noResultsMessage = 'No results found';
170
170
  this.data = [];
171
171
  this.enableVirtualScroll = false;
172
+ /** To enable the group header in the select */
173
+ this.enableGroupHeader = false;
172
174
  this.options = [];
173
175
  }
174
176
  connectedCallback() {
@@ -196,6 +198,9 @@ let NileSelect = class NileSelect extends NileElement {
196
198
  }
197
199
  }
198
200
  firstUpdated(_changedProperties) {
201
+ if (this.enableGroupHeader) {
202
+ this.handleGroupSearchChange();
203
+ }
199
204
  if (_changedProperties.has('multiple')) {
200
205
  this.setCheckBoxInOption(this.multiple);
201
206
  }
@@ -262,6 +267,9 @@ let NileSelect = class NileSelect extends NileElement {
262
267
  el.hidden = this.showSelected;
263
268
  }
264
269
  });
270
+ if (this.enableGroupHeader) {
271
+ this.handleGroupShowSelected();
272
+ }
265
273
  // this.requestUpdate();
266
274
  }
267
275
  /**
@@ -274,6 +282,9 @@ let NileSelect = class NileSelect extends NileElement {
274
282
  el.selected = false;
275
283
  el.hidden = false;
276
284
  });
285
+ if (this.enableGroupHeader) {
286
+ this.handleGroupShowSelected();
287
+ }
277
288
  this.value = '';
278
289
  this.selectionChanged();
279
290
  this.emit('nile-change', { value: this.value, name: this.name });
@@ -391,6 +402,9 @@ let NileSelect = class NileSelect extends NileElement {
391
402
  this.showSelected = false;
392
403
  this.value = '';
393
404
  this.displayInput.focus({ preventScroll: true });
405
+ if (this.enableGroupHeader) {
406
+ this.handleGroupShowSelected();
407
+ }
394
408
  // Emit after update
395
409
  this.updateComplete.then(() => {
396
410
  const val = { value: this.multiple ? this.value : '', name: this.name };
@@ -443,6 +457,9 @@ let NileSelect = class NileSelect extends NileElement {
443
457
  el.hidden = this.showSelected;
444
458
  }
445
459
  });
460
+ if (this.enableGroupHeader) {
461
+ this.handleGroupShowSelected();
462
+ }
446
463
  this.requestUpdate();
447
464
  }
448
465
  }
@@ -473,6 +490,9 @@ let NileSelect = class NileSelect extends NileElement {
473
490
  el.hidden = this.showSelected;
474
491
  }
475
492
  });
493
+ if (this.enableGroupHeader) {
494
+ this.handleGroupShowSelected();
495
+ }
476
496
  // Emit after updating
477
497
  this.updateComplete.then(() => {
478
498
  this.nileInput({ value: this.value, name: this.name });
@@ -616,6 +636,9 @@ let NileSelect = class NileSelect extends NileElement {
616
636
  }
617
637
  handleSearchChange(e) {
618
638
  this.searchValue = e.detail.value;
639
+ if (this.enableGroupHeader) {
640
+ this.handleGroupSearchChange();
641
+ }
619
642
  if (!this.disableLocalSearch) {
620
643
  let filteredOptions = this.filterOptions(this.searchValue);
621
644
  if (filteredOptions.length === 0) {
@@ -666,8 +689,12 @@ let NileSelect = class NileSelect extends NileElement {
666
689
  if (this.open && !this.disabled) {
667
690
  // Reset the current option
668
691
  this.setCurrentOption(this.selectedOptions[0] || this.getFirstOption());
669
- // Show
670
692
  this.emit('nile-show', { value: this.value, name: this.name });
693
+ if (this.enableGroupHeader) {
694
+ this.getAllGroupAttributes().forEach((el) => {
695
+ el.element.classList.remove('nile-group-hidden');
696
+ });
697
+ }
671
698
  this.addOpenListeners();
672
699
  this.showNoResults = !this.getAllOptions()?.length;
673
700
  await stopAnimations(this);
@@ -705,6 +732,34 @@ let NileSelect = class NileSelect extends NileElement {
705
732
  this.emit('nile-after-hide', { value: this.value, name: this.name });
706
733
  }
707
734
  }
735
+ getAllGroupAttributes() {
736
+ return Array.from(this.querySelectorAll('nile-option-group[name]')).map((el) => ({
737
+ name: el?.getAttribute('name') || '',
738
+ data: el?.getAttribute('data'),
739
+ element: el
740
+ }));
741
+ }
742
+ getUniqueGroupNames(arr) {
743
+ return Array.from(new Set(arr.map(obj => obj?.groupName)));
744
+ }
745
+ handleGroupSearchChange() {
746
+ const filtered = new Set(this.getUniqueGroupNames(this.filterOptions(this.searchValue)));
747
+ this.getAllGroupAttributes().forEach(({ name, element }) => {
748
+ element?.classList.toggle('nile-group-hidden', !filtered.has(name));
749
+ });
750
+ }
751
+ handleGroupShowSelected() {
752
+ const visibleGroups = new Set();
753
+ if (this.showSelected) {
754
+ this.getAllOptions().forEach((option) => {
755
+ if (!option.hidden)
756
+ visibleGroups.add(option.groupName);
757
+ });
758
+ }
759
+ this.getAllGroupAttributes().forEach(({ name, element }) => {
760
+ element?.classList.toggle('nile-group-hidden', this.showSelected && !visibleGroups.has(name));
761
+ });
762
+ }
708
763
  /** Shows the listbox. */
709
764
  async show() {
710
765
  if (this.open || this.disabled) {
@@ -1282,6 +1337,9 @@ __decorate([
1282
1337
  __decorate([
1283
1338
  property({ type: Boolean })
1284
1339
  ], NileSelect.prototype, "enableVirtualScroll", void 0);
1340
+ __decorate([
1341
+ property({ type: Boolean, reflect: true, attribute: true })
1342
+ ], NileSelect.prototype, "enableGroupHeader", void 0);
1285
1343
  __decorate([
1286
1344
  watch('disabled', { waitUntilFirstUpdate: true })
1287
1345
  ], NileSelect.prototype, "handleDisabledChange", null);