@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,115 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * Handles the start of a resize operation
9
+ * @param e Mouse event
10
+ * @param options Resize configuration options
11
+ * @returns Cleanup function to remove event listeners
12
+ */
13
+ export function handleResizeStart(e, options) {
14
+ e.preventDefault();
15
+ e.stopPropagation();
16
+ const { minWidth = 50, startX, startWidth, element } = options;
17
+ const resizer = e.target;
18
+ // Add resizing class for visual feedback
19
+ resizer.classList.add('resizing');
20
+ const onMouseMove = (e) => {
21
+ e.preventDefault();
22
+ e.stopPropagation();
23
+ const delta = e.pageX - startX;
24
+ const newWidth = Math.max(minWidth, startWidth + delta);
25
+ // Apply width to the current element
26
+ element.style.width = newWidth + 'px';
27
+ // Synchronize width across all cells in the same column
28
+ synchronizeColumnWidth(element, newWidth);
29
+ };
30
+ const onMouseUp = () => {
31
+ resizer.classList.remove('resizing');
32
+ document.removeEventListener('mousemove', onMouseMove);
33
+ document.removeEventListener('mouseup', onMouseUp);
34
+ };
35
+ document.addEventListener('mousemove', onMouseMove);
36
+ document.addEventListener('mouseup', onMouseUp);
37
+ // Return cleanup function
38
+ return () => {
39
+ document.removeEventListener('mousemove', onMouseMove);
40
+ document.removeEventListener('mouseup', onMouseUp);
41
+ };
42
+ }
43
+ /**
44
+ * Gets the column index of an element within its table row
45
+ * @param element The table cell or header element
46
+ * @param selector The CSS selector for the column elements
47
+ * @returns Column index (0-based)
48
+ */
49
+ export function getColumnIndex(element, selector) {
50
+ const tableRow = element.closest('nile-table-row');
51
+ if (tableRow) {
52
+ const columns = tableRow.querySelectorAll(selector);
53
+ return Array.from(columns).indexOf(element);
54
+ }
55
+ return 0;
56
+ }
57
+ /**
58
+ * Synchronizes the width of all cells in the same column
59
+ * @param sourceElement The element that was resized
60
+ * @param newWidth The new width to apply
61
+ */
62
+ export function synchronizeColumnWidth(sourceElement, newWidth) {
63
+ const tableBody = sourceElement.closest('nile-table-body');
64
+ if (!tableBody)
65
+ return;
66
+ const isHeader = sourceElement.tagName.toLowerCase() === 'nile-table-header-item';
67
+ const selector = isHeader ? 'nile-table-header-item' : 'nile-table-cell-item';
68
+ const targetSelector = isHeader ? 'nile-table-cell-item' : 'nile-table-cell-item';
69
+ const columnIndex = getColumnIndex(sourceElement, selector);
70
+ const rows = tableBody.querySelectorAll('nile-table-row');
71
+ rows.forEach(row => {
72
+ const cells = row.querySelectorAll(targetSelector);
73
+ if (cells[columnIndex]) {
74
+ cells[columnIndex].style.width = newWidth + 'px';
75
+ }
76
+ });
77
+ }
78
+ /**
79
+ * Checks if an element has the resizable attribute
80
+ * @param element The element to check
81
+ * @returns True if the element is resizable
82
+ */
83
+ export function isResizable(element) {
84
+ return element.hasAttribute('resizable');
85
+ }
86
+ /**
87
+ * Creates a resize handler function for use in component event listeners
88
+ * @param element The element to make resizable
89
+ * @param minWidth Minimum width constraint
90
+ * @returns Event handler function
91
+ */
92
+ export function createResizeHandler(element, minWidth = 50) {
93
+ return (e) => {
94
+ const options = {
95
+ minWidth,
96
+ startX: e.pageX,
97
+ startWidth: element.offsetWidth,
98
+ element
99
+ };
100
+ handleResizeStart(e, options);
101
+ };
102
+ }
103
+ /**
104
+ * Detects if any columns in a table are resizable
105
+ * @param tableBody The table body element
106
+ * @returns True if any columns have resizable attribute
107
+ */
108
+ export function hasResizableColumns(tableBody) {
109
+ const headerItems = tableBody.querySelectorAll('nile-table-header-item');
110
+ const cellItems = tableBody.querySelectorAll('nile-table-cell-item');
111
+ const hasResizableHeaders = Array.from(headerItems).some(item => isResizable(item));
112
+ const hasResizableCells = Array.from(cellItems).some(item => isResizable(item));
113
+ return hasResizableHeaders || hasResizableCells;
114
+ }
115
+ //# sourceMappingURL=resizable-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable-helper.js","sourceRoot":"","sources":["../../../src/internal/resizable-helper.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\n/**\n * Resizable Helper Utility\n * Provides common functionality for resizable table columns\n */\n\nexport interface ResizeOptions {\n minWidth?: number;\n startX: number;\n startWidth: number;\n element: HTMLElement;\n}\n\nexport interface ColumnResizeData {\n columnIndex: number;\n newWidth: number;\n}\n\n/**\n * Handles the start of a resize operation\n * @param e Mouse event\n * @param options Resize configuration options\n * @returns Cleanup function to remove event listeners\n */\nexport function handleResizeStart(e: MouseEvent, options: ResizeOptions): () => void {\n e.preventDefault();\n e.stopPropagation();\n \n const { minWidth = 50, startX, startWidth, element } = options;\n const resizer = e.target as HTMLElement;\n \n // Add resizing class for visual feedback\n resizer.classList.add('resizing');\n\n const onMouseMove = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n \n const delta = e.pageX - startX;\n const newWidth = Math.max(minWidth, startWidth + delta);\n\n // Apply width to the current element\n element.style.width = newWidth + 'px';\n\n // Synchronize width across all cells in the same column\n synchronizeColumnWidth(element, newWidth);\n };\n\n const onMouseUp = () => {\n resizer.classList.remove('resizing');\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n\n // Return cleanup function\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n}\n\n/**\n * Gets the column index of an element within its table row\n * @param element The table cell or header element\n * @param selector The CSS selector for the column elements\n * @returns Column index (0-based)\n */\nexport function getColumnIndex(element: HTMLElement, selector: string): number {\n const tableRow = element.closest('nile-table-row');\n if (tableRow) {\n const columns = tableRow.querySelectorAll(selector);\n return Array.from(columns).indexOf(element);\n }\n return 0;\n}\n\n/**\n * Synchronizes the width of all cells in the same column\n * @param sourceElement The element that was resized\n * @param newWidth The new width to apply\n */\nexport function synchronizeColumnWidth(sourceElement: HTMLElement, newWidth: number): void {\n const tableBody = sourceElement.closest('nile-table-body');\n if (!tableBody) return;\n\n const isHeader = sourceElement.tagName.toLowerCase() === 'nile-table-header-item';\n const selector = isHeader ? 'nile-table-header-item' : 'nile-table-cell-item';\n const targetSelector = isHeader ? 'nile-table-cell-item' : 'nile-table-cell-item';\n \n const columnIndex = getColumnIndex(sourceElement, selector);\n const rows = tableBody.querySelectorAll('nile-table-row');\n \n rows.forEach(row => {\n const cells = row.querySelectorAll(targetSelector);\n if (cells[columnIndex]) {\n cells[columnIndex].style.width = newWidth + 'px';\n }\n });\n}\n\n/**\n * Checks if an element has the resizable attribute\n * @param element The element to check\n * @returns True if the element is resizable\n */\nexport function isResizable(element: HTMLElement): boolean {\n return element.hasAttribute('resizable');\n}\n\n/**\n * Creates a resize handler function for use in component event listeners\n * @param element The element to make resizable\n * @param minWidth Minimum width constraint\n * @returns Event handler function\n */\nexport function createResizeHandler(element: HTMLElement, minWidth: number = 50): (e: MouseEvent) => void {\n return (e: MouseEvent) => {\n const options: ResizeOptions = {\n minWidth,\n startX: e.pageX,\n startWidth: element.offsetWidth,\n element\n };\n \n handleResizeStart(e, options);\n };\n}\n\n/**\n * Detects if any columns in a table are resizable\n * @param tableBody The table body element\n * @returns True if any columns have resizable attribute\n */\nexport function hasResizableColumns(tableBody: HTMLElement): boolean {\n const headerItems = tableBody.querySelectorAll('nile-table-header-item');\n const cellItems = tableBody.querySelectorAll('nile-table-cell-item');\n \n const hasResizableHeaders = Array.from(headerItems).some(item => \n isResizable(item)\n );\n const hasResizableCells = Array.from(cellItems).some(item => \n isResizable(item)\n );\n \n return hasResizableHeaders || hasResizableCells;\n} \n"]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * Resizable Styles Utility
9
+ * Centralized styles for resizable table functionality
10
+ */
11
+ export declare const resizableHostStyles: import("lit").CSSResult;
12
+ export declare const resizableHeaderStyles: import("lit").CSSResult;
13
+ export declare const resizerStyles: import("lit").CSSResult;
14
+ export declare const headerResizerStyles: import("lit").CSSResult;
15
+ export declare const resizableSlotStyles: import("lit").CSSResult;
16
+ export declare const tableLayoutStyles: import("lit").CSSResult;
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { css } from 'lit';
8
+ /**
9
+ * Resizable Styles Utility
10
+ * Centralized styles for resizable table functionality
11
+ */
12
+ export const resizableHostStyles = css `
13
+ /* Resizable-specific host styles */
14
+ :host([resizable]) {
15
+ position: relative;
16
+ overflow: hidden;
17
+ table-layout: fixed;
18
+ }
19
+ `;
20
+ export const resizableHeaderStyles = css `
21
+ /* Resizable-specific header styles */
22
+ :host([resizable]) {
23
+ position: relative;
24
+ border-right: 1px solid var(--nile-colors-neutral-400);
25
+ }
26
+
27
+ /* Resizable-specific wrapper styles */
28
+ :host([resizable]) .header__item__wrapper {
29
+ position: relative;
30
+ }
31
+ `;
32
+ export const resizerStyles = css `
33
+ /* Resizer styles - only apply when resizable */
34
+ .resizer {
35
+ position: absolute;
36
+ right: 0;
37
+ top: -1000px;
38
+ bottom: -1000px;
39
+ width: 8px;
40
+ cursor: col-resize;
41
+ user-select: none;
42
+ background-color: var(--nile-colors-neutral-100);
43
+ transition: background-color 0.2s;
44
+ z-index: 10;
45
+ opacity: 0;
46
+ transition: opacity 0.2s ease;
47
+ pointer-events: none;
48
+ }
49
+
50
+ :host([resizable]):hover .resizer {
51
+ opacity: 1;
52
+ pointer-events: auto;
53
+ }
54
+
55
+ .resizer::before {
56
+ content: '';
57
+ position: absolute;
58
+ right: 3px;
59
+ top: 0;
60
+ width: 2px;
61
+ height: 100%;
62
+ background-color: var(--nile-colors-neutral-500);
63
+ opacity: 0.8;
64
+ }
65
+
66
+ .resizer:hover {
67
+ background-color: var(--nile-colors-neutral-400);
68
+ }
69
+
70
+ .resizer:hover::before {
71
+ background-color: var(--nile-colors-neutral-700);
72
+ opacity: 1;
73
+ }
74
+
75
+ .resizer.resizing {
76
+ background-color: var(--nile-colors-neutral-400);
77
+ opacity: 1;
78
+ pointer-events: auto;
79
+ }
80
+
81
+ .resizer.resizing::before {
82
+ background-color: var(--nile-colors-neutral-700);
83
+ opacity: 1;
84
+ width: 3px;
85
+ }
86
+ `;
87
+ export const headerResizerStyles = css `
88
+ /* Header resizer styles */
89
+ .resizer {
90
+ position: absolute;
91
+ right: -2px;
92
+ top: -1000px;
93
+ bottom: -1000px;
94
+ width: 8px;
95
+ cursor: ew-resize;
96
+ user-select: none;
97
+ transition: background-color 0.2s;
98
+ z-index: 10;
99
+ opacity: 0;
100
+ transition: opacity 0.2s ease;
101
+ }
102
+
103
+ :host([resizable]):hover .resizer {
104
+ opacity: 1;
105
+ }
106
+
107
+ .resizer::before {
108
+ content: '';
109
+ position: absolute;
110
+ height: 100%;
111
+ opacity: 0.8;
112
+ }
113
+
114
+ .resizer.resizing {
115
+ border-right: 4px double var(--nile-colors-neutral-400);
116
+ background-color: transparent;
117
+ opacity: 1;
118
+ }
119
+ `;
120
+ export const resizableSlotStyles = css `
121
+ /* Slot styles for resizable mode */
122
+ :host([resizable]) ::slotted(*) {
123
+ overflow: hidden;
124
+ text-overflow: ellipsis;
125
+ white-space: nowrap;
126
+ display: block;
127
+ }
128
+
129
+ :host([resizable]) ::slotted(span),
130
+ :host([resizable]) ::slotted(div),
131
+ :host([resizable]) ::slotted(p) {
132
+ overflow: hidden;
133
+ text-overflow: ellipsis;
134
+ white-space: nowrap;
135
+ display: block;
136
+ }
137
+ `;
138
+ export const tableLayoutStyles = css `
139
+ /* Apply fixed table layout only when resizable columns are present */
140
+ .nile__table__body[resizable] {
141
+ table-layout: fixed;
142
+ }
143
+ `;
144
+ //# sourceMappingURL=resizable-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable-styles.js","sourceRoot":"","sources":["../../../src/internal/resizable-styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;;GAGG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;CAOrC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;CAWvC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsD/B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCrC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;CAiBrC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;;CAKnC,CAAC","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 { css } from 'lit';\n\n/**\n * Resizable Styles Utility\n * Centralized styles for resizable table functionality\n */\n\nexport const resizableHostStyles = css`\n /* Resizable-specific host styles */\n :host([resizable]) {\n position: relative;\n overflow: hidden;\n table-layout: fixed;\n }\n`;\n\nexport const resizableHeaderStyles = css`\n /* Resizable-specific header styles */\n :host([resizable]) {\n position: relative;\n border-right: 1px solid var(--nile-colors-neutral-400);\n }\n\n /* Resizable-specific wrapper styles */\n :host([resizable]) .header__item__wrapper {\n position: relative;\n }\n`;\n\nexport const resizerStyles = css`\n /* Resizer styles - only apply when resizable */\n .resizer {\n position: absolute;\n right: 0;\n top: -1000px;\n bottom: -1000px;\n width: 8px;\n cursor: col-resize;\n user-select: none;\n background-color: var(--nile-colors-neutral-100);\n transition: background-color 0.2s;\n z-index: 10;\n opacity: 0;\n transition: opacity 0.2s ease;\n pointer-events: none;\n }\n\n :host([resizable]):hover .resizer {\n opacity: 1;\n pointer-events: auto;\n }\n\n .resizer::before {\n content: '';\n position: absolute;\n right: 3px;\n top: 0;\n width: 2px;\n height: 100%;\n background-color: var(--nile-colors-neutral-500);\n opacity: 0.8;\n }\n\n .resizer:hover {\n background-color: var(--nile-colors-neutral-400);\n }\n\n .resizer:hover::before {\n background-color: var(--nile-colors-neutral-700);\n opacity: 1;\n }\n\n .resizer.resizing {\n background-color: var(--nile-colors-neutral-400);\n opacity: 1;\n pointer-events: auto;\n }\n\n .resizer.resizing::before {\n background-color: var(--nile-colors-neutral-700);\n opacity: 1;\n width: 3px;\n }\n`;\n\nexport const headerResizerStyles = css`\n /* Header resizer styles */\n .resizer {\n position: absolute;\n right: -2px;\n top: -1000px;\n bottom: -1000px;\n width: 8px;\n cursor: ew-resize;\n user-select: none;\n transition: background-color 0.2s;\n z-index: 10;\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n\n :host([resizable]):hover .resizer {\n opacity: 1;\n }\n\n .resizer::before {\n content: '';\n position: absolute;\n height: 100%;\n opacity: 0.8;\n }\n\n .resizer.resizing {\n border-right: 4px double var(--nile-colors-neutral-400);\n background-color: transparent;\n opacity: 1;\n }\n`;\n\nexport const resizableSlotStyles = css`\n /* Slot styles for resizable mode */\n :host([resizable]) ::slotted(*) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n }\n\n :host([resizable]) ::slotted(span),\n :host([resizable]) ::slotted(div),\n :host([resizable]) ::slotted(p) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n }\n`;\n\nexport const tableLayoutStyles = css`\n /* Apply fixed table layout only when resizable columns are present */\n .nile__table__body[resizable] {\n table-layout: fixed;\n }\n`; \n"]}
@@ -38,6 +38,11 @@ export declare function getColumnIndex(element: HTMLElement, selector: string):
38
38
  * @param newWidth The new width to apply
