@aquera/nile-elements 1.3.4-beta-1 → 1.3.4

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 (450) hide show
  1. package/README.md +3 -0
  2. package/demo/index.html +27 -20
  3. package/dist/{fixture-54600b35.cjs.js → fixture-1c49c014.cjs.js} +2 -2
  4. package/dist/{fixture-73855806.cjs.js.map → fixture-1c49c014.cjs.js.map} +1 -1
  5. package/dist/{fixture-9871e8a9.esm.js → fixture-985bba12.esm.js} +1 -1
  6. package/dist/index.js +3 -2
  7. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  8. package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
  9. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  10. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  11. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  12. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  13. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  14. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  15. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  16. package/dist/nile-button/nile-button.test.esm.js +1 -1
  17. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  18. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
  19. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  20. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  21. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  22. package/dist/nile-card/nile-card.test.esm.js +1 -1
  23. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  24. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  25. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  26. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  27. package/dist/nile-chip/nile-chip.esm.js +3 -2
  28. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  29. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  30. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  31. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  32. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  33. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  34. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  35. package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
  36. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  37. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  38. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  39. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
  40. package/dist/nile-file-preview/nile-file-preview.test.cjs.js +1 -1
  41. package/dist/nile-file-preview/nile-file-preview.test.esm.js +1 -1
  42. package/dist/nile-file-upload/nile-file-upload.test.cjs.js +1 -1
  43. package/dist/nile-file-upload/nile-file-upload.test.esm.js +1 -1
  44. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  45. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
  46. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  47. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
  48. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  49. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
  50. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  51. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  52. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  53. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  54. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  55. package/dist/nile-input/nile-input.test.esm.js +1 -1
  56. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  57. package/dist/nile-link/nile-link.test.esm.js +1 -1
  58. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  59. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  60. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  61. package/dist/nile-popover/nile-popover.test.esm.js +1 -1
  62. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  63. package/dist/nile-popup/nile-popup.test.esm.js +1 -1
  64. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  65. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
  66. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  67. package/dist/nile-radio/nile-radio.test.esm.js +1 -1
  68. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  69. package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
  70. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  71. package/dist/nile-select/nile-select.test.esm.js +1 -1
  72. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  73. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
  74. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  75. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  76. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  77. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
  78. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +1 -1
  79. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +1 -1
  80. package/dist/src/nile-chip/nile-chip.js +8 -0
  81. package/dist/src/nile-chip/nile-chip.js.map +1 -1
  82. package/dist/src/version.js +1 -1
  83. package/dist/src/version.js.map +1 -1
  84. package/dist/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +1 -1
  86. package/src/nile-chip/nile-chip.ts +9 -0
  87. package/dist/fixture-54600b35.cjs.js.map +0 -1
  88. package/dist/fixture-5b79f853.cjs.js +0 -395
  89. package/dist/fixture-5b79f853.cjs.js.map +0 -1
  90. package/dist/fixture-73855806.cjs.js +0 -395
  91. package/dist/fixture-90b199c4.esm.js +0 -569
  92. package/dist/fixture-c1d78368.cjs.js +0 -395
  93. package/dist/fixture-c1d78368.cjs.js.map +0 -1
  94. package/dist/fixture-cf7bfcf5.esm.js +0 -569
  95. package/dist/fixture-dbd66009.cjs.js +0 -395
  96. package/dist/fixture-dbd66009.cjs.js.map +0 -1
  97. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js +0 -2
  98. package/dist/nile-code-editor/backup_nile-code-editor copy.cjs.js.map +0 -1
  99. package/dist/nile-code-editor/backup_nile-code-editor copy.esm.js +0 -1
  100. package/dist/nile-grid/nile-grid.types.cjs.js +0 -2
  101. package/dist/nile-grid/nile-grid.types.cjs.js.map +0 -1
  102. package/dist/nile-grid/nile-grid.types.esm.js +0 -1
  103. package/dist/nile-grid-body/index.cjs.js +0 -2
  104. package/dist/nile-grid-body/index.cjs.js.map +0 -1
  105. package/dist/nile-grid-body/index.esm.js +0 -1
  106. package/dist/nile-grid-body/nile-grid-body.cjs.js +0 -2
  107. package/dist/nile-grid-body/nile-grid-body.cjs.js.map +0 -1
  108. package/dist/nile-grid-body/nile-grid-body.css.cjs.js +0 -2
  109. package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +0 -1
  110. package/dist/nile-grid-body/nile-grid-body.css.esm.js +0 -10
  111. package/dist/nile-grid-body/nile-grid-body.esm.js +0 -5
  112. package/dist/nile-grid-cell-item/index.cjs.js +0 -2
  113. package/dist/nile-grid-cell-item/index.cjs.js.map +0 -1
  114. package/dist/nile-grid-cell-item/index.esm.js +0 -1
  115. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js +0 -2
  116. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +0 -1
  117. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +0 -2
  118. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +0 -1
  119. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +0 -35
  120. package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +0 -12
  121. package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js +0 -2
  122. package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js.map +0 -1
  123. package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.esm.js +0 -1
  124. package/dist/nile-grid-head/index.cjs.js +0 -2
  125. package/dist/nile-grid-head/index.cjs.js.map +0 -1
  126. package/dist/nile-grid-head/index.esm.js +0 -1
  127. package/dist/nile-grid-head/nile-grid-head.cjs.js +0 -2
  128. package/dist/nile-grid-head/nile-grid-head.cjs.js.map +0 -1
  129. package/dist/nile-grid-head/nile-grid-head.css.cjs.js +0 -2
  130. package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +0 -1
  131. package/dist/nile-grid-head/nile-grid-head.css.esm.js +0 -7
  132. package/dist/nile-grid-head/nile-grid-head.esm.js +0 -5
  133. package/dist/nile-grid-head-item/index.cjs.js +0 -2
  134. package/dist/nile-grid-head-item/index.cjs.js.map +0 -1
  135. package/dist/nile-grid-head-item/index.esm.js +0 -1
  136. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +0 -2
  137. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +0 -1
  138. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +0 -2
  139. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +0 -1
  140. package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +0 -34
  141. package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +0 -12
  142. package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +0 -2
  143. package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +0 -1
  144. package/dist/nile-grid-head-item/nile-grid-head-item.utils.esm.js +0 -1
  145. package/dist/nile-grid-row/index.cjs.js +0 -2
  146. package/dist/nile-grid-row/index.cjs.js.map +0 -1
  147. package/dist/nile-grid-row/index.esm.js +0 -1
  148. package/dist/nile-grid-row/nile-grid-row.cjs.js +0 -2
  149. package/dist/nile-grid-row/nile-grid-row.cjs.js.map +0 -1
  150. package/dist/nile-grid-row/nile-grid-row.css.cjs.js +0 -2
  151. package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +0 -1
  152. package/dist/nile-grid-row/nile-grid-row.css.esm.js +0 -15
  153. package/dist/nile-grid-row/nile-grid-row.esm.js +0 -7
  154. package/dist/nile-rich-text-editor/utils.cjs.js +0 -2
  155. package/dist/nile-rich-text-editor/utils.cjs.js.map +0 -1
  156. package/dist/nile-rich-text-editor/utils.esm.js +0 -1
  157. package/dist/nile-sidebar/index.cjs.js +0 -2
  158. package/dist/nile-sidebar/index.cjs.js.map +0 -1
  159. package/dist/nile-sidebar/index.esm.js +0 -75
  160. package/dist/nile-sidebar-menu/index.cjs.js +0 -2
  161. package/dist/nile-sidebar-menu/index.cjs.js.map +0 -1
  162. package/dist/nile-sidebar-menu/index.esm.js +0 -1
  163. package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js +0 -2
  164. package/dist/nile-sidebar-menu/nile-sidebar-menu.cjs.js.map +0 -1
  165. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js +0 -2
  166. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.cjs.js.map +0 -1
  167. package/dist/nile-sidebar-menu/nile-sidebar-menu.css.esm.js +0 -38
  168. package/dist/nile-sidebar-menu/nile-sidebar-menu.esm.js +0 -10
  169. package/dist/nile-sidebar-menu-items/index.cjs.js +0 -2
  170. package/dist/nile-sidebar-menu-items/index.cjs.js.map +0 -1
  171. package/dist/nile-sidebar-menu-items/index.esm.js +0 -1
  172. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js +0 -2
  173. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.cjs.js.map +0 -1
  174. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js +0 -2
  175. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.cjs.js.map +0 -1
  176. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.css.esm.js +0 -36
  177. package/dist/nile-sidebar-menu-items/nile-sidebar-menu-items.esm.js +0 -15
  178. package/dist/nile-sidebar-wrapper/index.cjs.js +0 -2
  179. package/dist/nile-sidebar-wrapper/index.cjs.js.map +0 -1
  180. package/dist/nile-sidebar-wrapper/index.esm.js +0 -1
  181. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js +0 -2
  182. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.cjs.js.map +0 -1
  183. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js +0 -2
  184. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.cjs.js.map +0 -1
  185. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.css.esm.js +0 -105
  186. package/dist/nile-sidebar-wrapper/nile-sidebar-wrapper.esm.js +0 -16
  187. package/dist/nile-virtual-select/group-manager.cjs.js +0 -2
  188. package/dist/nile-virtual-select/group-manager.cjs.js.map +0 -1
  189. package/dist/nile-virtual-select/group-manager.esm.js +0 -1
  190. package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js +0 -2
  191. package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js.map +0 -1
  192. package/dist/nile-virtual-select/temp_nile-virtual-select copy.esm.js +0 -231
  193. package/dist/scopedElementsWrapper-1bff26ef.cjs.js +0 -2
  194. package/dist/scopedElementsWrapper-1bff26ef.cjs.js.map +0 -1
  195. package/dist/scopedElementsWrapper-4c29be11.esm.js +0 -7
  196. package/dist/scopedElementsWrapper-a112fc73.cjs.js +0 -6
  197. package/dist/scopedElementsWrapper-a112fc73.cjs.js.map +0 -1
  198. package/dist/scopedElementsWrapper-c815042c.cjs.js +0 -2
  199. package/dist/scopedElementsWrapper-c815042c.cjs.js.map +0 -1
  200. package/dist/src/internal/portal-manager.d.ts +0 -53
  201. package/dist/src/internal/portal-manager.js +0 -196
  202. package/dist/src/internal/portal-manager.js.map +0 -1
  203. package/dist/src/internal/portal.d.ts +0 -60
  204. package/dist/src/internal/portal.js +0 -199
  205. package/dist/src/internal/portal.js.map +0 -1
  206. package/dist/src/internal/resizable-helper.d.ts +0 -59
  207. package/dist/src/internal/resizable-helper.js +0 -115
  208. package/dist/src/internal/resizable-helper.js.map +0 -1
  209. package/dist/src/internal/resizable-styles.d.ts +0 -16
  210. package/dist/src/internal/resizable-styles.js +0 -144
  211. package/dist/src/internal/resizable-styles.js.map +0 -1
  212. package/dist/src/internal/virtualizer-error-handler.d.ts +0 -30
  213. package/dist/src/internal/virtualizer-error-handler.js +0 -82
  214. package/dist/src/internal/virtualizer-error-handler.js.map +0 -1
  215. package/dist/src/lib/index.d.ts +0 -7
  216. package/dist/src/lib/index.js +0 -8
  217. package/dist/src/lib/index.js.map +0 -1
  218. package/dist/src/lib/virtualize.d.ts +0 -32
  219. package/dist/src/lib/virtualize.js +0 -105
  220. package/dist/src/lib/virtualize.js.map +0 -1
  221. package/dist/src/lib/virtualize.test.d.ts +0 -7
  222. package/dist/src/lib/virtualize.test.js +0 -57
  223. package/dist/src/lib/virtualize.test.js.map +0 -1
  224. package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +0 -17
  225. package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +0 -310
  226. package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +0 -34
  227. package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +0 -31
  228. package/dist/src/nile-code-editor/Old_theme copy.d.ts +0 -191
  229. package/dist/src/nile-code-editor/Old_theme copy.js +0 -193
  230. package/dist/src/nile-code-editor/Old_theme copy.js.map +0 -1
  231. package/dist/src/nile-code-editor/backup_nile-code-editor copy.d.ts +0 -0
  232. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js +0 -675
  233. package/dist/src/nile-code-editor/backup_nile-code-editor copy.js.map +0 -1
  234. package/dist/src/nile-code-editor/theme copy.d.ts +0 -191
  235. package/dist/src/nile-code-editor/theme copy.js +0 -193
  236. package/dist/src/nile-code-editor/theme copy.js.map +0 -1
  237. package/dist/src/nile-floating-panel/anchor-manager.d.ts +0 -26
  238. package/dist/src/nile-floating-panel/anchor-manager.js +0 -49
  239. package/dist/src/nile-floating-panel/anchor-manager.js.map +0 -1
  240. package/dist/src/nile-floating-panel/content-manager.d.ts +0 -23
  241. package/dist/src/nile-floating-panel/content-manager.js +0 -67
  242. package/dist/src/nile-floating-panel/content-manager.js.map +0 -1
  243. package/dist/src/nile-floating-panel/event-manager.d.ts +0 -38
  244. package/dist/src/nile-floating-panel/event-manager.js +0 -81
  245. package/dist/src/nile-floating-panel/event-manager.js.map +0 -1
  246. package/dist/src/nile-floating-panel/index.d.ts +0 -1
  247. package/dist/src/nile-floating-panel/index.js +0 -2
  248. package/dist/src/nile-floating-panel/index.js.map +0 -1
  249. package/dist/src/nile-floating-panel/nile-floating-panel.css.d.ts +0 -17
  250. package/dist/src/nile-floating-panel/nile-floating-panel.css.js +0 -51
  251. package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +0 -1
  252. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +0 -67
  253. package/dist/src/nile-floating-panel/nile-floating-panel.js +0 -203
  254. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +0 -1
  255. package/dist/src/nile-floating-panel/position-manager.d.ts +0 -47
  256. package/dist/src/nile-floating-panel/position-manager.js +0 -94
  257. package/dist/src/nile-floating-panel/position-manager.js.map +0 -1
  258. package/dist/src/nile-floating-panel/style-manager.d.ts +0 -31
  259. package/dist/src/nile-floating-panel/style-manager.js +0 -74
  260. package/dist/src/nile-floating-panel/style-manager.js.map +0 -1
  261. package/dist/src/nile-floating-panel/types.d.ts +0 -29
  262. package/dist/src/nile-floating-panel/types.js +0 -8
  263. package/dist/src/nile-floating-panel/types.js.map +0 -1
  264. package/dist/src/nile-grid/data-processor.d.ts +0 -37
  265. package/dist/src/nile-grid/data-processor.js +0 -122
  266. package/dist/src/nile-grid/data-processor.js.map +0 -1
  267. package/dist/src/nile-grid/event-handlers.d.ts +0 -35
  268. package/dist/src/nile-grid/event-handlers.js +0 -158
  269. package/dist/src/nile-grid/event-handlers.js.map +0 -1
  270. package/dist/src/nile-grid/nile-grid.types.d.ts +0 -3
  271. package/dist/src/nile-grid/nile-grid.types.js +0 -2
  272. package/dist/src/nile-grid/nile-grid.types.js.map +0 -1
  273. package/dist/src/nile-grid/renderer.d.ts +0 -8
  274. package/dist/src/nile-grid/renderer.js +0 -78
  275. package/dist/src/nile-grid/renderer.js.map +0 -1
  276. package/dist/src/nile-grid/resize-handler.d.ts +0 -4
  277. package/dist/src/nile-grid/resize-handler.js +0 -36
  278. package/dist/src/nile-grid/resize-handler.js.map +0 -1
  279. package/dist/src/nile-grid/types.d.ts +0 -32
  280. package/dist/src/nile-grid/types.js +0 -2
  281. package/dist/src/nile-grid/types.js.map +0 -1
  282. package/dist/src/nile-grid/utils.d.ts +0 -4
  283. package/dist/src/nile-grid/utils.js +0 -32
  284. package/dist/src/nile-grid/utils.js.map +0 -1
  285. package/dist/src/nile-grid-body/index.d.ts +0 -1
  286. package/dist/src/nile-grid-body/index.js +0 -2
  287. package/dist/src/nile-grid-body/index.js.map +0 -1
  288. package/dist/src/nile-grid-body/nile-grid-body.css.d.ts +0 -12
  289. package/dist/src/nile-grid-body/nile-grid-body.css.js +0 -22
  290. package/dist/src/nile-grid-body/nile-grid-body.css.js.map +0 -1
  291. package/dist/src/nile-grid-body/nile-grid-body.d.ts +0 -29
  292. package/dist/src/nile-grid-body/nile-grid-body.js +0 -43
  293. package/dist/src/nile-grid-body/nile-grid-body.js.map +0 -1
  294. package/dist/src/nile-grid-cell-item/index.d.ts +0 -1
  295. package/dist/src/nile-grid-cell-item/index.js +0 -2
  296. package/dist/src/nile-grid-cell-item/index.js.map +0 -1
  297. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.d.ts +0 -12
  298. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +0 -47
  299. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +0 -1
  300. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +0 -36
  301. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +0 -93
  302. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +0 -1
  303. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.d.ts +0 -10
  304. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js +0 -34
  305. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +0 -1
  306. package/dist/src/nile-grid-head/index.d.ts +0 -1
  307. package/dist/src/nile-grid-head/index.js +0 -2
  308. package/dist/src/nile-grid-head/index.js.map +0 -1
  309. package/dist/src/nile-grid-head/nile-grid-head.css.d.ts +0 -12
  310. package/dist/src/nile-grid-head/nile-grid-head.css.js +0 -19
  311. package/dist/src/nile-grid-head/nile-grid-head.css.js.map +0 -1
  312. package/dist/src/nile-grid-head/nile-grid-head.d.ts +0 -28
  313. package/dist/src/nile-grid-head/nile-grid-head.js +0 -41
  314. package/dist/src/nile-grid-head/nile-grid-head.js.map +0 -1
  315. package/dist/src/nile-grid-head-item/index.d.ts +0 -1
  316. package/dist/src/nile-grid-head-item/index.js +0 -2
  317. package/dist/src/nile-grid-head-item/index.js.map +0 -1
  318. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.d.ts +0 -12
  319. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +0 -46
  320. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +0 -1
  321. package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +0 -37
  322. package/dist/src/nile-grid-head-item/nile-grid-head-item.js +0 -100
  323. package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +0 -1
  324. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.d.ts +0 -10
  325. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js +0 -34
  326. package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js.map +0 -1
  327. package/dist/src/nile-grid-row/index.d.ts +0 -1
  328. package/dist/src/nile-grid-row/index.js +0 -2
  329. package/dist/src/nile-grid-row/index.js.map +0 -1
  330. package/dist/src/nile-grid-row/nile-grid-row.css.d.ts +0 -12
  331. package/dist/src/nile-grid-row/nile-grid-row.css.js +0 -27
  332. package/dist/src/nile-grid-row/nile-grid-row.css.js.map +0 -1
  333. package/dist/src/nile-grid-row/nile-grid-row.d.ts +0 -29
  334. package/dist/src/nile-grid-row/nile-grid-row.js +0 -45
  335. package/dist/src/nile-grid-row/nile-grid-row.js.map +0 -1
  336. package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +0 -47
  337. package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +0 -16
  338. package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +0 -75
  339. package/dist/src/nile-menu/portal-manager.d.ts +0 -39
  340. package/dist/src/nile-menu/portal-manager.js +0 -340
  341. package/dist/src/nile-menu/portal-manager.js.map +0 -1
  342. package/dist/src/nile-menu/portal-utils.d.ts +0 -21
  343. package/dist/src/nile-menu/portal-utils.js +0 -128
  344. package/dist/src/nile-menu/portal-utils.js.map +0 -1
  345. package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +0 -22
  346. package/dist/src/nile-popover/popover-portal-handler.d.ts +0 -21
  347. package/dist/src/nile-popover/popover-portal-handler.js +0 -106
  348. package/dist/src/nile-popover/popover-portal-handler.js.map +0 -1
  349. package/dist/src/nile-portal-wrapper/index.d.ts +0 -1
  350. package/dist/src/nile-portal-wrapper/index.js +0 -2
  351. package/dist/src/nile-portal-wrapper/index.js.map +0 -1
  352. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.d.ts +0 -47
  353. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js +0 -451
  354. package/dist/src/nile-portal-wrapper/nile-portal-wrapper.js.map +0 -1
  355. package/dist/src/nile-rich-text-editor/utils.d.ts +0 -13
  356. package/dist/src/nile-rich-text-editor/utils.js +0 -538
  357. package/dist/src/nile-rich-text-editor/utils.js.map +0 -1
  358. package/dist/src/nile-select/body-append-manager.d.ts +0 -90
  359. package/dist/src/nile-select/body-append-manager.js +0 -298
  360. package/dist/src/nile-select/body-append-manager.js.map +0 -1
  361. package/dist/src/nile-sidebar/index.d.ts +0 -28
  362. package/dist/src/nile-sidebar/index.js +0 -116
  363. package/dist/src/nile-sidebar/index.js.map +0 -1
  364. package/dist/src/nile-sidebar-menu/index.d.ts +0 -1
  365. package/dist/src/nile-sidebar-menu/index.js +0 -2
  366. package/dist/src/nile-sidebar-menu/index.js.map +0 -1
  367. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.d.ts +0 -12
  368. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.js +0 -47
  369. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.css.js.map +0 -1
  370. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.d.ts +0 -37
  371. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.js +0 -84
  372. package/dist/src/nile-sidebar-menu/nile-sidebar-menu.js.map +0 -1
  373. package/dist/src/nile-sidebar-menu-items/index.d.ts +0 -1
  374. package/dist/src/nile-sidebar-menu-items/index.js +0 -2
  375. package/dist/src/nile-sidebar-menu-items/index.js.map +0 -1
  376. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.d.ts +0 -12
  377. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.js +0 -45
  378. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.css.js.map +0 -1
  379. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.d.ts +0 -35
  380. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.js +0 -78
  381. package/dist/src/nile-sidebar-menu-items/nile-sidebar-menu-items.js.map +0 -1
  382. package/dist/src/nile-sidebar-wrapper/index.d.ts +0 -1
  383. package/dist/src/nile-sidebar-wrapper/index.js +0 -2
  384. package/dist/src/nile-sidebar-wrapper/index.js.map +0 -1
  385. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.d.ts +0 -12
  386. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.js +0 -114
  387. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.css.js.map +0 -1
  388. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.d.ts +0 -35
  389. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.js +0 -89
  390. package/dist/src/nile-sidebar-wrapper/nile-sidebar-wrapper.js.map +0 -1
  391. package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +0 -9
  392. package/dist/src/nile-table-body/virtual-scroll-helper.js +0 -24
  393. package/dist/src/nile-table-body/virtual-scroll-helper.js.map +0 -1
  394. package/dist/src/nile-virtual-select/body-append-helper.d.ts +0 -16
  395. package/dist/src/nile-virtual-select/body-append-helper.js +0 -95
  396. package/dist/src/nile-virtual-select/body-append-helper.js.map +0 -1
  397. package/dist/src/nile-virtual-select/group-manager.d.ts +0 -32
  398. package/dist/src/nile-virtual-select/group-manager.js +0 -134
  399. package/dist/src/nile-virtual-select/group-manager.js.map +0 -1
  400. package/dist/src/nile-virtual-select/portal-utils.d.ts +0 -65
  401. package/dist/src/nile-virtual-select/portal-utils.js +0 -376
  402. package/dist/src/nile-virtual-select/portal-utils.js.map +0 -1
  403. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.d.ts +0 -273
  404. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js +0 -1305
  405. package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js.map +0 -1
  406. package/dist/src/nile-virtual-select/virtualizer-error-handler.d.ts +0 -21
  407. package/dist/src/nile-virtual-select/virtualizer-error-handler.js +0 -56
  408. package/dist/src/nile-virtual-select/virtualizer-error-handler.js.map +0 -1
  409. package/dist/src/nile-virtual-select-disabled/index.d.ts +0 -1
  410. package/dist/src/nile-virtual-select-disabled/index.js +0 -2
  411. package/dist/src/nile-virtual-select-disabled/index.js.map +0 -1
  412. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.d.ts +0 -12
  413. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js +0 -538
  414. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.css.js.map +0 -1
  415. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.d.ts +0 -299
  416. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js +0 -1441
  417. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.js.map +0 -1
  418. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.d.ts +0 -7
  419. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js +0 -631
  420. package/dist/src/nile-virtual-select-disabled/nile-virtual-select.test.js.map +0 -1
  421. package/dist/src/nile-virtual-select-disabled/portal-manager.d.ts +0 -45
  422. package/dist/src/nile-virtual-select-disabled/portal-manager.js +0 -333
  423. package/dist/src/nile-virtual-select-disabled/portal-manager.js.map +0 -1
  424. package/dist/src/nile-virtual-select-disabled/renderer.d.ts +0 -16
  425. package/dist/src/nile-virtual-select-disabled/renderer.js +0 -79
  426. package/dist/src/nile-virtual-select-disabled/renderer.js.map +0 -1
  427. package/dist/src/nile-virtual-select-disabled/search-manager.d.ts +0 -12
  428. package/dist/src/nile-virtual-select-disabled/search-manager.js +0 -40
  429. package/dist/src/nile-virtual-select-disabled/search-manager.js.map +0 -1
  430. package/dist/src/nile-virtual-select-disabled/selection-manager.d.ts +0 -12
  431. package/dist/src/nile-virtual-select-disabled/selection-manager.js +0 -64
  432. package/dist/src/nile-virtual-select-disabled/selection-manager.js.map +0 -1
  433. package/dist/src/nile-virtual-select-disabled/types.d.ts +0 -50
  434. package/dist/src/nile-virtual-select-disabled/types.js +0 -8
  435. package/dist/src/nile-virtual-select-disabled/types.js.map +0 -1
  436. package/dist/src/nile-virtual-table-body/index.d.ts +0 -2
  437. package/dist/src/nile-virtual-table-body/index.js +0 -3
  438. package/dist/src/nile-virtual-table-body/index.js.map +0 -1
  439. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +0 -1
  440. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +0 -44
  441. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +0 -1
  442. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +0 -50
  443. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +0 -135
  444. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +0 -1
  445. package/dist/src/nile-virtual-table-body/renderer.d.ts +0 -16
  446. package/dist/src/nile-virtual-table-body/renderer.js +0 -49
  447. package/dist/src/nile-virtual-table-body/renderer.js.map +0 -1
  448. package/dist/src/utilities/stepper-utils.d.ts +0 -71
  449. package/dist/src/utilities/stepper-utils.js +0 -108
  450. package/dist/src/utilities/stepper-utils.js.map +0 -1
