@aquera/nile-elements 1.3.1-beta-1.0 → 1.3.1-beta-1

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 (535) hide show
  1. package/README.md +6 -0
  2. package/demo/index.css +1 -4
  3. package/demo/index.html +15 -38
  4. package/demo/nxtgen.css +6 -0
  5. package/demo/variables.css +6 -2
  6. package/dist/{fixture-d1470b58.cjs.js → fixture-54600b35.cjs.js} +2 -2
  7. package/dist/{fixture-d1470b58.cjs.js.map → fixture-54600b35.cjs.js.map} +1 -1
  8. package/dist/{fixture-1c49c014.cjs.js → fixture-5b79f853.cjs.js} +2 -2
  9. package/dist/{fixture-dff65c89.cjs.js.map → fixture-5b79f853.cjs.js.map} +1 -1
  10. package/dist/{fixture-dff65c89.cjs.js → fixture-73855806.cjs.js} +2 -2
  11. package/dist/{fixture-1c49c014.cjs.js.map → fixture-73855806.cjs.js.map} +1 -1
  12. package/dist/fixture-90b199c4.esm.js +569 -0
  13. package/dist/{fixture-985bba12.esm.js → fixture-9871e8a9.esm.js} +1 -1
  14. package/dist/fixture-c1d78368.cjs.js +395 -0
  15. package/dist/fixture-c1d78368.cjs.js.map +1 -0
  16. package/dist/fixture-cf7bfcf5.esm.js +569 -0
  17. package/dist/fixture-dbd66009.cjs.js +395 -0
  18. package/dist/fixture-dbd66009.cjs.js.map +1 -0
  19. package/dist/index.cjs.js +1 -1
  20. package/dist/index.esm.js +1 -1
  21. package/dist/index.js +981 -628
  22. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  23. package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
  24. package/dist/nile-auto-complete/index.cjs.js +1 -1
  25. package/dist/nile-auto-complete/index.esm.js +1 -1
  26. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  27. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  28. package/dist/nile-auto-complete/nile-auto-complete.esm.js +2 -2
  29. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  30. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +1 -1
  31. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  32. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  33. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  34. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  35. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  36. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  37. package/dist/nile-button/nile-button.test.esm.js +1 -1
  38. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  39. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
  40. package/dist/nile-calendar/index.cjs.js +1 -1
  41. package/dist/nile-calendar/index.esm.js +1 -1
  42. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  43. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  44. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  45. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  46. package/dist/nile-calendar/nile-calendar.css.esm.js +387 -110
  47. package/dist/nile-calendar/nile-calendar.enum.cjs.js +2 -0
  48. package/dist/nile-calendar/nile-calendar.enum.cjs.js.map +1 -0
  49. package/dist/nile-calendar/nile-calendar.enum.esm.js +1 -0
  50. package/dist/nile-calendar/nile-calendar.esm.js +216 -108
  51. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  52. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  53. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  54. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  55. package/dist/nile-card/nile-card.test.esm.js +1 -1
  56. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  57. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  58. package/dist/nile-chip/index.cjs.js +1 -1
  59. package/dist/nile-chip/index.esm.js +1 -1
  60. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  61. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  62. package/dist/nile-chip/nile-chip.esm.js +2 -2
  63. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  64. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  65. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  66. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js +2 -0
  67. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js.map +1 -0
  68. package/dist/nile-code-editor/backup_nile-code-editor copy.esm.js +1 -0
  69. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  70. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  71. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  72. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  73. package/dist/nile-dropdown/index.cjs.js +1 -1
  74. package/dist/nile-dropdown/index.esm.js +1 -1
  75. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  76. package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -1
  77. package/dist/nile-dropdown/nile-dropdown.esm.js +2 -2
  78. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  79. package/dist/nile-dropdown/nile-dropdown.test.cjs.js.map +1 -1
  80. package/dist/nile-dropdown/nile-dropdown.test.esm.js +6 -6
  81. package/dist/nile-dropdown/portal-manager.cjs.js +1 -1
  82. package/dist/nile-dropdown/portal-manager.cjs.js.map +1 -1
  83. package/dist/nile-dropdown/portal-manager.esm.js +1 -1
  84. package/dist/nile-dropdown/portal-utils.cjs.js +1 -1
  85. package/dist/nile-dropdown/portal-utils.cjs.js.map +1 -1
  86. package/dist/nile-dropdown/portal-utils.esm.js +1 -1
  87. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  88. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  89. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  90. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
  91. package/dist/nile-file-preview/nile-file-preview.test.cjs.js +1 -1
  92. package/dist/nile-file-preview/nile-file-preview.test.esm.js +1 -1
  93. package/dist/nile-file-upload/nile-file-upload.test.cjs.js +1 -1
  94. package/dist/nile-file-upload/nile-file-upload.test.esm.js +1 -1
  95. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  96. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
  97. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  98. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
  99. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  100. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
  101. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  102. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  103. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  104. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  105. package/dist/nile-inline-edit/index.cjs.js +1 -1
  106. package/dist/nile-inline-edit/index.esm.js +1 -1
  107. package/dist/nile-inline-edit/nile-inline-edit-utils.cjs.js +2 -0
  108. package/dist/nile-inline-edit/nile-inline-edit-utils.cjs.js.map +1 -0
  109. package/dist/nile-inline-edit/nile-inline-edit-utils.esm.js +1 -0
  110. package/dist/nile-inline-edit/nile-inline-edit.cjs.js +1 -1
  111. package/dist/nile-inline-edit/nile-inline-edit.cjs.js.map +1 -1
  112. package/dist/nile-inline-edit/nile-inline-edit.esm.js +4 -4
  113. package/dist/nile-inline-sidebar/nile-inline-sidebar.cjs.js +1 -1
  114. package/dist/nile-inline-sidebar/nile-inline-sidebar.cjs.js.map +1 -1
  115. package/dist/nile-inline-sidebar/nile-inline-sidebar.css.cjs.js +1 -1
  116. package/dist/nile-inline-sidebar/nile-inline-sidebar.css.cjs.js.map +1 -1
  117. package/dist/nile-inline-sidebar/nile-inline-sidebar.css.esm.js +2 -10
  118. package/dist/nile-inline-sidebar/nile-inline-sidebar.esm.js +6 -10
  119. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.cjs.js +1 -1
  120. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.cjs.js.map +1 -1
  121. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.css.cjs.js +1 -1
  122. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.css.cjs.js.map +1 -1
  123. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.css.esm.js +2 -8
  124. package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.esm.js +2 -2
  125. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  126. package/dist/nile-input/nile-input.test.esm.js +1 -1
  127. package/dist/nile-link/nile-link.css.cjs.js +1 -1
  128. package/dist/nile-link/nile-link.css.cjs.js.map +1 -1
  129. package/dist/nile-link/nile-link.css.esm.js +3 -3
  130. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  131. package/dist/nile-link/nile-link.test.esm.js +1 -1
  132. package/dist/nile-lite-tooltip/index.cjs.js +1 -1
  133. package/dist/nile-lite-tooltip/index.esm.js +1 -1
  134. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
  135. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js.map +1 -1
  136. package/dist/nile-lite-tooltip/nile-lite-tooltip.esm.js +1 -1
  137. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  138. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  139. package/dist/nile-popover/index.cjs.js +1 -1
  140. package/dist/nile-popover/index.esm.js +1 -1
  141. package/dist/nile-popover/nile-popover.cjs.js +3 -3
  142. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  143. package/dist/nile-popover/nile-popover.esm.js +4 -4
  144. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  145. package/dist/nile-popover/nile-popover.test.cjs.js.map +1 -1
  146. package/dist/nile-popover/nile-popover.test.esm.js +4 -4
  147. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  148. package/dist/nile-popup/nile-popup.test.esm.js +1 -1
  149. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  150. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
  151. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  152. package/dist/nile-radio/nile-radio.test.esm.js +1 -1
  153. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  154. package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
  155. package/dist/nile-select/index.cjs.js +1 -1
  156. package/dist/nile-select/index.esm.js +1 -1
  157. package/dist/nile-select/nile-select.cjs.js +1 -1
  158. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  159. package/dist/nile-select/nile-select.esm.js +2 -2
  160. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  161. package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
  162. package/dist/nile-select/nile-select.test.esm.js +1 -1
  163. package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
  164. package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
  165. package/dist/nile-select/virtual-scroll-helper.esm.js +0 -2
  166. package/dist/nile-side-bar/nile-side-bar.cjs.js +1 -1
  167. package/dist/nile-side-bar/nile-side-bar.cjs.js.map +1 -1
  168. package/dist/nile-side-bar/nile-side-bar.css.cjs.js +1 -1
  169. package/dist/nile-side-bar/nile-side-bar.css.cjs.js.map +1 -1
  170. package/dist/nile-side-bar/nile-side-bar.css.esm.js +29 -24
  171. package/dist/nile-side-bar/nile-side-bar.esm.js +1 -7
  172. package/dist/nile-side-bar-expand/nile-side-bar-expand.cjs.js +1 -1
  173. package/dist/nile-side-bar-expand/nile-side-bar-expand.cjs.js.map +1 -1
  174. package/dist/nile-side-bar-expand/nile-side-bar-expand.css.cjs.js +1 -1
  175. package/dist/nile-side-bar-expand/nile-side-bar-expand.css.cjs.js.map +1 -1
  176. package/dist/nile-side-bar-expand/nile-side-bar-expand.css.esm.js +5 -3
  177. package/dist/nile-side-bar-expand/nile-side-bar-expand.esm.js +8 -8
  178. package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js +1 -1
  179. package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js.map +1 -1
  180. package/dist/nile-side-bar-footer/nile-side-bar-footer.css.esm.js +3 -5
  181. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.cjs.js +1 -1
  182. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.cjs.js.map +1 -1
  183. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.css.cjs.js +1 -1
  184. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.css.cjs.js.map +1 -1
  185. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.css.esm.js +5 -17
  186. package/dist/nile-side-bar-footer-item/nile-side-bar-footer-item.esm.js +3 -3
  187. package/dist/nile-side-bar-group/nile-side-bar-group.css.cjs.js +1 -1
  188. package/dist/nile-side-bar-group/nile-side-bar-group.css.cjs.js.map +1 -1
  189. package/dist/nile-side-bar-group/nile-side-bar-group.css.esm.js +7 -4
  190. package/dist/nile-side-bar-group-item/nile-side-bar-group-item.css.cjs.js +1 -1
  191. package/dist/nile-side-bar-group-item/nile-side-bar-group-item.css.cjs.js.map +1 -1
  192. package/dist/nile-side-bar-group-item/nile-side-bar-group-item.css.esm.js +56 -58
  193. package/dist/nile-sidebar/index.cjs.js +2 -0
  194. package/dist/nile-sidebar/index.cjs.js.map +1 -0
  195. package/dist/nile-sidebar/index.esm.js +75 -0
  196. package/dist/nile-sidebar-menu/index.cjs.js +2 -0
  197. package/dist/nile-sidebar-menu/index.cjs.js.map +1 -0
  198. package/dist/nile-sidebar-menu/index.esm.js +1 -0
  199. package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js +2 -0
  200. package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js.map +1 -0
  201. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js +2 -0
  202. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js.map +1 -0
  203. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.esm.js +38 -0
  204. package/dist/nile-sidebar-menu/nile-sidebar-menu.esm.js +10 -0
  205. package/dist/nile-sidebar-menu-items/index.cjs.js +2 -0
  206. package/dist/nile-sidebar-menu-items/index.cjs.js.map +1 -0
  207. package/dist/nile-sidebar-menu-items/index.esm.js +1 -0
  208. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js +2 -0
  209. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js.map +1 -0
  210. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js +2 -0
  211. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js.map +1 -0
  212. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.esm.js +36 -0
  213. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.esm.js +15 -0
  214. package/dist/nile-sidebar-wrapper/index.cjs.js +2 -0
  215. package/dist/nile-sidebar-wrapper/index.cjs.js.map +1 -0
  216. package/dist/nile-sidebar-wrapper/index.esm.js +1 -0
  217. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js +2 -0
  218. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js.map +1 -0
  219. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js +2 -0
  220. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js.map +1 -0
  221. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.esm.js +105 -0
  222. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.esm.js +16 -0
  223. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  224. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
  225. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  226. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  227. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  228. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
  229. package/dist/nile-tooltip/index.cjs.js +1 -1
  230. package/dist/nile-tooltip/index.esm.js +1 -1
  231. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  232. package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
  233. package/dist/nile-tooltip/nile-tooltip.esm.js +2 -2
  234. package/dist/nile-virtual-select/group-manager.cjs.js +2 -0
  235. package/dist/nile-virtual-select/group-manager.cjs.js.map +1 -0
  236. package/dist/nile-virtual-select/group-manager.esm.js +1 -0
  237. package/dist/nile-virtual-select/index.cjs.js +1 -1
  238. package/dist/nile-virtual-select/index.esm.js +1 -1
  239. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
  240. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  241. package/dist/nile-virtual-select/nile-virtual-select.esm.js +13 -13
  242. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +1 -1
  243. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +1 -1
  244. package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js +2 -0
  245. package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js.map +1 -0
  246. package/dist/nile-virtual-select/temp_nile-virtual-select copy.esm.js +231 -0
  247. package/dist/scopedElementsWrapper-4c29be11.esm.js +7 -0
  248. package/dist/scopedElementsWrapper-a112fc73.cjs.js +6 -0
  249. package/dist/scopedElementsWrapper-a112fc73.cjs.js.map +1 -0
  250. package/dist/src/internal/portal-manager.d.ts +53 -0
  251. package/dist/src/internal/portal-manager.js +196 -0
  252. package/dist/src/internal/portal-manager.js.map +1 -0
  253. package/dist/src/internal/portal.d.ts +60 -0
  254. package/dist/src/internal/portal.js +199 -0
  255. package/dist/src/internal/portal.js.map +1 -0
  256. package/dist/src/internal/resizable-helper.d.ts +59 -0
  257. package/dist/src/internal/resizable-helper.js +115 -0
  258. package/dist/src/internal/resizable-helper.js.map +1 -0
  259. package/dist/src/internal/resizable-styles.d.ts +16 -0
  260. package/dist/src/internal/resizable-styles.js +144 -0
  261. package/dist/src/internal/resizable-styles.js.map +1 -0
  262. package/dist/src/internal/virtualizer-error-handler.d.ts +30 -0
  263. package/dist/src/internal/virtualizer-error-handler.js +82 -0
  264. package/dist/src/internal/virtualizer-error-handler.js.map +1 -0
  265. package/dist/src/lib/index.d.ts +7 -0
  266. package/dist/src/lib/index.js +8 -0
  267. package/dist/src/lib/index.js.map +1 -0
  268. package/dist/src/lib/virtualize.d.ts +32 -0
  269. package/dist/src/lib/virtualize.js +105 -0
  270. package/dist/src/lib/virtualize.js.map +1 -0
  271. package/dist/src/lib/virtualize.test.d.ts +7 -0
  272. package/dist/src/lib/virtualize.test.js +57 -0
  273. package/dist/src/lib/virtualize.test.js.map +1 -0
  274. package/dist/src/nile-auto-complete/nile-auto-complete.d.ts +4 -0
  275. package/dist/src/nile-auto-complete/nile-auto-complete.js +39 -0
  276. package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
  277. package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +17 -0
  278. package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +310 -0
  279. package/dist/src/nile-calendar/nile-calendar.css.js +385 -108
  280. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
  281. package/dist/src/nile-calendar/nile-calendar.d.ts +17 -1
  282. package/dist/src/nile-calendar/nile-calendar.js +345 -108
  283. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  284. package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +34 -0
  285. package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +31 -0
  286. package/dist/src/nile-chip/nile-chip.d.ts +4 -0
  287. package/dist/src/nile-chip/nile-chip.js +46 -0
  288. package/dist/src/nile-chip/nile-chip.js.map +1 -1
  289. package/dist/src/nile-code-editor/Old_theme copy.d.ts +191 -0
  290. package/dist/src/nile-code-editor/Old_theme copy.js +193 -0
  291. package/dist/src/nile-code-editor/Old_theme copy.js.map +1 -0
  292. package/dist/src/nile-code-editor/backup_nile-code-editor copy.d.ts +0 -0
  293. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js +675 -0
  294. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js.map +1 -0
  295. package/dist/src/nile-code-editor/theme copy.d.ts +191 -0
  296. package/dist/src/nile-code-editor/theme copy.js +193 -0
  297. package/dist/src/nile-code-editor/theme copy.js.map +1 -0
  298. package/dist/src/nile-dropdown/nile-dropdown.d.ts +4 -1
  299. package/dist/src/nile-dropdown/nile-dropdown.js +37 -1
  300. package/dist/src/nile-dropdown/nile-dropdown.js.map +1 -1
  301. package/dist/src/nile-dropdown/portal-manager.js +2 -0
  302. package/dist/src/nile-dropdown/portal-manager.js.map +1 -1
  303. package/dist/src/nile-dropdown/portal-utils.d.ts +1 -0
  304. package/dist/src/nile-dropdown/portal-utils.js +24 -0
  305. package/dist/src/nile-dropdown/portal-utils.js.map +1 -1
  306. package/dist/src/nile-floating-panel/anchor-manager.d.ts +26 -0
  307. package/dist/src/nile-floating-panel/anchor-manager.js +49 -0
  308. package/dist/src/nile-floating-panel/anchor-manager.js.map +1 -0
  309. package/dist/src/nile-floating-panel/content-manager.d.ts +23 -0
  310. package/dist/src/nile-floating-panel/content-manager.js +67 -0
  311. package/dist/src/nile-floating-panel/content-manager.js.map +1 -0
  312. package/dist/src/nile-floating-panel/event-manager.d.ts +38 -0
  313. package/dist/src/nile-floating-panel/event-manager.js +81 -0
  314. package/dist/src/nile-floating-panel/event-manager.js.map +1 -0
  315. package/dist/src/nile-floating-panel/index.d.ts +1 -0
  316. package/dist/src/nile-floating-panel/index.js +2 -0
  317. package/dist/src/nile-floating-panel/index.js.map +1 -0
  318. package/dist/src/nile-floating-panel/nile-floating-panel.css.d.ts +17 -0
  319. package/dist/src/nile-floating-panel/nile-floating-panel.css.js +51 -0
  320. package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +1 -0
  321. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +67 -0
  322. package/dist/src/nile-floating-panel/nile-floating-panel.js +203 -0
  323. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -0
  324. package/dist/src/nile-floating-panel/position-manager.d.ts +47 -0
  325. package/dist/src/nile-floating-panel/position-manager.js +94 -0
  326. package/dist/src/nile-floating-panel/position-manager.js.map +1 -0
  327. package/dist/src/nile-floating-panel/style-manager.d.ts +31 -0
  328. package/dist/src/nile-floating-panel/style-manager.js +74 -0
  329. package/dist/src/nile-floating-panel/style-manager.js.map +1 -0
  330. package/dist/src/nile-floating-panel/types.d.ts +29 -0
  331. package/dist/src/nile-floating-panel/types.js +8 -0
  332. package/dist/src/nile-floating-panel/types.js.map +1 -0
  333. package/dist/src/nile-grid/data-processor.d.ts +37 -0
  334. package/dist/src/nile-grid/data-processor.js +122 -0
  335. package/dist/src/nile-grid/data-processor.js.map +1 -0
  336. package/dist/src/nile-grid/event-handlers.d.ts +35 -0
  337. package/dist/src/nile-grid/event-handlers.js +158 -0
  338. package/dist/src/nile-grid/event-handlers.js.map +1 -0
  339. package/dist/src/nile-grid/renderer.d.ts +8 -0
  340. package/dist/src/nile-grid/renderer.js +78 -0
  341. package/dist/src/nile-grid/renderer.js.map +1 -0
  342. package/dist/src/nile-grid/resize-handler.d.ts +4 -0
  343. package/dist/src/nile-grid/resize-handler.js +36 -0
  344. package/dist/src/nile-grid/resize-handler.js.map +1 -0
  345. package/dist/src/nile-grid/types.d.ts +32 -0
  346. package/dist/src/nile-grid/types.js +2 -0
  347. package/dist/src/nile-grid/types.js.map +1 -0
  348. package/dist/src/nile-grid/utils.d.ts +4 -0
  349. package/dist/src/nile-grid/utils.js +32 -0
  350. package/dist/src/nile-grid/utils.js.map +1 -0
  351. package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +47 -0
  352. package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +16 -0
  353. package/dist/src/nile-inline-edit/nile-inline-edit.d.ts +10 -0
  354. package/dist/src/nile-inline-edit/nile-inline-edit.js +52 -1
  355. package/dist/src/nile-inline-edit/nile-inline-edit.js.map +1 -1
  356. package/dist/src/nile-inline-sidebar/nile-inline-sidebar.css.js +2 -10
  357. package/dist/src/nile-inline-sidebar/nile-inline-sidebar.css.js.map +1 -1
  358. package/dist/src/nile-inline-sidebar/nile-inline-sidebar.js +3 -11
  359. package/dist/src/nile-inline-sidebar/nile-inline-sidebar.js.map +1 -1
  360. package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.css.js +0 -6
  361. package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.css.js.map +1 -1
  362. package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.d.ts +0 -1
  363. package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.js +0 -4
  364. package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.js.map +1 -1
  365. package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +75 -0
  366. package/dist/src/nile-link/nile-link.css.js +3 -3
  367. package/dist/src/nile-link/nile-link.css.js.map +1 -1
  368. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.d.ts +5 -1
  369. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.js +43 -0
  370. package/dist/src/nile-lite-tooltip/nile-lite-tooltip.js.map +1 -1
  371. package/dist/src/nile-menu/portal-manager.d.ts +39 -0
  372. package/dist/src/nile-menu/portal-manager.js +340 -0
  373. package/dist/src/nile-menu/portal-manager.js.map +1 -0
  374. package/dist/src/nile-menu/portal-utils.d.ts +21 -0
  375. package/dist/src/nile-menu/portal-utils.js +128 -0
  376. package/dist/src/nile-menu/portal-utils.js.map +1 -0
  377. package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +22 -0
  378. package/dist/src/nile-popover/nile-popover.d.ts +4 -0
  379. package/dist/src/nile-popover/nile-popover.js +39 -0
  380. package/dist/src/nile-popover/nile-popover.js.map +1 -1
  381. package/dist/src/nile-popover/popover-portal-handler.d.ts +21 -0
  382. package/dist/src/nile-popover/popover-portal-handler.js +106 -0
  383. package/dist/src/nile-popover/popover-portal-handler.js.map +1 -0
  384. package/dist/src/nile-portal-wrapper/index.d.ts +1 -0
  385. package/dist/src/nile-portal-wrapper/index.js +2 -0
  386. package/dist/src/nile-portal-wrapper/index.js.map +1 -0
  387. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.d.ts +47 -0
  388. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js +451 -0
  389. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js.map +1 -0
  390. package/dist/src/nile-select/body-append-manager.d.ts +90 -0
  391. package/dist/src/nile-select/body-append-manager.js +298 -0
  392. package/dist/src/nile-select/body-append-manager.js.map +1 -0
  393. package/dist/src/nile-select/nile-select.d.ts +1 -5
  394. package/dist/src/nile-select/nile-select.js +28 -67
  395. package/dist/src/nile-select/nile-select.js.map +1 -1
  396. package/dist/src/nile-select/virtual-scroll-helper.js +0 -2
  397. package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -1
  398. package/dist/src/nile-side-bar/nile-side-bar.css.js +27 -22
  399. package/dist/src/nile-side-bar/nile-side-bar.css.js.map +1 -1
  400. package/dist/src/nile-side-bar/nile-side-bar.js +1 -7
  401. package/dist/src/nile-side-bar/nile-side-bar.js.map +1 -1
  402. package/dist/src/nile-side-bar-expand/nile-side-bar-expand.css.js +5 -3
  403. package/dist/src/nile-side-bar-expand/nile-side-bar-expand.css.js.map +1 -1
  404. package/dist/src/nile-side-bar-expand/nile-side-bar-expand.d.ts +0 -2
  405. package/dist/src/nile-side-bar-expand/nile-side-bar-expand.js +4 -12
  406. package/dist/src/nile-side-bar-expand/nile-side-bar-expand.js.map +1 -1
  407. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js +1 -3
  408. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js.map +1 -1
  409. package/dist/src/nile-side-bar-footer-item/nile-side-bar-footer-item.css.js +3 -15
  410. package/dist/src/nile-side-bar-footer-item/nile-side-bar-footer-item.css.js.map +1 -1
  411. package/dist/src/nile-side-bar-footer-item/nile-side-bar-footer-item.d.ts +0 -1
  412. package/dist/src/nile-side-bar-footer-item/nile-side-bar-footer-item.js +1 -8
  413. package/dist/src/nile-side-bar-footer-item/nile-side-bar-footer-item.js.map +1 -1
  414. package/dist/src/nile-side-bar-group/nile-side-bar-group.css.js +5 -2
  415. package/dist/src/nile-side-bar-group/nile-side-bar-group.css.js.map +1 -1
  416. package/dist/src/nile-side-bar-group-item/nile-side-bar-group-item.css.js +46 -48
  417. package/dist/src/nile-side-bar-group-item/nile-side-bar-group-item.css.js.map +1 -1
  418. package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +9 -0
  419. package/dist/src/nile-table-body/virtual-scroll-helper.js +24 -0
  420. package/dist/src/nile-table-body/virtual-scroll-helper.js.map +1 -0
  421. package/dist/src/nile-tooltip/nile-tooltip.d.ts +3 -0
  422. package/dist/src/nile-tooltip/nile-tooltip.js +36 -0
  423. package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
  424. package/dist/src/nile-virtual-select/body-append-helper.d.ts +16 -0
  425. package/dist/src/nile-virtual-select/body-append-helper.js +95 -0
  426. package/dist/src/nile-virtual-select/body-append-helper.js.map +1 -0
  427. package/dist/src/nile-virtual-select/group-manager.d.ts +32 -0
  428. package/dist/src/nile-virtual-select/group-manager.js +134 -0
  429. package/dist/src/nile-virtual-select/group-manager.js.map +1 -0
  430. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +2 -5
  431. package/dist/src/nile-virtual-select/nile-virtual-select.js +28 -66
  432. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  433. package/dist/src/nile-virtual-select/portal-utils.d.ts +65 -0
  434. package/dist/src/nile-virtual-select/portal-utils.js +376 -0
  435. package/dist/src/nile-virtual-select/portal-utils.js.map +1 -0
  436. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.d.ts +273 -0
  437. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js +1305 -0
  438. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js.map +1 -0
  439. package/dist/src/nile-virtual-select/virtualizer-error-handler.d.ts +21 -0
  440. package/dist/src/nile-virtual-select/virtualizer-error-handler.js +56 -0
  441. package/dist/src/nile-virtual-select/virtualizer-error-handler.js.map +1 -0
  442. package/dist/src/nile-virtual-select-disabled/index.d.ts +1 -0
  443. package/dist/src/nile-virtual-select-disabled/index.js +2 -0
  444. package/dist/src/nile-virtual-select-disabled/index.js.map +1 -0
  445. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.d.ts +12 -0
  446. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js +538 -0
  447. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js.map +1 -0
  448. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.d.ts +299 -0
  449. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js +1441 -0
  450. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js.map +1 -0
  451. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.d.ts +7 -0
  452. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js +631 -0
  453. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js.map +1 -0
  454. package/dist/src/nile-virtual-select-disabled/portal-manager.d.ts +45 -0
  455. package/dist/src/nile-virtual-select-disabled/portal-manager.js +333 -0
  456. package/dist/src/nile-virtual-select-disabled/portal-manager.js.map +1 -0
  457. package/dist/src/nile-virtual-select-disabled/renderer.d.ts +16 -0
  458. package/dist/src/nile-virtual-select-disabled/renderer.js +79 -0
  459. package/dist/src/nile-virtual-select-disabled/renderer.js.map +1 -0
  460. package/dist/src/nile-virtual-select-disabled/search-manager.d.ts +12 -0
  461. package/dist/src/nile-virtual-select-disabled/search-manager.js +40 -0
  462. package/dist/src/nile-virtual-select-disabled/search-manager.js.map +1 -0
  463. package/dist/src/nile-virtual-select-disabled/selection-manager.d.ts +12 -0
  464. package/dist/src/nile-virtual-select-disabled/selection-manager.js +64 -0
  465. package/dist/src/nile-virtual-select-disabled/selection-manager.js.map +1 -0
  466. package/dist/src/nile-virtual-select-disabled/types.d.ts +50 -0
  467. package/dist/src/nile-virtual-select-disabled/types.js +8 -0
  468. package/dist/src/nile-virtual-select-disabled/types.js.map +1 -0
  469. package/dist/src/nile-virtual-table-body/index.d.ts +2 -0
  470. package/dist/src/nile-virtual-table-body/index.js +3 -0
  471. package/dist/src/nile-virtual-table-body/index.js.map +1 -0
  472. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +1 -0
  473. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +44 -0
  474. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +1 -0
  475. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +50 -0
  476. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +135 -0
  477. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +1 -0
  478. package/dist/src/nile-virtual-table-body/renderer.d.ts +16 -0
  479. package/dist/src/nile-virtual-table-body/renderer.js +49 -0
  480. package/dist/src/nile-virtual-table-body/renderer.js.map +1 -0
  481. package/dist/src/utilities/stepper-utils.d.ts +71 -0
  482. package/dist/src/utilities/stepper-utils.js +108 -0
  483. package/dist/src/utilities/stepper-utils.js.map +1 -0
  484. package/dist/src/version.js +2 -2
  485. package/dist/src/version.js.map +1 -1
  486. package/dist/tsconfig.tsbuildinfo +1 -1
  487. package/package.json +2 -2
  488. package/src/nile-auto-complete/nile-auto-complete.ts +41 -0
  489. package/src/nile-calendar/nile-calendar.css.ts +385 -108
  490. package/src/nile-calendar/nile-calendar.enum.ts +5 -0
  491. package/src/nile-calendar/nile-calendar.ts +374 -119
  492. package/src/nile-chip/nile-chip.ts +48 -0
  493. package/src/nile-dropdown/nile-dropdown.ts +39 -1
  494. package/src/nile-dropdown/portal-manager.ts +2 -0
  495. package/src/nile-dropdown/portal-utils.ts +26 -0
  496. package/src/nile-inline-edit/nile-inline-edit-utils.ts +94 -0
  497. package/src/nile-inline-edit/nile-inline-edit.ts +59 -1
  498. package/src/nile-inline-sidebar/nile-inline-sidebar.css.ts +2 -10
  499. package/src/nile-inline-sidebar/nile-inline-sidebar.ts +5 -17
  500. package/src/nile-inline-sidebar-item/nile-inline-sidebar-item.css.ts +0 -6
  501. package/src/nile-inline-sidebar-item/nile-inline-sidebar-item.ts +0 -1
  502. package/src/nile-link/nile-link.css.ts +3 -3
  503. package/src/nile-lite-tooltip/nile-lite-tooltip.ts +47 -1
  504. package/src/nile-popover/nile-popover.ts +43 -0
  505. package/src/nile-select/nile-select.ts +31 -87
  506. package/src/nile-select/virtual-scroll-helper.ts +0 -2
  507. package/src/nile-side-bar/nile-side-bar.css.ts +27 -22
  508. package/src/nile-side-bar/nile-side-bar.ts +1 -8
  509. package/src/nile-side-bar-expand/nile-side-bar-expand.css.ts +5 -3
  510. package/src/nile-side-bar-expand/nile-side-bar-expand.ts +4 -6
  511. package/src/nile-side-bar-footer/nile-side-bar-footer.css.ts +1 -3
  512. package/src/nile-side-bar-footer-item/nile-side-bar-footer-item.css.ts +3 -15
  513. package/src/nile-side-bar-footer-item/nile-side-bar-footer-item.ts +1 -9
  514. package/src/nile-side-bar-group/nile-side-bar-group.css.ts +5 -2
  515. package/src/nile-side-bar-group-item/nile-side-bar-group-item.css.ts +47 -49
  516. package/src/nile-tooltip/nile-tooltip.ts +37 -0
  517. package/src/nile-virtual-select/nile-virtual-select.ts +31 -87
  518. package/src/utilities/visibility-manager.ts +104 -0
  519. package/vscode-html-custom-data.json +124 -50
  520. package/dist/assets/nile-elements-4b5c262d.css +0 -1
  521. package/dist/nile-light-tooltip/index.esm.js +0 -1
  522. package/dist/nile-light-tooltip/nile-light-tooltip.css.esm.js +0 -6
  523. package/dist/nile-light-tooltip/nile-light-tooltip.esm.js +0 -1
  524. package/dist/src/nile-light-tooltip/index.d.ts +0 -1
  525. package/dist/src/nile-light-tooltip/index.js +0 -2
  526. package/dist/src/nile-light-tooltip/index.js.map +0 -1
  527. package/dist/src/nile-light-tooltip/nile-light-tooltip.css.d.ts +0 -12
  528. package/dist/src/nile-light-tooltip/nile-light-tooltip.css.js +0 -18
  529. package/dist/src/nile-light-tooltip/nile-light-tooltip.css.js.map +0 -1
  530. package/dist/src/nile-light-tooltip/nile-light-tooltip.d.ts +0 -40
  531. package/dist/src/nile-light-tooltip/nile-light-tooltip.js +0 -101
  532. package/dist/src/nile-light-tooltip/nile-light-tooltip.js.map +0 -1
  533. package/dist/src/nile-menu/virtual-menu-search-manager.d.ts +0 -11
  534. package/dist/src/nile-menu/virtual-menu-search-manager.js +0 -43
  535. package/dist/src/nile-menu/virtual-menu-search-manager.js.map +0 -1