39
39
  */
40
40
  export declare function synchronizeColumnWidth(sourceElement: HTMLElement, newWidth: number): void;
41
+ /**
42
+ * Resets all column widths in a table to their default values
43
+ * @param tableBody The table body element to reset
44
+ */
45
+ export declare function resetAllColumnWidths(tableBody: HTMLElement): void;
41
46
  /**
42
47
  * Checks if an element has the resizable attribute
43
48
  * @param element The element to check
@@ -71,6 +71,20 @@ export function synchronizeColumnWidth(sourceElement, newWidth) {
71
71
  }
72
72
  });
73
73
  }
74
+ /**
75
+ * Resets all column widths in a table to their default values
76
+ * @param tableBody The table body element to reset
77
+ */
78
+ export function resetAllColumnWidths(tableBody) {
79
+ const headerItems = tableBody.querySelectorAll('nile-table-header-item');
80
+ const cellItems = tableBody.querySelectorAll('nile-table-cell-item');
81
+ headerItems.forEach(header => {
82
+ header.style.removeProperty('width');
83
+ });
84
+ cellItems.forEach(cell => {
85
+ cell.style.removeProperty('width');
86
+ });
87
+ }
74
88
  /**
75
89
  * Checks if an element has the resizable attribute
76
90
  * @param element The element to check
@@ -102,10 +116,19 @@ export function createResizeHandler(element, minWidth = 50) {
102
116
  * @returns True if any columns have resizable attribute
103
117
  */