@@ -1,1441 +0,0 @@
1
- /**
2
- * Copyright Aquera Inc 2025
3
- *
4
- * This source code is licensed under the BSD-3-Clause license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import { __decorate } from "tslib";
8
- import { html, } from 'lit';
9
- import { customElement, property } from 'lit/decorators.js';
10
- import { styles } from './nile-virtual-select.css';
11
- import '../nile-icon';
12
- import '../nile-popup/nile-popup';
13
- import '../nile-tag/nile-tag';
14
- import '../nile-checkbox/nile-checkbox';
15
- import '../nile-loader/nile-loader';
16
- import { animateTo, stopAnimations } from '../internal/animate';
17
- import { classMap } from 'lit/directives/class-map.js';
18
- import { query, state } from 'lit/decorators.js';
19
- import { defaultValue } from '../internal/default-value';
20
- import { FormControlController } from '../internal/form';
21
- import { getAnimation, setDefaultAnimation, } from '../utilities/animation-registry';
22
- import { HasSlotController } from '../internal/slot';
23
- import { waitForEvent } from '../internal/event';
24
- import { watch } from '../internal/watch';
25
- import NileElement from '../internal/nile-element';
26
- import { ifDefined } from 'lit/directives/if-defined.js';
27
- import { VirtualSelectSelectionManager } from './selection-manager.js';
28
- import { VirtualSelectSearchManager } from './search-manager.js';
29
- import { VirtualSelectRenderer } from './renderer.js';
30
- import { PortalManager } from './portal-manager.js';
31
- import { ResizeController } from '@lit-labs/observers/resize-controller.js';
32
- /**
33
- * Nile Virtual Select component.
34
- *
35
- * @tag nile-virtual-select
36
- *
37
- */
38
- /**
39
- * @summary Virtual select component for handling large datasets with virtual scrolling.
40
- * @status stable
41
- * @since 2.0
42
- *
43
- * @dependency nile-icon
44
- * @dependency nile-popup
45
- * @dependency nile-tag
46
- * @dependency nile-checkbox
47
- *
48
- * @slot label - The input's label. Alternatively, you can use the `label` attribute.
49
- * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.
50
- * @slot clear-icon - An icon to use in lieu of the default clear icon.
51
- * @slot expand-icon - The icon to show when the control is expanded and collapsed.
52
- * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.
53
- *
54
- * @event nile-change - Emitted when the control's value changes.
55
- * @event nile-clear - Emitted when the control's value is cleared.
56
- * @event nile-input - Emitted when the control receives input.
57
- * @event nile-focus - Emitted when the control gains focus.
58
- * @event nile-blur - Emitted when the control loses focus.
59
- * @event nile-show - Emitted when the select's menu opens.
60
- * @event nile-after-show - Emitted after the select's menu opens and all animations are complete.
61
- * @event nile-hide - Emitted when the select's menu closes.
62
- * @event nile-after-hide - Emitted after the select's menu closes and all animations are complete.
63
- * @event nile-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.
64
- * @event nile-search - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.
65
- * @event nile-scroll - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.
66
- * @event nile-scroll-start - Emitted when the user starts scrolling within the virtualized container.
67
- * @event nile-scroll-end - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).
68
- *
69
- * @csspart form-control - The form control that wraps the label, input, and help text.
70
- * @csspart form-control-label - The label's wrapper.
71
- * @csspart form-control-input - The select's wrapper.
72
- * @csspart form-control-help-text - The help text's wrapper.
73
- * @csspart combobox - The container the wraps the prefix, combobox, clear icon, and expand button.
74
- * @csspart prefix - The container that wraps the prefix slot.
75
- * @csspart display-input - The element that displays the selected option's label, an `<input>` element.
76
- * @csspart listbox - The listbox container where options are slotted.
77
- * @csspart tags - The container that houses option tags when `multiple` is used.
78
- * @csspart tag - The individual tags that represent each multiselect option.
79
- * @csspart clear-button - The clear button.
80
- * @csspart expand-icon - The container that wraps the expand icon.
81
- * @csspart footer - The footer container with show selected and clear all options.
82
- */
83
- let NileVirtualSelect = class NileVirtualSelect extends NileElement {
84
- constructor() {
85
- super(...arguments);
86
- this.formControlController = new FormControlController(this, {
87
- assumeInteractionOn: ['nile-blur', 'nile-input'],
88
- });
89
- this.hasSlotController = new HasSlotController(this, 'help-text', 'label');
90
- this.portalManager = new PortalManager(this);
91
- this.hasFocus = false;
92
- this.displayLabel = '';
93
- this.selectedOptions = [];
94
- this.oldValue = '';
95
- this.scrolling = false;
96
- /** The name of the select, submitted as a name/value pair with form data. */
97
- this.name = '';
98
- /** Array of all option items for virtual scrolling */
99
- this.data = [];
100
- /** Original unfiltered option items for search functionality */
101
- this.originalOptionItems = [];
102
- /**
103
- * The current value of the select. When `multiple` is enabled, the value will be an array of selected values.
104
- */
105
- this.value = '';
106
- /** The default value of the form control. Primarily used for resetting the form control. */
107
- this.defaultValue = '';
108
- /** The select's size. */
109
- this.size = 'medium';
110
- /** Placeholder text to show as a hint when the select is empty. */
111
- this.placeholder = 'Select...';
112
- /** Enable automatic resizing of tags area */
113
- this.autoResize = false;
114
- /** Current search value */
115
- this.searchValue = '';
116
- /** Enable search functionality */
117
- this.searchEnabled = false;
118
- /** Search input placeholder */
119
- this.internalSearchPlaceHolder = 'Search...';
120
- /** Disable local search filtering */
121
- this.disableLocalSearch = false;
122
- /** Show loading state */
123
- this.optionsLoading = false;
124
- /** Show loading state using nile-loader */
125
- this.loading = false;
126
- /** Allows more than one option to be selected. */
127
- this.multiple = false;
128
- /** Help text */
129
- this.helpText = '';
130
- /** Error message */
131
- this.errorMessage = '';
132
- /** Sets the input to a warning state */
133
- this.warning = false;
134
- /** Sets the input to an error state */
135
- this.error = false;
136
- /** Sets the input to a success state */
137
- this.success = false;
138
- /** Disables the select control. */
139
- this.disabled = false;
140
- /** Adds a clear button when the select is not empty. */
141
- this.clearable = false;
142
- /** The select's open state. */
143
- this.open = false;
144
- /**
145
- * Enable this option to prevent the listbox from being clipped when the component is placed inside a container with
146
- * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
147
- */
148
- this.hoist = false;
149
- /** Draws a filled select. */
150
- this.filled = false;
151
- /** Draws a pill-style select with rounded edges. */
152
- this.pill = false;
153
- /** The select's label. If you need to display HTML, use the `label` slot instead. */
154
- this.label = '';
155
- /**
156
- * The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox
157
- * inside of the viewport.
158
- */
159
- this.placement = 'bottom';
160
- /**
161
- * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you
162
- * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in
163
- * the same document or shadow root for this to work.
164
- */
165
- this.form = '';
166
- /** The select's required attribute. */
167
- this.required = false;
168
- /** Show no results message */
169
- this.showNoResults = false;
170
- /** No results message */
171
- this.noResultsMessage = 'No results found';
172
- /** Show selected options only */
173
- this.showSelected = false;
174
- /** Block value change events */
175
- this.blockValueChange = false;
176
- /** Disable width synchronization */
177
- this.noWidthSync = false;
178
- /**
179
- * When true, the listbox will be appended to the document body instead of the parent container.
180
- * This is useful when the parent has overflow: hidden, clip-path, or transform applied.
181
- */
182
- this.portal = false;
183
- /**
184
- * The maximum number of selected options to show when `multiple` is true. After the maximum, "+n" will be shown to
185
- * indicate the number of additional items that are selected. Set to 0 to remove the limit.
186
- */
187
- this.maxOptionsVisible = 3;
188
- this.oldMaxOptionsVisible = 1;
189
- this.showListbox = false;
190
- this.wasShowSelectedCheckedOnClose = false;
191
- this.handleDocumentMouseDown = (event) => {
192
- if (!this.open)
193
- return;
194
- const path = event.composedPath();
195
- const hitSelf = path.includes(this);
196
- const hitPopup = this.popup && path.includes(this.popup);
197
- const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);
198
- if (!hitSelf && !hitPopup && !hitPortalAppend) {
199
- this.hide();
200
- }
201
- };
202
- /**
203
- * This is a workaround for an error in the Lit Labs virtualizer.
204
- * Since there are no specific guidelines available to fix the issue,
205
- * we are catching only the error message related to the virtualizer.
206
- */
207
- this.handleWindowError = (event) => {
208
- const errorMessage = event.error?.message || event.message || '';
209
- if (errorMessage.includes('Cannot read properties of null (reading \'insertBefore\')')) {
210
- event.preventDefault();
211
- return;
212
- }
213
- };
214
- this.handleWindowResize = () => {
215
- this.portalManager.updatePortalAppendPosition();
216
- };
217
- this.handleWindowScroll = () => {
218
- this.portalManager.updatePortalAppendPosition();
219
- };
220
- this.resizeController = new ResizeController(this, {
221
- callback: (entries) => {
222
- for (const entry of entries) {
223
- if (entry.target.classList.contains('select__tags')) {
224
- this.calculateTotalWidthOfTags();
225
- }
226
- }
227
- }
228
- });
229
- }
230
- /** Gets the validity state object */
231
- get validity() {
232
- return this.valueInput?.validity;
233
- }
234
- /** Gets the validation message */
235
- get validationMessage() {
236
- return this.valueInput?.validationMessage ?? '';
237
- }
238
- connectedCallback() {
239
- super.connectedCallback();
240
- this.initializeComponent();
241
- this.setupEventListeners();
242
- this.updateComplete.then(() => {
243
- if (this.value && this.data.length > 0) {
244
- this.selectionChanged();
245
- }
246
- });
247
- }
248
- disconnectedCallback() {
249
- this.removeOpenListeners();
250
- // Clear any pending scroll timeout to prevent memory leaks
251
- if (this.scrollTimeout) {
252
- clearTimeout(this.scrollTimeout);
253
- this.scrollTimeout = undefined;
254
- }
255
- // Clean up body append elements
256
- this.portalManager.cleanupPortalAppend();
257
- }
258
- updated(changedProperties) {
259
- if (changedProperties.has('value')) {
260
- this.selectionChanged();
261
- }
262
- if (changedProperties.has('autoResize')) {
263
- const tagsDiv = this.shadowRoot?.querySelector('.select__tags');
264
- if (this.autoResize && tagsDiv) {
265
- this.resizeController.observe(tagsDiv);
266
- }
267
- else if (tagsDiv) {
268
- this.resizeController.unobserve(tagsDiv);
269
- }
270
- }
271
- }
272
- initializeComponent() {
273
- this.open = false;
274
- this.emit('nile-init');
275
- }
276
- /**
277
- * Get display text for an item using renderItemConfig
278
- */
279
- getDisplayText(item) {
280
- if (this.renderItemConfig?.getDisplayText) {
281
- return this.renderItemConfig.getDisplayText(item);
282
- }
283
- // Fallback to basic display
284
- return item?.label || item?.name || item?.toString() || '';
285
- }
286
- /**
287
- * Get value for an item using renderItemConfig or fallback to item.value
288
- */
289
- getItemValue(item) {
290
- if (this.renderItemConfig?.getValue) {
291
- return this.renderItemConfig.getValue(item);
292
- }
293
- return item?.value || item;
294
- }
295
- /**
296
- * Get search text for an item using renderItemConfig or fallback to display text
297
- */
298
- getSearchText(item) {
299
- if (this.renderItemConfig?.getSearchText) {
300
- return this.renderItemConfig.getSearchText(item);
301
- }
302
- return this.getDisplayText(item);
303
- }
304
- setupEventListeners() {
305
- this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);
306
- this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);
307
- this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);
308
- this.handleWindowError = this.handleWindowError.bind(this);
309
- this.handleWindowResize = this.handleWindowResize.bind(this);
310
- this.handleWindowScroll = this.handleWindowScroll.bind(this);
311
- }
312
- addOpenListeners() {
313
- document.addEventListener('focusin', this.handleDocumentFocusIn);
314
- document.addEventListener('keydown', this.handleDocumentKeyDown);
315
- document.addEventListener('mousedown', this.handleDocumentMouseDown);
316
- window.addEventListener('error', this.handleWindowError);
317
- if (this.portal) {
318
- window.addEventListener('resize', this.handleWindowResize);
319
- window.addEventListener('scroll', this.handleWindowScroll, true);
320
- }
321
- }
322
- removeOpenListeners() {
323
- document.removeEventListener('focusin', this.handleDocumentFocusIn);
324
- document.removeEventListener('keydown', this.handleDocumentKeyDown);
325
- document.removeEventListener('mousedown', this.handleDocumentMouseDown);
326
- window.removeEventListener('error', this.handleWindowError);
327
- window.removeEventListener('resize', this.handleWindowResize);
328
- window.removeEventListener('scroll', this.handleWindowScroll, true);
329
- }
330
- handleFocus() {
331
- this.hasFocus = true;
332
- this.emit('nile-focus');
333
- }
334
- handleBlur() {
335
- this.hasFocus = false;
336
- this.emit('nile-blur');
337
- }
338
- handleDocumentFocusIn(event) {
339
- if (!this.open)
340
- return;
341
- const path = event.composedPath();
342
- const hitSelf = path.includes(this);
343
- const hitPopup = this.popup && path.includes(this.popup);
344
- const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);
345
- if (!hitSelf && !hitPopup && !hitPortalAppend) {
346
- this.hide();
347
- }
348
- }
349
- handleDocumentKeyDown(event) {
350
- if (this.shouldIgnoreKeyPress(event)) {
351
- return;
352
- }
353
- if (this.isEscapeKey(event)) {
354
- this.handleEscapeKey(event);
355
- }
356
- if (this.isEnterOrSpaceKey(event)) {
357
- this.handleEnterOrSpaceKey(event);
358
- }
359
- }
360
- shouldIgnoreKeyPress(event) {
361
- const target = event.target;
362
- const isClearButton = target.closest('.select__clear') !== null;
363
- const isIconButton = target.closest('nile-icon-button') !== null;
364
- return isClearButton || isIconButton;
365
- }
366
- isEscapeKey(event) {
367
- return event.key === 'Escape' && this.open;
368
- }
369
- handleEscapeKey(event) {
370
- event.preventDefault();
371
- event.stopPropagation();
372
- this.hide();
373
- this.displayInput.focus({ preventScroll: true });
374
- }
375
- isEnterOrSpaceKey(event) {
376
- return event.key === 'Enter' || event.key === ' ';
377
- }
378
- handleEnterOrSpaceKey(event) {
379
- event.preventDefault();
380
- event.stopImmediatePropagation();
381
- if (!this.open) {
382
- this.show();
383
- return;
384
- }
385
- if (!this.multiple) {
386
- this.hide();
387
- this.displayInput.focus({ preventScroll: true });
388
- }
389
- }
390
- handleFooterClick(event) {
391
- event.stopPropagation();
392
- event.preventDefault();
393
- }
394
- toggleShowSelected(event) {
395
- event.stopPropagation();
396
- event.preventDefault();
397
- if (this.selectedOptions?.length === 0) {
398
- return;
399
- }
400
- this.showSelected = !this.showSelected;
401
- if (this.showSelected) {
402
- const selectedValues = Array.isArray(this.value) ? this.value : [this.value];
403
- this.data = this.originalOptionItems.filter((item) => {
404
- const itemValue = this.getItemValue(item);
405
- return selectedValues.some(val => String(val) === String(itemValue));
406
- });
407
- }
408
- else {
409
- this.data = [...this.originalOptionItems];
410
- }
411
- // Reset measured height when show selected toggles (content height may change)
412
- this.portalManager.resetMeasuredHeight();
413
- this.requestUpdate();
414
- this.repaintOptionsContainer();
415
- }
416
- unSelectAll() {
417
- this.showSelected = false;
418
- this.value = this.multiple ? [] : '';
419
- this.data = [...this.originalOptionItems];
420
- this.selectionChanged();
421
- this.emit('nile-change', { value: this.value, name: this.name });
422
- this.emit('nile-clear', { value: this.multiple ? this.value : '', name: this.name });
423
- this.resetScrollPosition();
424
- }
425
- handleLabelClick() {
426
- this.displayInput.focus();
427
- this.hide();
428
- }
429
- handleComboboxMouseDown(event) {
430
- if (this.shouldIgnoreComboboxClick(event)) {
431
- return;
432
- }
433
- event.preventDefault();
434
- this.displayInput.focus({ preventScroll: true });
435
- this.open = !this.open;
436
- }
437
- shouldIgnoreComboboxClick(event) {
438
- const path = event.composedPath();
439
- const isIconButton = path.some(el => el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button');
440
- return this.disabled || isIconButton;
441
- }
442
- handleComboboxKeyDown(event) {
443
- if (this.isEnterOrSpaceKey(event)) {
444
- event.preventDefault();
445
- this.open = !this.open;
446
- }
447
- }
448
- handleClearClick(event) {
449
- event.stopPropagation();
450
- this.clearSelection();
451
- }
452
- clearSelection() {
453
- const oldValue = this.value;
454
- this.value = this.multiple ? [] : '';
455
- this.selectionChanged();
456
- this.updateComplete.then(() => {
457
- this.nileInput({ value: this.value, name: this.name });
458
- this.nileChange({ value: this.value, name: this.name });
459
- this.emit('nile-clear');
460
- });
461
- }
462
- handleClearMouseDown(event) {
463
- event.stopPropagation();
464
- }
465
- handleOptionClick(event) {
466
- const target = event.target;
467
- const option = target.closest('nile-option');
468
- if (this.shouldBlockValueChange(option)) {
469
- return;
470
- }
471
- const oldValue = this.value;
472
- this.oldValue = oldValue;
473
- if (option && !option.disabled) {
474
- this.handleOptionSelection(option);
475
- }
476
- }
477
- shouldBlockValueChange(option) {
478
- if (this.blockValueChange && option) {
479
- this.emit('nile-block-change', { value: option?.value, name: this.name });
480
- this.hide();
481
- return true;
482
- }
483
- return false;
484
- }
485
- handleOptionSelection(option) {
486
- const optionValue = option.value;
487
- if (this.multiple) {
488
- this.toggleOptionSelection(optionValue);
489
- }
490
- else {
491
- this.setSelectedOptions(optionValue);
492
- }
493
- this.updateComplete.then(() => this.displayInput.focus({ preventScroll: true }));
494
- if (this.value !== this.oldValue) {
495
- this.updateComplete.then(() => {
496
- this.nileInput({ value: this.value, name: this.name });
497
- this.nileChange({ value: this.value, name: this.name });
498
- });
499
- }
500
- if (!this.multiple) {
501
- this.hide();
502
- this.displayInput.focus({ preventScroll: true });
503
- }
504
- }
505
- setSelectedOptions(optionValue) {
506
- this.value = optionValue;
507
- this.selectionChanged();
508
- }
509
- toggleOptionSelection(optionValue) {
510
- const currentValues = Array.isArray(this.value) ? this.value : [];
511
- if (currentValues.includes(optionValue)) {
512
- this.value = currentValues.filter(v => v !== optionValue);
513
- }
514
- else {
515
- this.value = [...currentValues, optionValue];
516
- }
517
- this.selectionChanged();
518
- }
519
- handleTagRemove(event, option) {
520
- event.stopPropagation();
521
- if (!this.disabled) {
522
- this.removeTagFromSelection(option);
523
- this.emitTagRemovalEvent(option);
524
- }
525
- }
526
- removeTagFromSelection(option) {
527
- let currentValue = this.value;
528
- if (!Array.isArray(currentValue)) {
529
- currentValue = currentValue ? [currentValue] : [];
530
- }
531
- const newValue = currentValue.filter((v) => v !== option.value);
532
- this.value = newValue;
533
- this.selectionChanged();
534
- }
535
- emitTagRemovalEvent(option) {
536
- this.updateComplete.then(() => {
537
- this.nileInput({ value: this.value, name: this.name });
538
- this.nileChange({ value: this.value, name: this.name });
539
- this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });
540
- });
541
- }
542
- selectionChanged() {
543
- const itemsToSearch = this.originalOptionItems.length > 0 ? this.originalOptionItems : this.data;
544
- this.selectedOptions = VirtualSelectSelectionManager.createVirtualOptionsFromValues(this.value, itemsToSearch, this.getDisplayText.bind(this), this.renderItemConfig?.getValue);
545
- if (this.multiple) {
546
- if (this.placeholder && this.value.length === 0) {
547
- this.displayLabel = '';
548
- }
549
- else {
550
- this.displayLabel = this.selectedOptions.length + ' selected';
551
- }
552
- }
553
- else {
554
- const currentValue = Array.isArray(this.value) ? this.value[0] : this.value;
555
- const label = this.selectedOptions[0]?.getTextLabel();
556
- this.displayLabel = label ? label : currentValue ?? '';
557
- }
558
- this.updateValidity();
559
- if (this.selectedOptions.length === 0) {
560
- this.showSelected = false;
561
- this.filterVirtualOptions('');
562
- this.repaintOptionsContainer();
563
- }
564
- this.calculateTotalWidthOfTags();
565
- }
566
- handleSearchFocus() {
567
- document.removeEventListener('keydown', this.handleDocumentKeyDown);
568
- }
569
- handleSearchBlur() {
570
- document.addEventListener('keydown', this.handleDocumentKeyDown);
571
- }
572
- handleSearchChange(e) {
573
- this.searchValue = e.detail.value;
574
- this.emit('nile-search', {
575
- query: this.searchValue,
576
- name: this.name
577
- });
578
- if (!this.disableLocalSearch) {
579
- this.filterVirtualOptions(this.searchValue);
580
- this.repaintOptionsContainer();
581
- // Reset measured height when search changes (content height may change)
582
- this.portalManager.resetMeasuredHeight();
583
- }
584
- }
585
- repaintOptionsContainer() {
586
- this.resetScrollPosition();
587
- this.updateComplete.then(() => {
588
- const virtualized = this.shadowRoot?.querySelector('.virtualized');
589
- if (virtualized) {
590
- if (this.data.length <= 5) {
591
- virtualized.classList.add('no-scroll');
592
- }
593
- else {
594
- virtualized.classList.remove('no-scroll');
595
- }
596
- }
597
- });
598
- }
599
- handleScroll(e) {
600
- if (this.showSelected) {
601
- return;
602
- }
603
- const target = e.target;
604
- this.emit('nile-scroll', {
605
- scrollTop: target.scrollTop,
606
- scrollLeft: target.scrollLeft,
607
- name: this.name
608
- });
609
- if (!this.scrolling) {
610
- this.scrolling = true;
611
- this.emit('nile-scroll-start', {
612
- scrollTop: target.scrollTop,
613
- scrollLeft: target.scrollLeft,
614
- name: this.name
615
- });
616
- }
617
- clearTimeout(this.scrollTimeout);
618
- this.scrollTimeout = window.setTimeout(() => {
619
- if (this.scrolling) {
620
- this.scrolling = false;
621
- }
622
- }, 300);
623
- const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);
624
- if (isAtBottom && !this.searchValue) {
625
- this.emit('nile-scroll-end', {
626
- scrollTop: target.scrollTop,
627
- scrollLeft: target.scrollLeft,
628
- name: this.name,
629
- isAtBottom: true
630
- });
631
- }
632
- }
633
- filterVirtualOptions(searchValue) {
634
- const result = VirtualSelectSearchManager.filterVirtualOptions(searchValue, this.originalOptionItems, this.data, this.getDisplayText.bind(this), this.renderItemConfig?.getSearchText);
635
- this.data = result.filteredItems;
636
- this.showNoResults = result.showNoResults;
637
- this.showSelected = false;
638
- this.requestUpdate();
639
- }
640
- handleInvalid(event) {
641
- this.formControlController.setValidity(false);
642
- this.formControlController.emitInvalidEvent(event);
643
- }
644
- handleDisabledChange() {
645
- if (this.disabled) {
646
- this.open = false;
647
- this.handleOpenChange();
648
- }
649
- }
650
- handleValueChange() {
651
- this.selectionChanged();
652
- this.requestUpdate();
653
- // Update body append content if it's active
654
- if (this.portal && this.portalManager.portalContainerElement) {
655
- this.portalManager.updatePortalAppendPosition();
656
- }
657
- }
658
- handleDataChange() {
659
- if (this.data.length > 0 && this.open && !this.showSelected && !this.searchValue) {
660
- this.originalOptionItems = [...this.data];
661
- }
662
- if (this.data.length > 0 && this.open && this.searchValue) {
663
- this.originalOptionItems = [...this.originalOptionItems, ...this.data];
664
- }
665
- this.selectionChanged();
666
- // Show no results message when data is empty and not loading
667
- if (!this.optionsLoading && !this.loading && this.data.length === 0) {
668
- this.showNoResults = true;
669
- }
670
- else if (this.data.length > 0) {
671
- this.showNoResults = false;
672
- }
673
- this.requestUpdate();
674
- // Reset measured height when data changes (content height may change)
675
- this.portalManager.resetMeasuredHeight();
676
- // Update body append content if it's active
677
- if (this.portal && this.portalManager.portalContainerElement) {
678
- this.portalManager.updatePortalAppendPosition();
679
- }
680
- }
681
- handleRenderItemConfigChange() {
682
- if (this.value && this.data.length > 0) {
683
- this.selectionChanged();
684
- this.requestUpdate();
685
- }
686
- }
687
- handleOptionsLoadingChange() {
688
- // Show no results message when loading stops and there are no results
689
- if (!this.optionsLoading && this.data.length === 0) {
690
- this.showNoResults = true;
691
- }
692
- this.requestUpdate();
693
- // Update body append content if it's active
694
- if (this.portal && this.portalManager.portalContainerElement) {
695
- this.portalManager.updatePortalAppendPosition();
696
- }
697
- }
698
- handlePortalAppendChange() {
699
- if (this.open) {
700
- if (this.portal) {
701
- this.portalManager.setupPortalAppend();
702
- }
703
- else {
704
- this.portalManager.cleanupPortalAppend();
705
- }
706
- }
707
- }
708
- async handleOpenChange() {
709
- if (this.open && !this.disabled) {
710
- await this.handleOpen();
711
- this.showListbox = true;
712
- if (this.portal) {
713
- this.portalManager.setupPortalAppend();
714
- }
715
- }
716
- else {
717
- await this.handleClose();
718
- this.showListbox = false;
719
- if (this.portal) {
720
- this.portalManager.cleanupPortalAppend();
721
- }
722
- }
723
- }
724
- async handleOpen() {
725
- this.emit('nile-show', { value: this.value, name: this.name });
726
- this.addOpenListeners();
727
- this.showNoResults = !this.data?.length;
728
- await stopAnimations(this);
729
- this.popup.active = true;
730
- const { keyframes, options } = getAnimation(this, 'select.show', {
731
- dir: 'ltr',
732
- });
733
- await animateTo(this.popup.popup, keyframes, options);
734
- if (this.wasShowSelectedCheckedOnClose) {
735
- this.showSelected = false;
736
- this.data = [...this.originalOptionItems];
737
- this.wasShowSelectedCheckedOnClose = false;
738
- }
739
- this.initializeOriginalItems();
740
- this.filterVirtualOptions(this.searchValue);
741
- this.resetScrollPosition();
742
- this.emit('nile-after-show', { value: this.value, name: this.name });
743
- }
744
- async handleClose() {
745
- this.emit('nile-hide', { value: this.value, name: this.name });
746
- this.removeOpenListeners();
747
- this.wasShowSelectedCheckedOnClose = this.showSelected;
748
- await stopAnimations(this);
749
- const { keyframes, options } = getAnimation(this, 'select.hide', {
750
- dir: 'ltr',
751
- });
752
- await animateTo(this.popup.popup, keyframes, options);
753
- this.popup.active = false;
754
- this.searchValue = '';
755
- // Reset measured height when popup closes (content may change on next open)
756
- this.portalManager.resetMeasuredHeight();
757
- this.emit('nile-after-hide', { value: this.value, name: this.name });
758
- }
759
- initializeOriginalItems() {
760
- if (this.data.length > 0) {
761
- this.originalOptionItems = [...this.data];
762
- }
763
- }
764
- async show() {
765
- if (this.open || this.disabled) {
766
- this.open = false;
767
- return undefined;
768
- }
769
- this.open = true;
770
- return waitForEvent(this, 'nile-after-show');
771
- }
772
- async hide() {
773
- if (!this.open || this.disabled) {
774
- this.open = false;
775
- return undefined;
776
- }
777
- this.open = false;
778
- return waitForEvent(this, 'nile-after-hide');
779
- }
780
- checkValidity() {
781
- return this.valueInput.checkValidity();
782
- }
783
- getForm() {
784
- return this.formControlController.getForm();
785
- }
786
- reportValidity() {
787
- return this.valueInput.reportValidity();
788
- }
789
- setCustomValidity(message) {
790
- this.valueInput.setCustomValidity(message);
791
- this.formControlController.updateValidity();
792
- }
793
- focus(options) {
794
- this.displayInput.focus(options);
795
- }
796
- blur() {
797
- this.displayInput.blur();
798
- }
799
- onInputChange(event) {
800
- event.stopPropagation();
801
- }
802
- render() {
803
- const hasLabelSlot = this.hasSlotController.test('label');
804
- const hasHelpTextSlot = this.hasSlotController.test('help-text');
805
- const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');
806
- const hasCustomSelect = this.hasSlotController.test('custom-select');
807
- const hasLabel = this.label ? true : !!hasLabelSlot;
808
- const hasClearIcon = this.clearable && !this.disabled && this.value.length > 0;
809
- const isPlaceholderVisible = !!this.placeholder && this.value.length === 0;
810
- const hasHelpText = !!this.helpText;
811
- const hasErrorMessage = !!this.errorMessage;
812
- return html `
813
- <div
814
- part="form-control"
815
- class=${classMap({
816
- 'form-control': true,
817
- 'form-control--small': this.size === 'small',
818
- 'form-control--medium': this.size === 'medium',
819
- 'form-control--large': this.size === 'large',
820
- 'form-control--has-label': hasLabel,
821
- 'form-control--has-help-text': hasHelpText,
822
- })}
823
- >
824
- ${this.renderLabel(hasLabel, hasLabelSuffixSlot)}
825
- ${this.renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage)}
826
- </div>
827
- `;
828
- }
829
- renderLabel(hasLabel, hasLabelSuffixSlot) {
830
- return html `
831
- <label
832
- id="label"
833
- part="form-control-label"
834
- class="form-control__label"
835
- aria-hidden=${hasLabel ? 'false' : 'true'}
836
- @click=${this.handleLabelClick}
837
- >
838
- <slot name="label">${this.label}</slot>
839
- </label>
840
-
841
- ${hasLabelSuffixSlot ? html ` <slot name="label-suffix"></slot> ` : ``}
842
- `;
843
- }
844
- renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage) {
845
- return html `
846
- <div part="form-control-input" class="form-control-input">
847
- ${this.renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible)}
848
- ${this.renderHelpText(hasHelpText, hasErrorMessage)}
849
- </div>
850
- `;
851
- }
852
- renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible) {
853
- return html `
854
- <nile-popup
855
- class=${classMap({
856
- select: true,
857
- 'select--warning': this.warning,
858
- 'select--error': this.error,
859
- 'select--success': this.success,
860
- 'select--standard': true,
861
- 'select--filled': this.filled,
862
- 'select--pill': this.pill,
863
- 'select--open': this.open,
864
- 'select--disabled': this.disabled,
865
- 'select--multiple': this.multiple,
866
- 'select--focused': this.hasFocus,
867
- 'select--placeholder-visible': isPlaceholderVisible,
868
- 'select--top': this.placement === 'top',
869
- 'select--bottom': this.placement === 'bottom',
870
- 'select--small': this.size === 'small',
871
- 'select--medium': this.size === 'medium',
872
- 'select--large': this.size === 'large',
873
- })}
874
- placement=${this.placement}
875
- strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}
876
- distance="6"
877
- ?flip=${!this.portal}
878
- ?shift=${!this.portal}
879
- sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}
880
- auto-size="vertical"
881
- auto-size-padding="10"
882
- >
883
- ${this.renderCustomSelect(hasCustomSelect)}
884
- ${this.renderCombobox(hasCustomSelect, hasClearIcon)}
885
- ${this.showListbox ? this.renderListbox() : html ``}
886
- </nile-popup>
887
- `;
888
- }
889
- renderCustomSelect(hasCustomSelect) {
890
- return hasCustomSelect
891
- ? html `<slot
892
- slot="anchor"
893
- name="custom-select"
894
- class="custom-select"
895
- @keydown=${this.handleComboboxKeyDown}
896
- @mousedown=${this.handleComboboxMouseDown}
897
- ></slot>`
898
- : html ``;
899
- }
900
- renderCombobox(hasCustomSelect, hasClearIcon) {
901
- return html `
902
- <div
903
- part="combobox"
904
- class=${classMap({
905
- select__combobox: true,
906
- 'select__hide-default': hasCustomSelect,
907
- })}
908
- slot="anchor"
909
- @keydown=${this.handleComboboxKeyDown}
910
- @mousedown=${this.handleComboboxMouseDown}
911
- >
912
- ${this.renderPrefix()}
913
- ${this.renderDisplayInput()}
914
- ${this.renderTags()}
915
- ${this.renderValueInput()}
916
- ${this.renderClearButton(hasClearIcon)}
917
- ${this.renderSuffix()}
918
- ${this.renderExpandIcon()}
919
- </div>
920
- `;
921
- }
922
- renderPrefix() {
923
- return html `
924
- <slot
925
- part="prefix"
926
- name="prefix"
927
- class=${classMap({
928
- select__prefix: true,
929
- multiple: this.multiple,
930
- })}
931
- ></slot>
932
- `;
933
- }
934
- renderDisplayInput() {
935
- return html `
936
- <input
937
- part="display-input"
938
- class="select__display-input"
939
- type="text"
940
- placeholder=${this.placeholder}
941
- .disabled=${this.disabled}
942
- .value=${this.displayLabel}
943
- autocomplete="off"
944
- spellcheck="false"
945
- autocapitalize="off"
946
- readonly
947
- aria-controls="listbox"
948
- aria-expanded=${this.open ? 'true' : 'false'}
949
- aria-haspopup="listbox"
950
- aria-labelledby="label"
951
- aria-disabled=${this.disabled ? 'true' : 'false'}
952
- aria-describedby="help-text"
953
- role="combobox"
954
- tabindex="0"
955
- />
956
- `;
957
- }
958
- renderTags() {
959
- return this.multiple
960
- ? html `
961
- <div part="tags" class="select__tags">
962
- ${this.selectedOptions.map((option, index) => {
963
- if (index < this.maxOptionsVisible ||
964
- this.maxOptionsVisible <= 0) {
965
- const classes = {
966
- select__invisible: index + 1 > this.oldMaxOptionsVisible &&
967
- this.maxOptionsVisible === Infinity,
968
- };
969
- return html `
970
- <nile-tag
971
- class=${classMap(classes)}
972
- part="tag"
973
- exportparts="
974
- base:tag__base,
975
- content:tag__content,
976
- remove-button:tag__remove-button,
977
- remove-button__base:tag__remove-button__base
978
- "
979
- ?pill=${this.pill}
980
- size=${this.size}
981
- removable
982
- @nile-remove=${(event) => this.handleTagRemove(event, option)}
983
- >
984
- ${option.getTextLabel()}
985
- </nile-tag>
986
- `;
987
- }
988
- else if (index === this.maxOptionsVisible) {
989
- return html `
990
- <span class="select__tags-count"
991
- >+${this.selectedOptions.length - index} More
992
- </span>
993
- `;
994
- }
995
- else {
996
- return null;
997
- }
998
- })}
999
- </div>
1000
- `
1001
- : html ``;
1002
- }
1003
- renderValueInput() {
1004
- return html `
1005
- <input
1006
- class="select__value-input"
1007
- type="text"
1008
- ?disabled=${this.disabled}
1009
- ?required=${this.required}
1010
- .value=${Array.isArray(this.value)
1011
- ? this.value.join(', ')
1012
- : this.value}
1013
- tabindex="-1"
1014
- aria-hidden="true"
1015
- @focus=${() => this.focus()}
1016
- @invalid=${this.handleInvalid}
1017
- />
1018
- `;
1019
- }
1020
- renderClearButton(hasClearIcon) {
1021
- return hasClearIcon
1022
- ? html `
1023
- <button
1024
- part="clear-button"
1025
- class="select__clear"
1026
- type="button"
1027
- aria-label="clearEntry"
1028
- @mousedown=${this.handleClearMouseDown}
1029
- @click=${this.handleClearClick}
1030
- tabindex="-1"
1031
- >
1032
- <slot name="clear-icon">
1033
- <nile-icon name="var(--nile-icon-close, var(--ng-icon-x-close))" method="var(--nile-svg-method-fill, var(--ng-svg-method-stroke))" library="system"></nile-icon>
1034
- </slot>
1035
- </button>
1036
- `
1037
- : html ``;
1038
- }
1039
- renderSuffix() {
1040
- return html `
1041
- <slot
1042
- part="suffix"
1043
- name="suffix"
1044
- class=${classMap({
1045
- select__suffix: true,
1046
- })}
1047
- ></slot>
1048
- `;
1049
- }
1050
- renderExpandIcon() {
1051
- return html `
1052
- <slot
1053
- name="expand-icon"
1054
- part="expand-icon"
1055
- class="select__expand-icon"
1056
- >
1057
- <nile-icon library="system" name="var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))" method="var(--nile-svg-method-fill, var(--ng-svg-method-stroke))"></nile-icon>
1058
- </slot>
1059
- `;
1060
- }
1061
- renderListbox() {
1062
- return html `
1063
- <div
1064
- id="listbox"
1065
- role="listbox"
1066
- aria-expanded=${this.open ? 'true' : 'false'}
1067
- aria-multiselectable=${this.multiple ? 'true' : 'false'}
1068
- aria-labelledby="label"
1069
- part="listbox"
1070
- class="select__listbox ${this.searchEnabled
1071
- ? 'select__search-enabled '
1072
- : ''} ${this.portal ? 'select__portal-append-hidden' : ''}"
1073
- tabindex="-1"
1074
- @mouseup=${this.handleOptionClick}
1075
- style=${this.portal ? 'display: none;' : ''}
1076
- >
1077
- ${this.renderSearch()}
1078
- ${this.renderLoader()}
1079
- ${this.getVirtualizedContent()}
1080
- ${this.renderFooter()}
1081
- </div>
1082
- `;
1083
- }
1084
- renderSearch() {
1085
- return this.searchEnabled
1086
- ? html `
1087
- <div part="search" class="select__search">
1088
- <nile-input
1089
- size="small"
1090
- clearable
1091
- .value=${this.searchValue}
1092
- placeholder="${this.internalSearchPlaceHolder}"
1093
- @nile-input=${this.handleSearchChange}
1094
- @nile-focus=${this.handleSearchFocus}
1095
- @nile-change="${this.onInputChange}"
1096
- >
1097
- <nile-icon name="var(--nile-icon-search, var(--ng-icon-search-lg))" method="var(--nile-svg-method-fill, var(--ng-svg-method-stroke))" slot="suffix"> </nile-icon>
1098
- </nile-input>
1099
- </div>
1100
- `
1101
- : html ``;
1102
- }
1103
- renderLoader() {
1104
- if (this.loading) {
1105
- return html `
1106
- <span part="loader" class="virtual-select-loader">
1107
- <nile-loader size="sm"></nile-loader>
1108
- </span>
1109
- `;
1110
- }
1111
- if (this.optionsLoading) {
1112
- return html `
1113
- <span part="loader" class="select__loader">
1114
- <nile-icon
1115
- class="select__loader--icon"
1116
- name="button-loading-blue"
1117
- ></nile-icon>
1118
- </span>
1119
- `;
1120
- }
1121
- return html ``;
1122
- }
1123
- renderFooter() {
1124
- return this.multiple
1125
- ? html `
1126
- <div
1127
- part="footer"
1128
- class="select__footer ${this.loading ? 'loading' : ''}"
1129
- @click="${this.handleFooterClick}"
1130
- >
1131
- <span
1132
- @click="${this.toggleShowSelected}"
1133
- style="cursor: pointer;"
1134
- >
1135
- <nile-checkbox
1136
- ?disabled="${this.selectedOptions.length === 0}"
1137
- ?checked="${this.showSelected}"
1138
- >
1139
- &nbsp; Show Selected</nile-checkbox
1140
- >
1141
- </span>
1142
- ${this.selectedOptions.length !== 0
1143
- ? html `
1144
- <span
1145
- class="select__clear"
1146
- @click="${this.unSelectAll}"
1147
- >
1148
- Clear All
1149
- </span>
1150
- `
1151
- : ``}
1152
- </div>
1153
- `
1154
- : html ``;
1155
- }
1156
- renderHelpText(hasHelpText, hasErrorMessage) {
1157
- return html `
1158
- ${hasHelpText
1159
- ? html ` <nile-form-help-text>${this.helpText}</nile-form-help-text> `
1160
- : ``}
1161
- ${hasErrorMessage
1162
- ? html `
1163
- <nile-form-error-message
1164
- >${this.errorMessage}</nile-form-error-message
1165
- >
1166
- `
1167
- : ``}
1168
- `;
1169
- }
1170
- getVirtualizedContent() {
1171
- return VirtualSelectRenderer.getVirtualizedContent(this.data, this.searchEnabled, this.getDisplayText.bind(this), this.value, this.multiple, this.renderItemConfig?.getDisplayText, this.renderItemConfig?.getValue, this.showNoResults, this.noResultsMessage, this.optionsLoading || this.loading, this.handleScroll.bind(this));
1172
- }
1173
- nileInput(value) {
1174
- this.emit('nile-input', value);
1175
- }
1176
- nileChange(value) {
1177
- this.emit('nile-change', value);
1178
- }
1179
- updateValidity() {
1180
- this.updateComplete.then(() => {
1181
- this.formControlController.updateValidity();
1182
- });
1183
- }
1184
- calculateWidthOfSelectTagsDiv() {
1185
- if (this.shadowRoot) {
1186
- const selectTagsDiv = this.shadowRoot.querySelector('.select__tags');
1187
- if (selectTagsDiv) {
1188
- const width = selectTagsDiv.offsetWidth;
1189
- return width - 70;
1190
- }
1191
- }
1192
- return null;
1193
- }
1194
- calculateTotalWidthOfTags() {
1195
- if (this.maxOptionsVisible !== Infinity) {
1196
- this.oldMaxOptionsVisible = this.maxOptionsVisible;
1197
- }
1198
- this.maxOptionsVisible = Infinity;
1199
- setTimeout(() => {
1200
- let widths = [];
1201
- if (this.shadowRoot) {
1202
- const tags = this.shadowRoot.querySelectorAll('nile-tag');
1203
- tags.forEach(tag => {
1204
- if (tag instanceof HTMLElement) {
1205
- widths.push(tag.offsetWidth);
1206
- }
1207
- });
1208
- }
1209
- if (this.value.length !== widths.length) {
1210
- return;
1211
- }
1212
- let sum = widths.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
1213
- const widthOfSelectTagsDiv = this.calculateWidthOfSelectTagsDiv();
1214
- if (!widthOfSelectTagsDiv) {
1215
- return;
1216
- }
1217
- let summ = 0;
1218
- let lastindex = 0;
1219
- for (let i = 0; i < widths.length; i++) {
1220
- summ += widths[i];
1221
- if (summ > widthOfSelectTagsDiv) {
1222
- lastindex = i;
1223
- break;
1224
- }
1225
- }
1226
- this.maxOptionsVisible = lastindex;
1227
- }, 1);
1228
- }
1229
- resetScrollPosition() {
1230
- this.updateComplete.then(() => {
1231
- if (this.virtualizedContainer && this.virtualizedContainer.isConnected) {
1232
- this.virtualizedContainer.scrollTop = 0;
1233
- const listbox = this.shadowRoot?.querySelector('.select__listbox');
1234
- if (listbox && listbox.isConnected) {
1235
- listbox.scrollTop = 0;
1236
- }
1237
- const virtualizer = this.virtualizedContainer.querySelector('lit-virtualizer');
1238
- if (virtualizer && virtualizer.isConnected) {
1239
- virtualizer.scrollTop = 0;
1240
- }
1241
- }
1242
- });
1243
- }
1244
- };
1245
- NileVirtualSelect.styles = styles;
1246
- __decorate([
1247
- query('.select')
1248
- ], NileVirtualSelect.prototype, "popup", void 0);
1249
- __decorate([
1250
- query('.select__combobox')
1251
- ], NileVirtualSelect.prototype, "combobox", void 0);
1252
- __decorate([
1253
- query('.select__display-input')
1254
- ], NileVirtualSelect.prototype, "displayInput", void 0);
1255
- __decorate([
1256
- query('.select__value-input')
1257
- ], NileVirtualSelect.prototype, "valueInput", void 0);
1258
- __decorate([
1259
- query('.virtualized')
1260
- ], NileVirtualSelect.prototype, "virtualizedContainer", void 0);
1261
- __decorate([
1262
- state()
1263
- ], NileVirtualSelect.prototype, "hasFocus", void 0);
1264
- __decorate([
1265
- state()
1266
- ], NileVirtualSelect.prototype, "displayLabel", void 0);
1267
- __decorate([
1268
- state()
1269
- ], NileVirtualSelect.prototype, "selectedOptions", void 0);
1270
- __decorate([
1271
- state()
1272
- ], NileVirtualSelect.prototype, "oldValue", void 0);
1273
- __decorate([
1274
- property()
1275
- ], NileVirtualSelect.prototype, "name", void 0);
1276
- __decorate([
1277
- property({ type: Array })
1278
- ], NileVirtualSelect.prototype, "data", void 0);
1279
- __decorate([
1280
- state()
1281
- ], NileVirtualSelect.prototype, "originalOptionItems", void 0);
1282
- __decorate([
1283
- property({
1284
- converter: {
1285
- fromAttribute: (value) => value.split(' '),
1286
- toAttribute: (value) => value.join(' '),
1287
- },
1288
- })
1289
- ], NileVirtualSelect.prototype, "value", void 0);
1290
- __decorate([
1291
- defaultValue()
1292
- ], NileVirtualSelect.prototype, "defaultValue", void 0);
1293
- __decorate([
1294
- property()
1295
- ], NileVirtualSelect.prototype, "size", void 0);
1296
- __decorate([
1297
- property()
1298
- ], NileVirtualSelect.prototype, "placeholder", void 0);
1299
- __decorate([
1300
- property({ type: Boolean })
1301
- ], NileVirtualSelect.prototype, "autoResize", void 0);
1302
- __decorate([
1303
- state()
1304
- ], NileVirtualSelect.prototype, "searchValue", void 0);
1305
- __decorate([
1306
- property({ type: Boolean, reflect: true })
1307
- ], NileVirtualSelect.prototype, "searchEnabled", void 0);
1308
- __decorate([
1309
- property({ attribute: 'internal-search-placeholder' })
1310
- ], NileVirtualSelect.prototype, "internalSearchPlaceHolder", void 0);
1311
- __decorate([
1312
- property({ type: Boolean, reflect: true })
1313
- ], NileVirtualSelect.prototype, "disableLocalSearch", void 0);
1314
- __decorate([
1315
- property({ type: Boolean, reflect: true })
1316
- ], NileVirtualSelect.prototype, "optionsLoading", void 0);
1317
- __decorate([
1318
- property({ type: Boolean, reflect: true, attribute: true })
1319
- ], NileVirtualSelect.prototype, "loading", void 0);
1320
- __decorate([
1321
- property({ type: Boolean, reflect: true })
1322
- ], NileVirtualSelect.prototype, "multiple", void 0);
1323
- __decorate([
1324
- property({ attribute: 'help-text', reflect: true })
1325
- ], NileVirtualSelect.prototype, "helpText", void 0);
1326
- __decorate([
1327
- property({ attribute: 'error-message', reflect: true })
1328
- ], NileVirtualSelect.prototype, "errorMessage", void 0);
1329
- __decorate([
1330
- property({ type: Boolean })
1331
- ], NileVirtualSelect.prototype, "warning", void 0);
1332
- __decorate([
1333
- property({ type: Boolean })
1334
- ], NileVirtualSelect.prototype, "error", void 0);
1335
- __decorate([
1336
- property({ type: Boolean })
1337
- ], NileVirtualSelect.prototype, "success", void 0);
1338
- __decorate([
1339
- property({ type: Boolean, reflect: true })
1340
- ], NileVirtualSelect.prototype, "disabled", void 0);
1341
- __decorate([
1342
- property({ type: Boolean, reflect: true })
1343
- ], NileVirtualSelect.prototype, "clearable", void 0);
1344
- __decorate([
1345
- property({ type: Boolean, reflect: true })
1346
- ], NileVirtualSelect.prototype, "open", void 0);
1347
- __decorate([
1348
- property({ type: Boolean })
1349
- ], NileVirtualSelect.prototype, "hoist", void 0);
1350
- __decorate([
1351
- property({ type: Boolean, reflect: true })
1352
- ], NileVirtualSelect.prototype, "filled", void 0);
1353
- __decorate([
1354
- property({ type: Boolean, reflect: true })
1355
- ], NileVirtualSelect.prototype, "pill", void 0);
1356
- __decorate([
1357
- property()
1358
- ], NileVirtualSelect.prototype, "label", void 0);
1359
- __decorate([
1360
- property({ reflect: true })
1361
- ], NileVirtualSelect.prototype, "placement", void 0);
1362
- __decorate([
1363
- property({ reflect: true })
1364
- ], NileVirtualSelect.prototype, "form", void 0);
1365
- __decorate([
1366
- property({ type: Boolean, reflect: true })
1367
- ], NileVirtualSelect.prototype, "required", void 0);
1368
- __decorate([
1369
- property({ type: Boolean })
1370
- ], NileVirtualSelect.prototype, "showNoResults", void 0);
1371
- __decorate([
1372
- property({ type: String })
1373
- ], NileVirtualSelect.prototype, "noResultsMessage", void 0);
1374
- __decorate([
1375
- property({ type: Boolean })
1376
- ], NileVirtualSelect.prototype, "showSelected", void 0);
1377
- __decorate([
1378
- property({ attribute: false })
1379
- ], NileVirtualSelect.prototype, "renderItemConfig", void 0);
1380
- __decorate([
1381
- property({ type: Boolean, reflect: true })
1382
- ], NileVirtualSelect.prototype, "blockValueChange", void 0);
1383
- __decorate([
1384
- property({ type: Boolean, reflect: true })
1385
- ], NileVirtualSelect.prototype, "noWidthSync", void 0);
1386
- __decorate([
1387
- property({ type: Boolean, reflect: true })
1388
- ], NileVirtualSelect.prototype, "portal", void 0);
1389
- __decorate([
1390
- property({ attribute: 'max-options-visible', type: Number })
1391
- ], NileVirtualSelect.prototype, "maxOptionsVisible", void 0);
1392
- __decorate([
1393
- state()
1394
- ], NileVirtualSelect.prototype, "oldMaxOptionsVisible", void 0);
1395
- __decorate([
1396
- state()
1397
- ], NileVirtualSelect.prototype, "showListbox", void 0);
1398
- __decorate([
1399
- state()
1400
- ], NileVirtualSelect.prototype, "wasShowSelectedCheckedOnClose", void 0);
1401
- __decorate([
1402
- watch('disabled', { waitUntilFirstUpdate: true })
1403
- ], NileVirtualSelect.prototype, "handleDisabledChange", null);
1404
- __decorate([
1405
- watch('value', { waitUntilFirstUpdate: true })
1406
- ], NileVirtualSelect.prototype, "handleValueChange", null);
1407
- __decorate([
1408
- watch('data', { waitUntilFirstUpdate: true })
1409
- ], NileVirtualSelect.prototype, "handleDataChange", null);
1410
- __decorate([
1411
- watch('renderItemConfig', { waitUntilFirstUpdate: true })
1412
- ], NileVirtualSelect.prototype, "handleRenderItemConfigChange", null);
1413
- __decorate([
1414
- watch('optionsLoading', { waitUntilFirstUpdate: true })
1415
- ], NileVirtualSelect.prototype, "handleOptionsLoadingChange", null);
1416
- __decorate([
1417
- watch('portal', { waitUntilFirstUpdate: true })
1418
- ], NileVirtualSelect.prototype, "handlePortalAppendChange", null);
1419
- __decorate([
1420
- watch('open', { waitUntilFirstUpdate: true })
1421
- ], NileVirtualSelect.prototype, "handleOpenChange", null);
1422
- NileVirtualSelect = __decorate([
1423
- customElement('nile-virtual-select')
1424
- ], NileVirtualSelect);
1425
- export { NileVirtualSelect };
1426
- setDefaultAnimation('select.show', {
1427
- keyframes: [
1428
- { opacity: 0, scale: 0.9 },
1429
- { opacity: 1, scale: 1 },
1430
- ],
1431
- options: { duration: 100, easing: 'ease' },
1432
- });
1433
- setDefaultAnimation('select.hide', {
1434
- keyframes: [
1435
- { opacity: 1, scale: 1 },
1436
- { opacity: 0, scale: 0.9 },
1437
- ],
1438
- options: { duration: 100, easing: 'ease' },
1439
- });
1440
- export default NileVirtualSelect;
1441
- //# sourceMappingURL=nile-virtual-select.js.map