@@ -0,0 +1,451 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, css } from 'lit';
3
+ import { customElement, property, state } from 'lit/decorators.js';
4
+ import { autoUpdate, computePosition, flip, offset, shift, size, platform } from '@floating-ui/dom';
5
+ let NilePortalWrapper = class NilePortalWrapper extends LitElement {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.enabled = false;
9
+ this.targetElement = null;
10
+ this.content = null;
11
+ this.placement = 'bottom';
12
+ this.offset = 4;
13
+ this.padding = 10;
14
+ this.boundary = document.documentElement;
15
+ this.fallbackPlacements = ['bottom', 'top', 'bottom-start', 'top-start', 'bottom-end', 'top-end'];
16
+ this.strategy = 'fixed';
17
+ this.className = '';
18
+ this.zIndex = 9999;
19
+ this.preserveStyles = true;
20
+ this.cloneContent = true;
21
+ this.portalContainer = null;
22
+ this.clonedContent = null;
23
+ this.currentPlacement = 'bottom';
24
+ this.currentMiddlewareData = null;
25
+ this.measuredHeight = null;
26
+ this.cleanupAutoUpdate = null;
27
+ this.injectedStyleId = null;
28
+ this.resizeObserver = null;
29
+ }
30
+ connectedCallback() {
31
+ super.connectedCallback();
32
+ if (this.enabled) {
33
+ this.setupPortal();
34
+ }
35
+ }
36
+ disconnectedCallback() {
37
+ super.disconnectedCallback();
38
+ this.cleanup();
39
+ }
40
+ updated(changedProperties) {
41
+ super.updated(changedProperties);
42
+ if (changedProperties.has('enabled')) {
43
+ if (this.enabled) {
44
+ this.setupPortal();
45
+ }
46
+ else {
47
+ this.cleanup();
48
+ }
49
+ }
50
+ if (this.enabled && (changedProperties.has('targetElement') || changedProperties.has('content'))) {
51
+ this.cleanup();
52
+ this.setupPortal();
53
+ }
54
+ }
55
+ async setupPortal() {
56
+ if (!this.enabled || !this.targetElement || !this.content)
57
+ return;
58
+ await this.updateComplete;
59
+ // Create portal container
60
+ this.portalContainer = this.createPortalContainer();
61
+ document.body.appendChild(this.portalContainer);
62
+ // Create cloned content
63
+ this.clonedContent = this.createClonedContent();
64
+ this.portalContainer.appendChild(this.clonedContent);
65
+ // Make sure the cloned content is visible
66
+ this.clonedContent.style.display = '';
67
+ this.clonedContent.style.visibility = '';
68
+ // Inject styles if needed
69
+ if (this.preserveStyles) {
70
+ this.injectStyles();
71
+ }
72
+ // Position the portal
73
+ await this.positionPortal();
74
+ // Setup auto-update
75
+ this.setupAutoUpdate();
76
+ // Setup event listeners
77
+ this.setupEventListeners();
78
+ }
79
+ createPortalContainer() {
80
+ const container = document.createElement('div');
81
+ container.style.position = 'absolute';
82
+ container.style.zIndex = this.zIndex.toString();
83
+ container.style.pointerEvents = 'none';
84
+ container.className = `nile-portal-wrapper ${this.className}`;
85
+ // Copy CSS classes from the original content to maintain styling context
86
+ if (this.content) {
87
+ const contentClasses = Array.from(this.content.classList);
88
+ contentClasses.forEach(cls => {
89
+ if (!container.classList.contains(cls)) {
90
+ container.classList.add(cls);
91
+ }
92
+ });
93
+ }
94
+ return container;
95
+ }
96
+ createClonedContent() {
97
+ if (!this.content) {
98
+ throw new Error('Content element is required for cloning');
99
+ }
100
+ // Create a new listbox structure based on the original content
101
+ const clonedContent = this.createPortalListbox();
102
+ return clonedContent;
103
+ }
104
+ createPortalListbox() {
105
+ const listbox = document.createElement('div');
106
+ listbox.className = 'select__listbox';
107
+ listbox.setAttribute('tabindex', '-1');
108
+ listbox.setAttribute('role', 'listbox');
109
+ listbox.setAttribute('aria-expanded', 'true');
110
+ // Get the nile-select component
111
+ const selectComponent = this.targetElement?.closest('nile-select');
112
+ if (!selectComponent)
113
+ return listbox;
114
+ // Create options container
115
+ const optionsContainer = document.createElement('div');
116
+ optionsContainer.className = 'select__options';
117
+ // Get options directly from the component (not from the slot)
118
+ const options = Array.from(selectComponent.querySelectorAll('nile-option'));
119
+ options.forEach((option) => {
120
+ const clonedOption = this.cloneOption(option);
121
+ optionsContainer.appendChild(clonedOption);
122
+ });
123
+ listbox.appendChild(optionsContainer);
124
+ return listbox;
125
+ }
126
+ cloneOption(option) {
127
+ const clonedOption = option.cloneNode(true);
128
+ // Copy all attributes
129
+ Array.from(option.attributes).forEach(attr => {
130
+ clonedOption.setAttribute(attr.name, attr.value);
131
+ });
132
+ // Copy properties (matching the original implementation)
133
+ const properties = ['selected', 'disabled', 'current', 'hidden'];
134
+ properties.forEach(prop => {
135
+ if (option[prop] !== undefined) {
136
+ clonedOption[prop] = option[prop];
137
+ }
138
+ });
139
+ return clonedOption;
140
+ }
141
+ async positionPortal() {
142
+ if (!this.portalContainer || !this.targetElement)
143
+ return;
144
+ try {
145
+ const { x, y, placement, middlewareData } = await computePosition(this.targetElement, this.portalContainer, {
146
+ placement: this.placement,
147
+ strategy: this.strategy,
148
+ middleware: [
149
+ offset(this.offset),
150
+ size({
151
+ apply: this.handleSizeMiddleware.bind(this),
152
+ padding: this.padding,
153
+ boundary: this.boundary
154
+ }),
155
+ flip({
156
+ fallbackPlacements: this.fallbackPlacements,
157
+ fallbackStrategy: 'bestFit',
158
+ padding: this.padding,
159
+ boundary: this.boundary
160
+ }),
161
+ shift({
162
+ padding: this.padding,
163
+ crossAxis: true,
164
+ boundary: this.boundary
165
+ })
166
+ ],
167
+ platform: platform
168
+ });
169
+ this.applyPosition(x, y, placement, middlewareData);
170
+ }
171
+ catch (error) {
172
+ console.warn('Floating UI positioning failed, falling back to simple positioning:', error);
173
+ this.fallbackPositioning();
174
+ }
175
+ }
176
+ handleSizeMiddleware({ availableWidth, availableHeight, elements }) {
177
+ elements.floating.style.maxWidth = `${availableWidth}px`;
178
+ elements.floating.style.maxHeight = `${availableHeight}px`;
179
+ }
180
+ applyPosition(x, y, placement, middlewareData) {
181
+ if (!this.portalContainer)
182
+ return;
183
+ Object.assign(this.portalContainer.style, {
184
+ left: `${x}px`,
185
+ top: `${y}px`,
186
+ position: this.strategy,
187
+ pointerEvents: 'auto'
188
+ });
189
+ this.currentPlacement = placement;
190
+ this.currentMiddlewareData = middlewareData;
191
+ // Apply placement class
192
+ const placementClass = placement.split('-')[0];
193
+ this.portalContainer.className = `nile-portal-wrapper select__listbox--${placementClass} ${this.className}`;
194
+ // Set width to match target element
195
+ if (this.targetElement) {
196
+ const targetRect = this.targetElement.getBoundingClientRect();
197
+ this.portalContainer.style.width = `${targetRect.width}px`;
198
+ }
199
+ }
200
+ fallbackPositioning() {
201
+ if (!this.portalContainer || !this.targetElement)
202
+ return;
203
+ const rect = this.targetElement.getBoundingClientRect();
204
+ const viewportHeight = window.innerHeight;
205
+ const popupHeight = this.measuredHeight || 200;
206
+ const spaceBelow = viewportHeight - rect.bottom;
207
+ const spaceAbove = rect.top;
208
+ let topPosition;
209
+ let placementClass;
210
+ let maxHeight;
211
+ if (spaceAbove > spaceBelow) {
212
+ maxHeight = Math.max(spaceAbove - 20, 100);
213
+ topPosition = Math.max(rect.top - maxHeight - this.offset, 10);
214
+ placementClass = 'top';
215
+ }
216
+ else {
217
+ maxHeight = Math.max(spaceBelow - 20, 100);
218
+ topPosition = rect.bottom + this.offset;
219
+ placementClass = 'bottom';
220
+ }
221
+ this.portalContainer.style.left = `${rect.left}px`;
222
+ this.portalContainer.style.top = `${topPosition}px`;
223
+ this.portalContainer.style.width = `${rect.width}px`;
224
+ this.portalContainer.style.maxHeight = `${maxHeight}px`;
225
+ this.portalContainer.style.pointerEvents = 'auto';
226
+ this.portalContainer.className = `nile-portal-wrapper select__listbox--${placementClass} ${this.className}`;
227
+ }
228
+ setupAutoUpdate() {
229
+ if (!this.portalContainer || !this.targetElement)
230
+ return;
231
+ this.cleanupAutoUpdate = autoUpdate(this.targetElement, this.portalContainer, () => {
232
+ this.positionPortal();
233
+ }, {
234
+ ancestorScroll: true,
235
+ ancestorResize: true,
236
+ elementResize: true,
237
+ layoutShift: true,
238
+ animationFrame: true
239
+ });
240
+ }
241
+ setupEventListeners() {
242
+ if (!this.clonedContent)
243
+ return;
244
+ // Handle option clicks
245
+ this.clonedContent.addEventListener('mouseup', (event) => {
246
+ const target = event.target;
247
+ const option = target.closest('nile-option');
248
+ if (option) {
249
+ this.handleOptionClick(option);
250
+ }
251
+ });
252
+ // Handle other events that need to be forwarded
253
+ const events = ['click', 'keydown', 'keyup', 'focus', 'blur'];
254
+ events.forEach(eventType => {
255
+ this.clonedContent?.addEventListener(eventType, (event) => {
256
+ this.forwardEvent(event, eventType);
257
+ });
258
+ });
259
+ }
260
+ handleOptionClick(clonedOption) {
261
+ if (!this.content)
262
+ return;
263
+ // Find the original option by value
264
+ const value = clonedOption.getAttribute('value');
265
+ if (!value)
266
+ return;
267
+ const originalOption = this.content.querySelector(`nile-option[value="${value}"]`);
268
+ if (!originalOption)
269
+ return;
270
+ // Dispatch a synthetic event on the original option
271
+ const syntheticEvent = new MouseEvent('mouseup', {
272
+ bubbles: true,
273
+ cancelable: true,
274
+ view: window
275
+ });
276
+ Object.defineProperty(syntheticEvent, 'target', {
277
+ value: originalOption,
278
+ writable: false
279
+ });
280
+ originalOption.dispatchEvent(syntheticEvent);
281
+ }
282
+ forwardEvent(event, eventType) {
283
+ const target = event.target;
284
+ const originalTarget = this.findOriginalElement(target);
285
+ if (originalTarget) {
286
+ const syntheticEvent = new event.constructor(eventType, {
287
+ view: window,
288
+ ...event,
289
+ bubbles: true,
290
+ cancelable: true
291
+ });
292
+ Object.defineProperty(syntheticEvent, 'target', {
293
+ value: originalTarget,
294
+ writable: false
295
+ });
296
+ originalTarget.dispatchEvent(syntheticEvent);
297
+ }
298
+ }
299
+ findOriginalElement(clonedElement) {
300
+ if (!this.content || !this.clonedContent)
301
+ return null;
302
+ if (clonedElement.tagName === 'NILE-OPTION') {
303
+ const value = clonedElement.getAttribute('value');
304
+ if (value) {
305
+ return this.content.querySelector(`nile-option[value="${value}"]`);
306
+ }
307
+ }
308
+ const tagName = clonedElement.tagName;
309
+ const attributes = Array.from(clonedElement.attributes).map(attr => `${attr.name}="${attr.value}"`);
310
+ const originalElements = this.content.querySelectorAll(tagName);
311
+ for (const original of originalElements) {
312
+ const originalAttributes = Array.from(original.attributes).map(attr => `${attr.name}="${attr.value}"`);
313
+ if (JSON.stringify(originalAttributes) === JSON.stringify(attributes)) {
314
+ return original;
315
+ }
316
+ }
317
+ return null;
318
+ }
319
+ injectStyles() {
320
+ if (!this.preserveStyles || !this.portalContainer)
321
+ return;
322
+ const styleId = `nile-portal-styles-${Math.random().toString(36).substring(2, 11)}`;
323
+ if (document.getElementById(styleId))
324
+ return;
325
+ // Try to get styles from the component's constructor
326
+ const component = this.targetElement?.closest('nile-select');
327
+ if (component) {
328
+ const componentStyles = component.constructor.styles;
329
+ if (componentStyles) {
330
+ const styleElement = document.createElement('style');
331
+ styleElement.id = styleId;
332
+ styleElement.textContent = this.extractStylesAsCSS(componentStyles);
333
+ document.head.appendChild(styleElement);
334
+ this.injectedStyleId = styleId;
335
+ return;
336
+ }
337
+ }
338
+ // Fallback: try to copy styles from shadow root
339
+ if (this.content) {
340
+ const shadowRoot = this.content.getRootNode();
341
+ if (shadowRoot && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
342
+ const styleElements = shadowRoot.querySelectorAll('style');
343
+ styleElements.forEach(styleEl => {
344
+ const styleElement = document.createElement('style');
345
+ styleElement.id = `${styleId}-${Math.random().toString(36).substring(2, 6)}`;
346
+ styleElement.textContent = styleEl.textContent;
347
+ document.head.appendChild(styleElement);
348
+ });
349
+ this.injectedStyleId = styleId;
350
+ }
351
+ }
352
+ }
353
+ extractStylesAsCSS(styles) {
354
+ if (typeof styles === 'string') {
355
+ return styles;
356
+ }
357
+ if (Array.isArray(styles)) {
358
+ return styles.map(style => this.extractStylesAsCSS(style)).join('\n');
359
+ }
360
+ if (styles && typeof styles === 'object' && styles.cssText) {
361
+ return styles.cssText;
362
+ }
363
+ return '';
364
+ }
365
+ cleanup() {
366
+ this.cleanupAutoUpdate?.();
367
+ this.cleanupAutoUpdate = null;
368
+ if (this.portalContainer && this.portalContainer.parentNode) {
369
+ this.portalContainer.parentNode.removeChild(this.portalContainer);
370
+ }
371
+ if (this.injectedStyleId) {
372
+ const styleElement = document.getElementById(this.injectedStyleId);
373
+ if (styleElement) {
374
+ styleElement.remove();
375
+ }
376
+ this.injectedStyleId = null;
377
+ }
378
+ this.portalContainer = null;
379
+ this.clonedContent = null;
380
+ this.currentPlacement = 'bottom';
381
+ this.currentMiddlewareData = null;
382
+ this.measuredHeight = null;
383
+ }
384
+ render() {
385
+ return html ``;
386
+ }
387
+ };
388
+ NilePortalWrapper.styles = css `
389
+ :host {
390
+ display: none;
391
+ }
392
+ `;
393
+ __decorate([
394
+ property({ type: Boolean })
395
+ ], NilePortalWrapper.prototype, "enabled", void 0);
396
+ __decorate([
397
+ property({ type: Object, attribute: false })
398
+ ], NilePortalWrapper.prototype, "targetElement", void 0);
399
+ __decorate([
400
+ property({ type: Object, attribute: false })
401
+ ], NilePortalWrapper.prototype, "content", void 0);
402
+ __decorate([
403
+ property()
404
+ ], NilePortalWrapper.prototype, "placement", void 0);
405
+ __decorate([
406
+ property({ type: Number })
407
+ ], NilePortalWrapper.prototype, "offset", void 0);
408
+ __decorate([
409
+ property({ type: Number })
410
+ ], NilePortalWrapper.prototype, "padding", void 0);
411
+ __decorate([
412
+ property({ type: Object, attribute: false })
413
+ ], NilePortalWrapper.prototype, "boundary", void 0);
414
+ __decorate([
415
+ property({ type: Array, attribute: false })
416
+ ], NilePortalWrapper.prototype, "fallbackPlacements", void 0);
417
+ __decorate([
418
+ property()
419
+ ], NilePortalWrapper.prototype, "strategy", void 0);
420
+ __decorate([
421
+ property()
422
+ ], NilePortalWrapper.prototype, "className", void 0);
423
+ __decorate([
424
+ property({ type: Number })
425
+ ], NilePortalWrapper.prototype, "zIndex", void 0);
426
+ __decorate([
427
+ property({ type: Boolean })
428
+ ], NilePortalWrapper.prototype, "preserveStyles", void 0);
429
+ __decorate([
430
+ property({ type: Boolean })
431
+ ], NilePortalWrapper.prototype, "cloneContent", void 0);
432
+ __decorate([
433
+ state()
434
+ ], NilePortalWrapper.prototype, "portalContainer", void 0);
435
+ __decorate([
436
+ state()
437
+ ], NilePortalWrapper.prototype, "clonedContent", void 0);
438
+ __decorate([
439
+ state()
440
+ ], NilePortalWrapper.prototype, "currentPlacement", void 0);
441
+ __decorate([
442
+ state()
443
+ ], NilePortalWrapper.prototype, "currentMiddlewareData", void 0);
444
+ __decorate([
445
+ state()
446
+ ], NilePortalWrapper.prototype, "measuredHeight", void 0);
447
+ NilePortalWrapper = __decorate([
448
+ customElement('nile-portal-wrapper')
449
+ ], NilePortalWrapper);
450
+ export { NilePortalWrapper };
451
+ //# sourceMappingURL=nile-portal-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-portal-wrapper.js","sourceRoot":"","sources":["../../../src/nile-portal-wrapper/nile-portal-wrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { \n autoUpdate, \n computePosition, \n flip, \n offset, \n shift, \n size, \n platform,\n type Placement,\n type MiddlewareData,\n type ComputePositionConfig,\n type Boundary\n} from '@floating-ui/dom';\n\n@customElement('nile-portal-wrapper')\nexport class NilePortalWrapper extends LitElement {\n @property({ type: Boolean }) enabled = false;\n @property({ type: Object, attribute: false }) targetElement: HTMLElement | null = null;\n @property({ type: Object, attribute: false }) content: HTMLElement | null = null;\n @property() placement: Placement = 'bottom';\n @property({ type: Number }) offset = 4;\n @property({ type: Number }) padding = 10;\n @property({ type: Object, attribute: false }) boundary: Boundary = document.documentElement;\n @property({ type: Array, attribute: false }) fallbackPlacements: Placement[] = ['bottom', 'top', 'bottom-start', 'top-start', 'bottom-end', 'top-end'];\n @property() strategy: 'absolute' | 'fixed' = 'fixed';\n @property() className = '';\n @property({ type: Number }) zIndex = 9999;\n @property({ type: Boolean }) preserveStyles = true;\n @property({ type: Boolean }) cloneContent = true;\n\n @state() private portalContainer: HTMLElement | null = null;\n @state() private clonedContent: HTMLElement | null = null;\n @state() private currentPlacement: Placement = 'bottom';\n @state() private currentMiddlewareData: MiddlewareData | null = null;\n @state() private measuredHeight: number | null = null;\n\n private cleanupAutoUpdate: (() => void) | null = null;\n private injectedStyleId: string | null = null;\n private resizeObserver: ResizeObserver | null = null;\n\n static styles = css`\n :host {\n display: none;\n }\n `;\n\n connectedCallback() {\n super.connectedCallback();\n if (this.enabled) {\n this.setupPortal();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.cleanup();\n }\n\n updated(changedProperties: Map<string | number | symbol, unknown>) {\n super.updated(changedProperties);\n \n if (changedProperties.has('enabled')) {\n if (this.enabled) {\n this.setupPortal();\n } else {\n this.cleanup();\n }\n }\n \n if (this.enabled && (changedProperties.has('targetElement') || changedProperties.has('content'))) {\n this.cleanup();\n this.setupPortal();\n }\n }\n\n private async setupPortal() {\n if (!this.enabled || !this.targetElement || !this.content) return;\n\n await this.updateComplete;\n \n // Create portal container\n this.portalContainer = this.createPortalContainer();\n document.body.appendChild(this.portalContainer);\n \n // Create cloned content\n this.clonedContent = this.createClonedContent();\n this.portalContainer.appendChild(this.clonedContent);\n \n // Make sure the cloned content is visible\n this.clonedContent.style.display = '';\n this.clonedContent.style.visibility = '';\n \n // Inject styles if needed\n if (this.preserveStyles) {\n this.injectStyles();\n }\n \n // Position the portal\n await this.positionPortal();\n \n // Setup auto-update\n this.setupAutoUpdate();\n \n // Setup event listeners\n this.setupEventListeners();\n }\n\n private createPortalContainer(): HTMLElement {\n const container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.zIndex = this.zIndex.toString();\n container.style.pointerEvents = 'none';\n container.className = `nile-portal-wrapper ${this.className}`;\n \n // Copy CSS classes from the original content to maintain styling context\n if (this.content) {\n const contentClasses = Array.from(this.content.classList);\n contentClasses.forEach(cls => {\n if (!container.classList.contains(cls)) {\n container.classList.add(cls);\n }\n });\n }\n \n return container;\n }\n\n private createClonedContent(): HTMLElement {\n if (!this.content) {\n throw new Error('Content element is required for cloning');\n }\n\n // Create a new listbox structure based on the original content\n const clonedContent = this.createPortalListbox();\n \n return clonedContent;\n }\n\n private createPortalListbox(): HTMLElement {\n const listbox = document.createElement('div');\n listbox.className = 'select__listbox';\n listbox.setAttribute('tabindex', '-1');\n listbox.setAttribute('role', 'listbox');\n listbox.setAttribute('aria-expanded', 'true');\n \n // Get the nile-select component\n const selectComponent = this.targetElement?.closest('nile-select');\n if (!selectComponent) return listbox;\n \n // Create options container\n const optionsContainer = document.createElement('div');\n optionsContainer.className = 'select__options';\n \n // Get options directly from the component (not from the slot)\n const options = Array.from(selectComponent.querySelectorAll('nile-option'));\n \n options.forEach((option: Element) => {\n const clonedOption = this.cloneOption(option as HTMLElement);\n optionsContainer.appendChild(clonedOption);\n });\n \n listbox.appendChild(optionsContainer);\n \n return listbox;\n }\n\n private cloneOption(option: HTMLElement): HTMLElement {\n const clonedOption = option.cloneNode(true) as HTMLElement;\n \n // Copy all attributes\n Array.from(option.attributes).forEach(attr => {\n clonedOption.setAttribute(attr.name, attr.value);\n });\n \n // Copy properties (matching the original implementation)\n const properties = ['selected', 'disabled', 'current', 'hidden'];\n properties.forEach(prop => {\n if ((option as any)[prop] !== undefined) {\n (clonedOption as any)[prop] = (option as any)[prop];\n }\n });\n \n return clonedOption;\n }\n\n private async positionPortal() {\n if (!this.portalContainer || !this.targetElement) return;\n\n try {\n const { x, y, placement, middlewareData } = await computePosition(\n this.targetElement,\n this.portalContainer,\n {\n placement: this.placement,\n strategy: this.strategy,\n middleware: [\n offset(this.offset),\n size({\n apply: this.handleSizeMiddleware.bind(this),\n padding: this.padding,\n boundary: this.boundary\n }),\n flip({\n fallbackPlacements: this.fallbackPlacements,\n fallbackStrategy: 'bestFit',\n padding: this.padding,\n boundary: this.boundary\n }),\n shift({\n padding: this.padding,\n crossAxis: true,\n boundary: this.boundary\n })\n ],\n platform: platform\n }\n );\n\n this.applyPosition(x, y, placement, middlewareData);\n } catch (error) {\n console.warn('Floating UI positioning failed, falling back to simple positioning:', error);\n this.fallbackPositioning();\n }\n }\n\n private handleSizeMiddleware({ availableWidth, availableHeight, elements }: {\n availableWidth: number;\n availableHeight: number;\n elements: { floating: HTMLElement };\n }): void {\n elements.floating.style.maxWidth = `${availableWidth}px`;\n elements.floating.style.maxHeight = `${availableHeight}px`;\n }\n\n private applyPosition(x: number, y: number, placement: Placement, middlewareData: MiddlewareData) {\n if (!this.portalContainer) return;\n\n Object.assign(this.portalContainer.style, {\n left: `${x}px`,\n top: `${y}px`,\n position: this.strategy,\n pointerEvents: 'auto'\n });\n\n this.currentPlacement = placement;\n this.currentMiddlewareData = middlewareData;\n \n // Apply placement class\n const placementClass = placement.split('-')[0];\n this.portalContainer.className = `nile-portal-wrapper select__listbox--${placementClass} ${this.className}`;\n\n // Set width to match target element\n if (this.targetElement) {\n const targetRect = this.targetElement.getBoundingClientRect();\n this.portalContainer.style.width = `${targetRect.width}px`;\n }\n }\n\n private fallbackPositioning() {\n if (!this.portalContainer || !this.targetElement) return;\n\n const rect = this.targetElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const popupHeight = this.measuredHeight || 200;\n \n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n \n let topPosition: number;\n let placementClass: string;\n let maxHeight: number;\n \n if (spaceAbove > spaceBelow) {\n maxHeight = Math.max(spaceAbove - 20, 100);\n topPosition = Math.max(rect.top - maxHeight - this.offset, 10);\n placementClass = 'top';\n } else {\n maxHeight = Math.max(spaceBelow - 20, 100);\n topPosition = rect.bottom + this.offset;\n placementClass = 'bottom';\n }\n\n this.portalContainer.style.left = `${rect.left}px`;\n this.portalContainer.style.top = `${topPosition}px`;\n this.portalContainer.style.width = `${rect.width}px`;\n this.portalContainer.style.maxHeight = `${maxHeight}px`;\n this.portalContainer.style.pointerEvents = 'auto';\n this.portalContainer.className = `nile-portal-wrapper select__listbox--${placementClass} ${this.className}`;\n }\n\n private setupAutoUpdate() {\n if (!this.portalContainer || !this.targetElement) return;\n\n this.cleanupAutoUpdate = autoUpdate(\n this.targetElement,\n this.portalContainer,\n () => {\n this.positionPortal();\n },\n {\n ancestorScroll: true,\n ancestorResize: true,\n elementResize: true,\n layoutShift: true,\n animationFrame: true\n }\n );\n }\n\n private setupEventListeners() {\n if (!this.clonedContent) return;\n\n // Handle option clicks\n this.clonedContent.addEventListener('mouseup', (event) => {\n const target = event.target as HTMLElement;\n const option = target.closest('nile-option');\n \n if (option) {\n this.handleOptionClick(option as HTMLElement);\n }\n });\n\n // Handle other events that need to be forwarded\n const events = ['click', 'keydown', 'keyup', 'focus', 'blur'];\n events.forEach(eventType => {\n this.clonedContent?.addEventListener(eventType, (event) => {\n this.forwardEvent(event, eventType);\n });\n });\n }\n\n private handleOptionClick(clonedOption: HTMLElement) {\n if (!this.content) return;\n\n // Find the original option by value\n const value = clonedOption.getAttribute('value');\n if (!value) return;\n\n const originalOption = this.content.querySelector(`nile-option[value=\"${value}\"]`) as HTMLElement;\n if (!originalOption) return;\n\n // Dispatch a synthetic event on the original option\n const syntheticEvent = new MouseEvent('mouseup', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n \n Object.defineProperty(syntheticEvent, 'target', {\n value: originalOption,\n writable: false\n });\n \n originalOption.dispatchEvent(syntheticEvent);\n }\n\n private forwardEvent(event: Event, eventType: string) {\n const target = event.target as HTMLElement;\n const originalTarget = this.findOriginalElement(target);\n\n if (originalTarget) {\n const syntheticEvent = new (event.constructor as any)(eventType, {\n view: window,\n ...event,\n bubbles: true,\n cancelable: true\n });\n\n Object.defineProperty(syntheticEvent, 'target', {\n value: originalTarget,\n writable: false\n });\n\n originalTarget.dispatchEvent(syntheticEvent);\n }\n }\n\n private findOriginalElement(clonedElement: HTMLElement): HTMLElement | null {\n if (!this.content || !this.clonedContent) return null;\n\n if (clonedElement.tagName === 'NILE-OPTION') {\n const value = clonedElement.getAttribute('value');\n if (value) {\n return this.content.querySelector(`nile-option[value=\"${value}\"]`) as HTMLElement;\n }\n }\n\n const tagName = clonedElement.tagName;\n const attributes = Array.from(clonedElement.attributes).map(attr => `${attr.name}=\"${attr.value}\"`);\n\n const originalElements = this.content.querySelectorAll(tagName);\n for (const original of originalElements) {\n const originalAttributes = Array.from(original.attributes).map(attr => `${attr.name}=\"${attr.value}\"`);\n if (JSON.stringify(originalAttributes) === JSON.stringify(attributes)) {\n return original as HTMLElement;\n }\n }\n\n return null;\n }\n\n private injectStyles() {\n if (!this.preserveStyles || !this.portalContainer) return;\n\n const styleId = `nile-portal-styles-${Math.random().toString(36).substring(2, 11)}`;\n \n if (document.getElementById(styleId)) return;\n\n // Try to get styles from the component's constructor\n const component = this.targetElement?.closest('nile-select');\n if (component) {\n const componentStyles = (component.constructor as any).styles;\n if (componentStyles) {\n const styleElement = document.createElement('style');\n styleElement.id = styleId;\n styleElement.textContent = this.extractStylesAsCSS(componentStyles);\n document.head.appendChild(styleElement);\n this.injectedStyleId = styleId;\n return;\n }\n }\n\n // Fallback: try to copy styles from shadow root\n if (this.content) {\n const shadowRoot = this.content.getRootNode() as ShadowRoot;\n if (shadowRoot && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const styleElements = shadowRoot.querySelectorAll('style');\n styleElements.forEach(styleEl => {\n const styleElement = document.createElement('style');\n styleElement.id = `${styleId}-${Math.random().toString(36).substring(2, 6)}`;\n styleElement.textContent = styleEl.textContent;\n document.head.appendChild(styleElement);\n });\n this.injectedStyleId = styleId;\n }\n }\n }\n\n private extractStylesAsCSS(styles: any): string {\n if (typeof styles === 'string') {\n return styles;\n }\n \n if (Array.isArray(styles)) {\n return styles.map(style => this.extractStylesAsCSS(style)).join('\\n');\n }\n \n if (styles && typeof styles === 'object' && styles.cssText) {\n return styles.cssText;\n }\n \n return '';\n }\n\n private cleanup() {\n this.cleanupAutoUpdate?.();\n this.cleanupAutoUpdate = null;\n\n if (this.portalContainer && this.portalContainer.parentNode) {\n this.portalContainer.parentNode.removeChild(this.portalContainer);\n }\n\n if (this.injectedStyleId) {\n const styleElement = document.getElementById(this.injectedStyleId);\n if (styleElement) {\n styleElement.remove();\n }\n this.injectedStyleId = null;\n }\n\n this.portalContainer = null;\n this.clonedContent = null;\n this.currentPlacement = 'bottom';\n this.currentMiddlewareData = null;\n this.measuredHeight = null;\n }\n\n render() {\n return html``;\n }\n}\n"]}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import type NilePopup from '../nile-popup/nile-popup';
8
+ import type NileSelect from './nile-select';
9
+ /**
10
+ * Manager class for handling bodyAppend functionality in nile-select
11
+ * This class manages moving select options to document.body to avoid CSS clipping issues
12
+ */
13
+ export declare class BodyAppendManager {
14
+ private bodyContainer?;
15
+ private originalOptions;
16
+ private boundHandlePopupReposition?;
17
+ private selectElement;
18
+ private popup?;
19
+ private listbox?;
20
+ private injectedStyleId?;
21
+ constructor(selectElement: NileSelect);
22
+ /**
23
+ * Sets the popup and listbox references
24
+ */
25
+ setReferences(popup: NilePopup, listbox: HTMLSlotElement): void;
26
+ /**
27
+ * Handles the bodyAppend change
28
+ */
29
+ handleBodyAppendChange(bodyAppend: boolean): void;
30
+ /**
31
+ * Handles popup reposition events to update body container position
32
+ */
33
+ private handlePopupReposition;
34
+ /**
35
+ * Extracts styles as CSS string from various style formats
36
+ */
37
+ private extractStylesAsCSS;
38
+ /**
39
+ * Injects component styles into document head
40
+ */
41
+ private injectStylesToDocument;
42
+ /**
43
+ * Adopts component styles to the body container (similar to portal-manager pattern)
44
+ */
45
+ private adoptStylesToBodyContainer;
46
+ /**
47
+ * Creates a body container for options when bodyAppend is true
48
+ */
49
+ private createBodyContainer;
50
+ /**
51
+ * Cleans up the body container
52
+ */
53
+ private cleanupBodyContainer;
54
+ /**
55
+ * Moves options to body container when bodyAppend is true
56
+ */
57
+ private moveOptionsToBody;
58
+ /**
59
+ * Restores options to their original position
60
+ */
61
+ private restoreOptionsFromBody;
62
+ /**
63
+ * Updates body container visibility and positioning
64
+ */
65
+ private updateBodyContainerVisibility;
66
+ /**
67
+ * Gets all options from both original location and body container
68
+ */
69
+ private getAllOptions;
70
+ /**
71
+ * Updates body container visibility when select opens/closes
72
+ */
73
+ updateVisibility(visible: boolean): void;
74
+ /**
75
+ * Checks if bodyAppend is active (has body container)
76
+ */
77
+ isActive(): boolean;
78
+ /**
79
+ * Gets the body container element
80
+ */
81
+ getBodyContainer(): HTMLElement | undefined;
82
+ /**
83
+ * Gets the listbox container element inside the body container
84
+ */
85
+ getListboxContainer(): HTMLElement | undefined;
86
+ /**
87
+ * Cleans up all resources
88
+ */
89
+ destroy(): void;
90
+ }