104
118
  export function hasResizableColumns(tableBody) {
105
- const headerItems = tableBody.querySelectorAll('nile-table-header-item');
106
- const cellItems = tableBody.querySelectorAll('nile-table-cell-item');
107
- const hasResizableHeaders = Array.from(headerItems).some(item => isResizable(item));
108
- const hasResizableCells = Array.from(cellItems).some(item => isResizable(item));
119
+ const directChildren = Array.from(tableBody.children);
120
+ const hasResizableHeaders = directChildren.some(child => {
121
+ if (child.tagName.toLowerCase() === 'nile-table-header-item') {
122
+ return child.hasAttribute('resizable');
123
+ }
124
+ return false;
125
+ });
126
+ const hasResizableCells = directChildren.some(child => {
127
+ if (child.tagName.toLowerCase() === 'nile-table-cell-item') {
128
+ return child.hasAttribute('resizable');
129
+ }
130
+ return false;
131
+ });
109
132
  return hasResizableHeaders || hasResizableCells;
110
133
  }
111
134
  //# sourceMappingURL=resizable-table-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resizable-table-helper.js","sourceRoot":"","sources":["../../../src/internal/resizable-table-helper.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Resizable Helper Utility\n * Provides common functionality for resizable table columns\n */\n\nexport interface ResizeOptions {\n minWidth?: number;\n startX: number;\n startWidth: number;\n element: HTMLElement;\n}\n\nexport interface ColumnResizeData {\n columnIndex: number;\n newWidth: number;\n}\n\n/**\n * Handles the start of a resize operation\n * @param e Mouse event\n * @param options Resize configuration options\n * @returns Cleanup function to remove event listeners\n */\nexport function handleResizeStart(e: MouseEvent, options: ResizeOptions): () => void {\n e.preventDefault();\n e.stopPropagation();\n \n const { minWidth = 50, startX, startWidth, element } = options;\n const resizer = e.target as HTMLElement;\n \n resizer.classList.add('resizing');\n\n const onMouseMove = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n \n const delta = e.pageX - startX;\n const newWidth = Math.max(minWidth, startWidth + delta);\n\n element.style.width = newWidth + 'px';\n\n synchronizeColumnWidth(element, newWidth);\n };\n\n const onMouseUp = () => {\n resizer.classList.remove('resizing');\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n}\n\n/**\n * Gets the column index of an element within its table row\n * @param element The table cell or header element\n * @param selector The CSS selector for the column elements\n * @returns Column index (0-based)\n */\nexport function getColumnIndex(element: HTMLElement, selector: string): number {\n const tableRow = element.closest('nile-table-row');\n if (tableRow) {\n const columns = tableRow.querySelectorAll(selector);\n return Array.from(columns).indexOf(element);\n }\n return 0;\n}\n\n/**\n * Synchronizes the width of all cells in the same column\n * @param sourceElement The element that was resized\n * @param newWidth The new width to apply\n */\nexport function synchronizeColumnWidth(sourceElement: HTMLElement, newWidth: number): void {\n const tableBody = sourceElement.closest('nile-table-body');\n if (!tableBody) return;\n\n const isHeader = sourceElement.tagName.toLowerCase() === 'nile-table-header-item';\n const selector = isHeader ? 'nile-table-header-item' : 'nile-table-cell-item';\n const targetSelector = isHeader ? 'nile-table-cell-item' : 'nile-table-cell-item';\n \n const columnIndex = getColumnIndex(sourceElement, selector);\n const rows = tableBody.querySelectorAll('nile-table-row');\n \n rows.forEach(row => {\n const cells = row.querySelectorAll(targetSelector);\n if (cells[columnIndex]) {\n cells[columnIndex].style.width = newWidth + 'px';\n }\n });\n}\n\n/**\n * Checks if an element has the resizable attribute\n * @param element The element to check\n * @returns True if the element is resizable\n */\nexport function isResizable(element: HTMLElement): boolean {\n return element.hasAttribute('resizable');\n}\n\n/**\n * Creates a resize handler function for use in component event listeners\n * @param element The element to make resizable\n * @param minWidth Minimum width constraint\n * @returns Event handler function\n */\nexport function createResizeHandler(element: HTMLElement, minWidth: number = 50): (e: MouseEvent) => void {\n return (e: MouseEvent) => {\n const options: ResizeOptions = {\n minWidth,\n startX: e.pageX,\n startWidth: element.offsetWidth,\n element\n };\n \n handleResizeStart(e, options);\n };\n}\n\n/**\n * Detects if any columns in a table are resizable\n * @param tableBody The table body element\n * @returns True if any columns have resizable attribute\n */\nexport function hasResizableColumns(tableBody: HTMLElement): boolean {\n const headerItems = tableBody.querySelectorAll('nile-table-header-item');\n const cellItems = tableBody.querySelectorAll('nile-table-cell-item');\n \n const hasResizableHeaders = Array.from(headerItems).some(item => \n isResizable(item)\n );\n const hasResizableCells = Array.from(cellItems).some(item => \n isResizable(item)\n );\n \n return hasResizableHeaders || hasResizableCells;\n} \n"]}
1
+ {"version":3,"file":"resizable-table-helper.js","sourceRoot":"","sources":["../../../src/internal/resizable-table-helper.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Resizable Helper Utility\n * Provides common functionality for resizable table columns\n */\n\nexport interface ResizeOptions {\n minWidth?: number;\n startX: number;\n startWidth: number;\n element: HTMLElement;\n}\n\nexport interface ColumnResizeData {\n columnIndex: number;\n newWidth: number;\n}\n\n/**\n * Handles the start of a resize operation\n * @param e Mouse event\n * @param options Resize configuration options\n * @returns Cleanup function to remove event listeners\n */\nexport function handleResizeStart(e: MouseEvent, options: ResizeOptions): () => void {\n e.preventDefault();\n e.stopPropagation();\n \n const { minWidth = 50, startX, startWidth, element } = options;\n const resizer = e.target as HTMLElement;\n \n resizer.classList.add('resizing');\n\n const onMouseMove = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n \n const delta = e.pageX - startX;\n const newWidth = Math.max(minWidth, startWidth + delta);\n\n element.style.width = newWidth + 'px';\n\n synchronizeColumnWidth(element, newWidth);\n };\n\n const onMouseUp = () => {\n resizer.classList.remove('resizing');\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n}\n\n/**\n * Gets the column index of an element within its table row\n * @param element The table cell or header element\n * @param selector The CSS selector for the column elements\n * @returns Column index (0-based)\n */\nexport function getColumnIndex(element: HTMLElement, selector: string): number {\n const tableRow = element.closest('nile-table-row');\n if (tableRow) {\n const columns = tableRow.querySelectorAll(selector);\n return Array.from(columns).indexOf(element);\n }\n return 0;\n}\n\n/**\n * Synchronizes the width of all cells in the same column\n * @param sourceElement The element that was resized\n * @param newWidth The new width to apply\n */\nexport function synchronizeColumnWidth(sourceElement: HTMLElement, newWidth: number): void {\n const tableBody = sourceElement.closest('nile-table-body');\n if (!tableBody) return;\n\n const isHeader = sourceElement.tagName.toLowerCase() === 'nile-table-header-item';\n const selector = isHeader ? 'nile-table-header-item' : 'nile-table-cell-item';\n const targetSelector = isHeader ? 'nile-table-cell-item' : 'nile-table-cell-item';\n \n const columnIndex = getColumnIndex(sourceElement, selector);\n const rows = tableBody.querySelectorAll('nile-table-row');\n \n rows.forEach(row => {\n const cells = row.querySelectorAll(targetSelector);\n if (cells[columnIndex]) {\n cells[columnIndex].style.width = newWidth + 'px';\n }\n });\n}\n\n/**\n * Resets all column widths in a table to their default values\n * @param tableBody The table body element to reset\n */\nexport function resetAllColumnWidths(tableBody: HTMLElement): void {\n const headerItems = tableBody.querySelectorAll('nile-table-header-item');\n const cellItems = tableBody.querySelectorAll('nile-table-cell-item');\n \n headerItems.forEach(header => {\n header.style.removeProperty('width');\n });\n \n cellItems.forEach(cell => {\n cell.style.removeProperty('width');\n });\n}\n\n/**\n * Checks if an element has the resizable attribute\n * @param element The element to check\n * @returns True if the element is resizable\n */\nexport function isResizable(element: HTMLElement): boolean {\n return element.hasAttribute('resizable');\n}\n\n/**\n * Creates a resize handler function for use in component event listeners\n * @param element The element to make resizable\n * @param minWidth Minimum width constraint\n * @returns Event handler function\n */\nexport function createResizeHandler(element: HTMLElement, minWidth: number = 50): (e: MouseEvent) => void {\n return (e: MouseEvent) => {\n const options: ResizeOptions = {\n minWidth,\n startX: e.pageX,\n startWidth: element.offsetWidth,\n element\n };\n \n handleResizeStart(e, options);\n };\n}\n\n/**\n * Detects if any columns in a table are resizable\n * @param tableBody The table body element\n * @returns True if any columns have resizable attribute\n */\nexport function hasResizableColumns(tableBody: HTMLElement): boolean {\n const directChildren = Array.from(tableBody.children);\n \n const hasResizableHeaders = directChildren.some(child => {\n if (child.tagName.toLowerCase() === 'nile-table-header-item') {\n return child.hasAttribute('resizable');\n }\n return false;\n });\n \n const hasResizableCells = directChildren.some(child => {\n if (child.tagName.toLowerCase() === 'nile-table-cell-item') {\n return child.hasAttribute('resizable');\n }\n return false;\n });\n \n return hasResizableHeaders || hasResizableCells;\n} \n"]}
@@ -0,0 +1,17 @@
1
+ /* @web/test-runner snapshot v1 */
2
+ export const snapshots = {};
3
+
4
+ snapshots["NileBadge should display the default slot content"] =
5
+ `<span
6
+ class="badge badge--badge-color badge--normal"
7
+ part="base"
8
+ >
9
+ <slot
10
+ class="badge__content"
11
+ part="content"
12
+ >
13
+ </slot>
14
+ </span>
15
+ `;
16
+ /* end snapshot NileBadge should display the default slot content */
17
+