@aquera/nile-elements 0.0.119 → 0.0.120

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 (351) hide show
  1. package/README.md +6 -0
  2. package/dist/nile-accordion/nile-accordion.cjs.js +1 -1
  3. package/dist/nile-accordion/nile-accordion.cjs.js.map +1 -1
  4. package/dist/nile-accordion/nile-accordion.esm.js +1 -1
  5. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  6. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  7. package/dist/nile-auto-complete/nile-auto-complete.esm.js +15 -6
  8. package/dist/nile-avatar/nile-avatar.cjs.js +1 -1
  9. package/dist/nile-avatar/nile-avatar.cjs.js.map +1 -1
  10. package/dist/nile-avatar/nile-avatar.esm.js +1 -1
  11. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  12. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  13. package/dist/nile-badge/nile-badge.esm.js +1 -1
  14. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js +1 -1
  15. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js.map +1 -1
  16. package/dist/nile-breadcrumb/nile-breadcrumb.esm.js +1 -1
  17. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js +1 -1
  18. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js.map +1 -1
  19. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.esm.js +2 -2
  20. package/dist/nile-button/nile-button.cjs.js +1 -1
  21. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  22. package/dist/nile-button/nile-button.esm.js +1 -1
  23. package/dist/nile-button-toggle/nile-button-toggle.cjs.js +1 -1
  24. package/dist/nile-button-toggle/nile-button-toggle.cjs.js.map +1 -1
  25. package/dist/nile-button-toggle/nile-button-toggle.esm.js +1 -1
  26. package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js +1 -1
  27. package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js.map +1 -1
  28. package/dist/nile-button-toggle-group/nile-button-toggle-group.esm.js +1 -1
  29. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  30. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  31. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  32. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  33. package/dist/nile-calendar/nile-calendar.css.esm.js +4 -1
  34. package/dist/nile-calendar/nile-calendar.esm.js +9 -2
  35. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  36. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  37. package/dist/nile-calendar/nile-calendar.test.esm.js +5 -5
  38. package/dist/nile-card/nile-card.cjs.js +1 -1
  39. package/dist/nile-card/nile-card.cjs.js.map +1 -1
  40. package/dist/nile-card/nile-card.esm.js +1 -1
  41. package/dist/nile-checkbox/nile-checkbox.cjs.js +1 -1
  42. package/dist/nile-checkbox/nile-checkbox.cjs.js.map +1 -1
  43. package/dist/nile-checkbox/nile-checkbox.esm.js +1 -1
  44. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  45. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  46. package/dist/nile-chip/nile-chip.esm.js +6 -2
  47. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  48. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  49. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  50. package/dist/nile-code-editor/nile-code-editor.esm.js +1 -1
  51. package/dist/nile-content-editor/nile-content-editor.cjs.js +1 -1
  52. package/dist/nile-content-editor/nile-content-editor.cjs.js.map +1 -1
  53. package/dist/nile-content-editor/nile-content-editor.esm.js +5 -5
  54. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  55. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  56. package/dist/nile-date-picker/nile-date-picker.esm.js +17 -6
  57. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  58. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  59. package/dist/nile-dialog/nile-dialog.esm.js +1 -1
  60. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  61. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  62. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  63. package/dist/nile-empty-state/nile-empty-state.cjs.js +1 -1
  64. package/dist/nile-empty-state/nile-empty-state.cjs.js.map +1 -1
  65. package/dist/nile-empty-state/nile-empty-state.esm.js +1 -1
  66. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  67. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  68. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  69. package/dist/nile-input/nile-input.cjs.js +1 -1
  70. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  71. package/dist/nile-input/nile-input.esm.js +1 -1
  72. package/dist/nile-link/nile-link.cjs.js +1 -1
  73. package/dist/nile-link/nile-link.cjs.js.map +1 -1
  74. package/dist/nile-link/nile-link.esm.js +1 -1
  75. package/dist/nile-list/nile-list.cjs.js +1 -1
  76. package/dist/nile-list/nile-list.cjs.js.map +1 -1
  77. package/dist/nile-list/nile-list.esm.js +1 -1
  78. package/dist/nile-list-item/nile-list-item.cjs.js +1 -1
  79. package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -1
  80. package/dist/nile-list-item/nile-list-item.esm.js +1 -1
  81. package/dist/nile-menu/nile-menu.cjs.js +1 -1
  82. package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
  83. package/dist/nile-menu/nile-menu.esm.js +5 -2
  84. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  85. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  86. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  87. package/dist/nile-option/nile-option.cjs.js +1 -1
  88. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  89. package/dist/nile-option/nile-option.esm.js +1 -1
  90. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  91. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  92. package/dist/nile-popover/nile-popover.esm.js +2 -2
  93. package/dist/nile-popup/nile-popup.cjs.js +1 -1
  94. package/dist/nile-popup/nile-popup.cjs.js.map +1 -1
  95. package/dist/nile-popup/nile-popup.esm.js +1 -1
  96. package/dist/nile-radio-group/nile-radio-group.cjs.js +1 -1
  97. package/dist/nile-radio-group/nile-radio-group.cjs.js.map +1 -1
  98. package/dist/nile-radio-group/nile-radio-group.esm.js +1 -1
  99. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +2 -0
  100. package/dist/nile-radio-group/nile-radio-group.test.cjs.js.map +1 -0
  101. package/dist/nile-radio-group/nile-radio-group.test.esm.js +57 -0
  102. package/dist/nile-select/nile-select.cjs.js +1 -1
  103. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  104. package/dist/nile-select/nile-select.esm.js +6 -4
  105. package/dist/nile-select/nile-select.test.cjs.js +2 -0
  106. package/dist/nile-select/nile-select.test.cjs.js.map +1 -0
  107. package/dist/nile-select/nile-select.test.esm.js +55 -0
  108. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js +1 -1
  109. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js.map +1 -1
  110. package/dist/nile-slide-toggle/nile-slide-toggle.esm.js +3 -3
  111. package/dist/nile-split-panel/nile-split-panel.cjs.js +1 -1
  112. package/dist/nile-split-panel/nile-split-panel.cjs.js.map +1 -1
  113. package/dist/nile-split-panel/nile-split-panel.esm.js +1 -1
  114. package/dist/nile-split-panel/nile-split-panel.test.cjs.js +2 -0
  115. package/dist/nile-split-panel/nile-split-panel.test.cjs.js.map +1 -0
  116. package/dist/nile-split-panel/nile-split-panel.test.esm.js +1 -0
  117. package/dist/nile-stepper/nile-stepper.cjs.js +1 -1
  118. package/dist/nile-stepper/nile-stepper.cjs.js.map +1 -1
  119. package/dist/nile-stepper/nile-stepper.esm.js +1 -1
  120. package/dist/nile-stepper/nile-stepper.test.cjs.js +1 -1
  121. package/dist/nile-stepper/nile-stepper.test.cjs.js.map +1 -1
  122. package/dist/nile-stepper/nile-stepper.test.esm.js +1 -1
  123. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  124. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  125. package/dist/nile-tab/nile-tab.esm.js +1 -1
  126. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  127. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  128. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  129. package/dist/nile-table-body/nile-table-body.cjs.js +1 -1
  130. package/dist/nile-table-body/nile-table-body.cjs.js.map +1 -1
  131. package/dist/nile-table-body/nile-table-body.esm.js +1 -1
  132. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  133. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  134. package/dist/nile-tag/nile-tag.esm.js +1 -1
  135. package/dist/nile-textarea/nile-textarea.cjs.js +1 -1
  136. package/dist/nile-textarea/nile-textarea.cjs.js.map +1 -1
  137. package/dist/nile-textarea/nile-textarea.esm.js +1 -1
  138. package/dist/nile-textarea/nile-textarea.test.cjs.js.map +1 -1
  139. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  140. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  141. package/dist/nile-toast/nile-toast.esm.js +1 -1
  142. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  143. package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
  144. package/dist/nile-tooltip/nile-tooltip.esm.js +1 -1
  145. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  146. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  147. package/dist/nile-tree/nile-tree.esm.js +1 -1
  148. package/dist/nile-tree/nile-tree.test.cjs.js +2 -0
  149. package/dist/nile-tree/nile-tree.test.cjs.js.map +1 -0
  150. package/dist/nile-tree/nile-tree.test.esm.js +1 -0
  151. package/dist/src/nile-accordion/nile-accordion.d.ts +1 -0
  152. package/dist/src/nile-accordion/nile-accordion.js +1 -0
  153. package/dist/src/nile-accordion/nile-accordion.js.map +1 -1
  154. package/dist/src/nile-auto-complete/nile-auto-complete.d.ts +1 -0
  155. package/dist/src/nile-auto-complete/nile-auto-complete.js +12 -2
  156. package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
  157. package/dist/src/nile-avatar/nile-avatar.d.ts +1 -0
  158. package/dist/src/nile-avatar/nile-avatar.js +1 -0
  159. package/dist/src/nile-avatar/nile-avatar.js.map +1 -1
  160. package/dist/src/nile-badge/nile-badge.d.ts +1 -0
  161. package/dist/src/nile-badge/nile-badge.js +1 -0
  162. package/dist/src/nile-badge/nile-badge.js.map +1 -1
  163. package/dist/src/nile-breadcrumb/nile-breadcrumb.d.ts +1 -0
  164. package/dist/src/nile-breadcrumb/nile-breadcrumb.js +5 -0
  165. package/dist/src/nile-breadcrumb/nile-breadcrumb.js.map +1 -1
  166. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.d.ts +1 -0
  167. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js +1 -0
  168. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js.map +1 -1
  169. package/dist/src/nile-button/nile-button.d.ts +1 -0
  170. package/dist/src/nile-button/nile-button.js +1 -0
  171. package/dist/src/nile-button/nile-button.js.map +1 -1
  172. package/dist/src/nile-button-toggle/nile-button-toggle.d.ts +1 -0
  173. package/dist/src/nile-button-toggle/nile-button-toggle.js +1 -0
  174. package/dist/src/nile-button-toggle/nile-button-toggle.js.map +1 -1
  175. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.d.ts +1 -0
  176. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.js +1 -0
  177. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.js.map +1 -1
  178. package/dist/src/nile-calendar/nile-calendar.css.js +4 -1
  179. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
  180. package/dist/src/nile-calendar/nile-calendar.d.ts +5 -1
  181. package/dist/src/nile-calendar/nile-calendar.js +34 -0
  182. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  183. package/dist/src/nile-calendar/nile-calendar.test.d.ts +6 -0
  184. package/dist/src/nile-calendar/nile-calendar.test.js +6 -0
  185. package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
  186. package/dist/src/nile-card/nile-card.d.ts +1 -0
  187. package/dist/src/nile-card/nile-card.js +1 -0
  188. package/dist/src/nile-card/nile-card.js.map +1 -1
  189. package/dist/src/nile-checkbox/nile-checkbox.d.ts +1 -0
  190. package/dist/src/nile-checkbox/nile-checkbox.js +1 -0
  191. package/dist/src/nile-checkbox/nile-checkbox.js.map +1 -1
  192. package/dist/src/nile-chip/nile-chip.d.ts +1 -0
  193. package/dist/src/nile-chip/nile-chip.js +5 -0
  194. package/dist/src/nile-chip/nile-chip.js.map +1 -1
  195. package/dist/src/nile-chip/nile-chip.test.js.map +1 -1
  196. package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -0
  197. package/dist/src/nile-code-editor/nile-code-editor.js +1 -0
  198. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  199. package/dist/src/nile-content-editor/nile-content-editor.d.ts +1 -0
  200. package/dist/src/nile-content-editor/nile-content-editor.js +1 -0
  201. package/dist/src/nile-content-editor/nile-content-editor.js.map +1 -1
  202. package/dist/src/nile-date-picker/nile-date-picker.d.ts +3 -0
  203. package/dist/src/nile-date-picker/nile-date-picker.js +24 -5
  204. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  205. package/dist/src/nile-dialog/nile-dialog.d.ts +1 -0
  206. package/dist/src/nile-dialog/nile-dialog.js +1 -0
  207. package/dist/src/nile-dialog/nile-dialog.js.map +1 -1
  208. package/dist/src/nile-drawer/nile-drawer.d.ts +1 -0
  209. package/dist/src/nile-drawer/nile-drawer.js +1 -0
  210. package/dist/src/nile-drawer/nile-drawer.js.map +1 -1
  211. package/dist/src/nile-empty-state/nile-empty-state.d.ts +1 -0
  212. package/dist/src/nile-empty-state/nile-empty-state.js +1 -0
  213. package/dist/src/nile-empty-state/nile-empty-state.js.map +1 -1
  214. package/dist/src/nile-icon-button/nile-icon-button.d.ts +1 -0
  215. package/dist/src/nile-icon-button/nile-icon-button.js +1 -0
  216. package/dist/src/nile-icon-button/nile-icon-button.js.map +1 -1
  217. package/dist/src/nile-input/nile-input.d.ts +1 -0
  218. package/dist/src/nile-input/nile-input.js +1 -0
  219. package/dist/src/nile-input/nile-input.js.map +1 -1
  220. package/dist/src/nile-link/nile-link.d.ts +1 -0
  221. package/dist/src/nile-link/nile-link.js +1 -0
  222. package/dist/src/nile-link/nile-link.js.map +1 -1
  223. package/dist/src/nile-list/nile-list.d.ts +1 -0
  224. package/dist/src/nile-list/nile-list.js +5 -0
  225. package/dist/src/nile-list/nile-list.js.map +1 -1
  226. package/dist/src/nile-list-item/nile-list-item.d.ts +1 -0
  227. package/dist/src/nile-list-item/nile-list-item.js +1 -0
  228. package/dist/src/nile-list-item/nile-list-item.js.map +1 -1
  229. package/dist/src/nile-menu/nile-menu.d.ts +1 -0
  230. package/dist/src/nile-menu/nile-menu.js +4 -0
  231. package/dist/src/nile-menu/nile-menu.js.map +1 -1
  232. package/dist/src/nile-menu-item/nile-menu-item.d.ts +2 -0
  233. package/dist/src/nile-menu-item/nile-menu-item.js +2 -0
  234. package/dist/src/nile-menu-item/nile-menu-item.js.map +1 -1
  235. package/dist/src/nile-option/nile-option.d.ts +2 -0
  236. package/dist/src/nile-option/nile-option.js +2 -0
  237. package/dist/src/nile-option/nile-option.js.map +1 -1
  238. package/dist/src/nile-popover/nile-popover.d.ts +1 -0
  239. package/dist/src/nile-popover/nile-popover.js +1 -0
  240. package/dist/src/nile-popover/nile-popover.js.map +1 -1
  241. package/dist/src/nile-popup/nile-popup.d.ts +2 -0
  242. package/dist/src/nile-popup/nile-popup.js +2 -0
  243. package/dist/src/nile-popup/nile-popup.js.map +1 -1
  244. package/dist/src/nile-radio-group/nile-radio-group.d.ts +1 -0
  245. package/dist/src/nile-radio-group/nile-radio-group.js +1 -0
  246. package/dist/src/nile-radio-group/nile-radio-group.js.map +1 -1
  247. package/dist/src/nile-radio-group/nile-radio-group.test.d.ts +2 -0
  248. package/dist/src/nile-radio-group/nile-radio-group.test.js +174 -0
  249. package/dist/src/nile-radio-group/nile-radio-group.test.js.map +1 -0
  250. package/dist/src/nile-select/nile-select.d.ts +1 -0
  251. package/dist/src/nile-select/nile-select.js +6 -37
  252. package/dist/src/nile-select/nile-select.js.map +1 -1
  253. package/dist/src/nile-select/nile-select.test.d.ts +6 -0
  254. package/dist/src/nile-select/nile-select.test.js +247 -0
  255. package/dist/src/nile-select/nile-select.test.js.map +1 -0
  256. package/dist/src/nile-slide-toggle/nile-slide-toggle.d.ts +1 -0
  257. package/dist/src/nile-slide-toggle/nile-slide-toggle.js +3 -2
  258. package/dist/src/nile-slide-toggle/nile-slide-toggle.js.map +1 -1
  259. package/dist/src/nile-split-panel/nile-split-panel.d.ts +1 -0
  260. package/dist/src/nile-split-panel/nile-split-panel.js +1 -0
  261. package/dist/src/nile-split-panel/nile-split-panel.js.map +1 -1
  262. package/dist/src/nile-split-panel/nile-split-panel.test.d.ts +1 -0
  263. package/dist/src/nile-split-panel/nile-split-panel.test.js +4 -0
  264. package/dist/src/nile-split-panel/nile-split-panel.test.js.map +1 -0
  265. package/dist/src/nile-stepper/nile-stepper.d.ts +1 -0
  266. package/dist/src/nile-stepper/nile-stepper.js +1 -0
  267. package/dist/src/nile-stepper/nile-stepper.js.map +1 -1
  268. package/dist/src/nile-stepper/nile-stepper.test.d.ts +4 -0
  269. package/dist/src/nile-stepper/nile-stepper.test.js +6 -164
  270. package/dist/src/nile-stepper/nile-stepper.test.js.map +1 -1
  271. package/dist/src/nile-tab/nile-tab.d.ts +1 -0
  272. package/dist/src/nile-tab/nile-tab.js +1 -0
  273. package/dist/src/nile-tab/nile-tab.js.map +1 -1
  274. package/dist/src/nile-tab-group/nile-tab-group.d.ts +1 -0
  275. package/dist/src/nile-tab-group/nile-tab-group.js +1 -0
  276. package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
  277. package/dist/src/nile-table-body/nile-table-body.d.ts +1 -0
  278. package/dist/src/nile-table-body/nile-table-body.js +1 -0
  279. package/dist/src/nile-table-body/nile-table-body.js.map +1 -1
  280. package/dist/src/nile-tag/nile-tag.d.ts +1 -0
  281. package/dist/src/nile-tag/nile-tag.js +1 -0
  282. package/dist/src/nile-tag/nile-tag.js.map +1 -1
  283. package/dist/src/nile-textarea/nile-textarea.d.ts +1 -0
  284. package/dist/src/nile-textarea/nile-textarea.js +1 -0
  285. package/dist/src/nile-textarea/nile-textarea.js.map +1 -1
  286. package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -1
  287. package/dist/src/nile-toast/nile-toast.d.ts +1 -0
  288. package/dist/src/nile-toast/nile-toast.js +1 -0
  289. package/dist/src/nile-toast/nile-toast.js.map +1 -1
  290. package/dist/src/nile-tooltip/nile-tooltip.d.ts +1 -0
  291. package/dist/src/nile-tooltip/nile-tooltip.js +1 -0
  292. package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
  293. package/dist/src/nile-tree/nile-tree.d.ts +1 -0
  294. package/dist/src/nile-tree/nile-tree.js +1 -0
  295. package/dist/src/nile-tree/nile-tree.js.map +1 -1
  296. package/dist/src/nile-tree/nile-tree.test.d.ts +2 -0
  297. package/dist/src/nile-tree/nile-tree.test.js +5 -0
  298. package/dist/src/nile-tree/nile-tree.test.js.map +1 -0
  299. package/dist/tsconfig.tsbuildinfo +1 -1
  300. package/package.json +1 -1
  301. package/src/nile-accordion/nile-accordion.ts +1 -0
  302. package/src/nile-auto-complete/nile-auto-complete.ts +13 -2
  303. package/src/nile-avatar/nile-avatar.ts +2 -0
  304. package/src/nile-badge/nile-badge.ts +2 -0
  305. package/src/nile-breadcrumb/nile-breadcrumb.ts +2 -0
  306. package/src/nile-breadcrumb-item/nile-breadcrumb-item.ts +2 -0
  307. package/src/nile-button/nile-button.ts +2 -0
  308. package/src/nile-button-toggle/nile-button-toggle.ts +2 -0
  309. package/src/nile-button-toggle-group/nile-button-toggle-group.ts +2 -0
  310. package/src/nile-calendar/nile-calendar.css.ts +4 -1
  311. package/src/nile-calendar/nile-calendar.test.ts +7 -0
  312. package/src/nile-calendar/nile-calendar.ts +33 -1
  313. package/src/nile-card/nile-card.ts +2 -0
  314. package/src/nile-checkbox/nile-checkbox.ts +2 -0
  315. package/src/nile-chip/nile-chip.test.ts +0 -1
  316. package/src/nile-chip/nile-chip.ts +6 -0
  317. package/src/nile-code-editor/nile-code-editor.ts +2 -0
  318. package/src/nile-content-editor/nile-content-editor.ts +2 -0
  319. package/src/nile-date-picker/nile-date-picker.ts +21 -5
  320. package/src/nile-dialog/nile-dialog.ts +2 -0
  321. package/src/nile-drawer/nile-drawer.ts +2 -0
  322. package/src/nile-empty-state/nile-empty-state.ts +2 -0
  323. package/src/nile-icon-button/nile-icon-button.ts +2 -0
  324. package/src/nile-input/nile-input.ts +2 -0
  325. package/src/nile-link/nile-link.ts +2 -0
  326. package/src/nile-list/nile-list.ts +2 -0
  327. package/src/nile-list-item/nile-list-item.ts +2 -0
  328. package/src/nile-menu/nile-menu.ts +6 -0
  329. package/src/nile-menu-item/nile-menu-item.ts +3 -0
  330. package/src/nile-option/nile-option.ts +3 -0
  331. package/src/nile-popover/nile-popover.ts +2 -0
  332. package/src/nile-popup/nile-popup.ts +3 -0
  333. package/src/nile-radio-group/nile-radio-group.test.ts +215 -0
  334. package/src/nile-radio-group/nile-radio-group.ts +2 -0
  335. package/src/nile-select/nile-select.test.ts +309 -0
  336. package/src/nile-select/nile-select.ts +7 -38
  337. package/src/nile-slide-toggle/nile-slide-toggle.ts +4 -2
  338. package/src/nile-split-panel/nile-split-panel.test.ts +7 -0
  339. package/src/nile-split-panel/nile-split-panel.ts +2 -0
  340. package/src/nile-stepper/nile-stepper.test.ts +12 -174
  341. package/src/nile-stepper/nile-stepper.ts +2 -0
  342. package/src/nile-tab/nile-tab.ts +2 -0
  343. package/src/nile-tab-group/nile-tab-group.ts +2 -0
  344. package/src/nile-table-body/nile-table-body.ts +2 -0
  345. package/src/nile-tag/nile-tag.ts +2 -0
  346. package/src/nile-textarea/nile-textarea.test.ts +1 -1
  347. package/src/nile-textarea/nile-textarea.ts +2 -0
  348. package/src/nile-toast/nile-toast.ts +2 -0
  349. package/src/nile-tooltip/nile-tooltip.ts +2 -0
  350. package/src/nile-tree/nile-tree.test.ts +9 -0
  351. package/src/nile-tree/nile-tree.ts +2 -0
@@ -0,0 +1,215 @@
1
+ import { html, fixture, expect } from '@open-wc/testing';
2
+ import './nile-radio-group';
3
+ import NileRadioGroup from './nile-radio-group';
4
+ import NileRadio from '../nile-radio/nile-radio';
5
+ import'../nile-radio/nile-radio';
6
+
7
+ describe('nile-radio-group', () => {
8
+ it('should render the radio group with radios', async () => {
9
+ const element = await fixture<NileRadioGroup>(html`
10
+ <nile-radio-group label="Select an option" name="options" value="2">
11
+ <nile-radio name="test" value="1" label="Radio 1"></nile-radio>
12
+ <nile-radio name="test" value="2" label="Radio 2"></nile-radio>
13
+ <nile-radio name="test" value="3" label="Radio 3"></nile-radio>
14
+ </nile-radio-group>
15
+ `);
16
+
17
+ const radios = element.querySelectorAll('nile-radio');
18
+ expect(radios.length).to.equal(3);
19
+ expect(element.label).to.equal('Select an option');
20
+ });
21
+
22
+ it('should select the correct radio based on value', async () => {
23
+ const element = await fixture<NileRadioGroup>(html`
24
+ <nile-radio-group label="Select an option" name="options" value="2">
25
+ <nile-radio name="test" value="1" label="Radio 1"></nile-radio>
26
+ <nile-radio name="test" value="2" label="Radio 2"></nile-radio>
27
+ <nile-radio name="test" value="3" label="Radio 3"></nile-radio>
28
+ </nile-radio-group>
29
+ `);
30
+
31
+ const selectedRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
32
+ expect(selectedRadio?.checked).to.be.true;
33
+ });
34
+
35
+ it('should emit change event when radio selection changes', async () => {
36
+ const element = await fixture<NileRadioGroup>(html`
37
+ <nile-radio-group label="Select an option" name="options" value="1">
38
+ <nile-radio name="test" value="1" label="Radio 1"></nile-radio>
39
+ <nile-radio name="test" value="2" label="Radio 2"></nile-radio>
40
+ </nile-radio-group>
41
+ `);
42
+
43
+ let changeEventFired = false;
44
+ element.addEventListener('change', () => {
45
+ changeEventFired = true;
46
+ });
47
+
48
+ const secondRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
49
+ secondRadio?.click(); // Simulate user clicking the second radio
50
+ await element.updateComplete;
51
+
52
+ expect(changeEventFired).to.be.true;
53
+ expect(element.value).to.equal('2');
54
+ });
55
+
56
+ it('should handle disabled radios correctly', async () => {
57
+ const element = await fixture<NileRadioGroup>(html`
58
+ <nile-radio-group label="Disabled Option" name="options">
59
+ <nile-radio name="test" value="1"> Radio 1 </nile-radio>
60
+ <nile-radio name="test" value="2" disabled islabelborder>Radio 2</nile-radio>
61
+ <nile-radio name="test" value="3" disabled>Radio 3</nile-radio>
62
+ <nile-radio name="test" value="4">Radio 4</nile-radio>
63
+ </nile-radio-group>
64
+ `);
65
+
66
+ const disabledRadios = element.querySelectorAll('nile-radio[disabled]');
67
+ expect(disabledRadios.length).to.equal(2);
68
+
69
+ const enabledRadio = element.querySelector<NileRadio>('nile-radio[value="1"]');
70
+ enabledRadio?.click(); // Simulate clicking the enabled radio
71
+ await element.updateComplete;
72
+
73
+ expect(element.value).to.equal('1'); // Should select the enabled radio
74
+ });
75
+
76
+ it('should not allow selection of disabled radio', async () => {
77
+ const element = await fixture<NileRadioGroup>(html`
78
+ <nile-radio-group label="Disabled Option" name="options">
79
+ <nile-radio name="test" value="1"> Radio 1 </nile-radio>
80
+ <nile-radio name="test" value="2" disabled>Radio 2</nile-radio>
81
+ <nile-radio name="test" value="3">Radio 3</nile-radio>
82
+ </nile-radio-group>
83
+ `);
84
+
85
+ const disabledRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
86
+ disabledRadio?.click(); // Attempt to click the disabled radio
87
+ await element.updateComplete;
88
+
89
+ expect(element.value).to.equal(''); // Should not change selection
90
+ });
91
+
92
+ it('should correctly handle the islabelborder property', async () => {
93
+ const element = await fixture<NileRadioGroup>(html`
94
+ <nile-radio-group label="Border Option" name="options" islabelborder>
95
+ <nile-radio name="test" value="1"> Radio 1 </nile-radio>
96
+ <nile-radio name="test" value="2"> Radio 2 </nile-radio>
97
+ </nile-radio-group>
98
+ `);
99
+
100
+ const radios = element.querySelectorAll('nile-radio');
101
+ radios.forEach(radio => {
102
+ expect(radio.islabelborder).to.be.true; // Ensure islabelborder is set
103
+ });
104
+ });
105
+
106
+ it('should focus the first radio when the label is clicked', async () => {
107
+ const element = await fixture<NileRadioGroup>(html`
108
+ <nile-radio-group label="Focus Test" name="options">
109
+ <nile-radio name="test" value="1"> Radio 1 </nile-radio>
110
+ <nile-radio name="test" value="2"> Radio 2 </nile-radio>
111
+ </nile-radio-group>
112
+ `);
113
+
114
+ const label = element.shadowRoot?.querySelector<HTMLElement>('label');
115
+ label?.click(); // Simulate clicking the label
116
+ await element.updateComplete;
117
+
118
+ const firstRadio = element.querySelector('nile-radio[value="1"]');
119
+ expect(document.activeElement).to.equal(firstRadio); // Should focus the first radio
120
+ });
121
+
122
+ it('should set required attribute correctly', async () => {
123
+ const element = await fixture<NileRadioGroup>(html`
124
+ <nile-radio-group label="Required Test" name="options" required>
125
+ <nile-radio name="test" value="1"> Radio 1 </nile-radio>
126
+ <nile-radio name="test" value="2"> Radio 2 </nile-radio>
127
+ </nile-radio-group>
128
+ `);
129
+
130
+ const validationInput = element.shadowRoot?.querySelector<HTMLInputElement>('.radio-group__validation-input');
131
+ expect(validationInput?.required).to.be.true; // Should be marked as required
132
+ });
133
+
134
+ it('should reflect the current value property correctly', async () => {
135
+ const element = await fixture<NileRadioGroup>(html`
136
+ <nile-radio-group label="Reflect Test" name="options" value="1">
137
+ <nile-radio name="test" value="1"> Radio 1 </nile-radio>
138
+ <nile-radio name="test" value="2"> Radio 2 </nile-radio>
139
+ </nile-radio-group>
140
+ `);
141
+
142
+ expect(element.value).to.equal('1'); // Check initial value
143
+ element.value = '2'; // Change value
144
+ await element.updateComplete;
145
+
146
+ expect(element.value).to.equal('2'); // Ensure value reflects the change
147
+ const selectedRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
148
+ expect(selectedRadio?.checked).to.be.true; // Check if the correct radio is selected
149
+ });
150
+
151
+ it('should toggle selection with arrow keys', async () => {
152
+ const element = await fixture<NileRadioGroup>(html`
153
+ <nile-radio-group label="Arrow Key Navigation" name="options">
154
+ <nile-radio name="test" value="1" label="Radio 1"></nile-radio>
155
+ <nile-radio name="test" value="2" label="Radio 2"></nile-radio>
156
+ <nile-radio name="test" value="3" label="Radio 3"></nile-radio>
157
+ </nile-radio-group>
158
+ `);
159
+ const slot=element.shadowRoot?.querySelector("fieldset > div > div:nth-child(2) > slot")
160
+
161
+ // Start by selecting the first radio button
162
+ const firstRadio = element.querySelector<NileRadio>('nile-radio[value="1"]');
163
+ firstRadio?.click();
164
+ await element.updateComplete;
165
+
166
+ // Simulate Arrow Right key press
167
+ const rightEvent = new KeyboardEvent('keydown', { key: 'ArrowRight' });
168
+ slot?.dispatchEvent(rightEvent);
169
+ await element.updateComplete;
170
+
171
+ // Check if the second radio is selected
172
+ const secondRadio = element.querySelector<NileRadio>('nile-radio[value="2"]');
173
+ expect(secondRadio?.checked).to.be.true;
174
+
175
+ // Simulate Arrow Right key press again
176
+ slot?.dispatchEvent(rightEvent);
177
+ await element.updateComplete;
178
+
179
+ // Check if the third radio is selected
180
+ const thirdRadio = element.querySelector<NileRadio>('nile-radio[value="3"]');
181
+ expect(thirdRadio?.checked).to.be.true;
182
+
183
+ // Simulate Arrow Left key press
184
+ const leftEvent = new KeyboardEvent('keydown', { key: 'ArrowLeft' });
185
+ slot?.dispatchEvent(leftEvent);
186
+ await element.updateComplete;
187
+
188
+ // Check if the second radio is selected again
189
+ expect(secondRadio?.checked).to.be.true;
190
+
191
+ // Simulate Arrow Left key press again
192
+ slot?.dispatchEvent(leftEvent);
193
+ await element.updateComplete;
194
+
195
+ // Check if the first radio is selected again
196
+ expect(firstRadio?.checked).to.be.true;
197
+
198
+ // Simulate Arrow Down key press (assuming vertical layout)
199
+ const downEvent = new KeyboardEvent('keydown', { key: 'ArrowDown' });
200
+ slot?.dispatchEvent(downEvent);
201
+ await element.updateComplete;
202
+
203
+ // Check if the second radio is selected again (depending on your layout)
204
+ expect(secondRadio?.checked).to.be.true;
205
+
206
+ // Simulate Arrow Up key press (assuming vertical layout)
207
+ const upEvent = new KeyboardEvent('keydown', { key: 'ArrowUp' });
208
+ slot?.dispatchEvent(upEvent);
209
+ await element.updateComplete;
210
+
211
+ // Check if the first radio is selected again
212
+ expect(firstRadio?.checked).to.be.true;
213
+ });
214
+
215
+ });
@@ -28,6 +28,8 @@ import type NileRadio from '../nile-radio/nile-radio';
28
28
  export class NileRadioGroup extends NileElement {
29
29
  static styles: CSSResultGroup = styles;
30
30
 
31
+ protected override BUBBLES: boolean=false;
32
+
31
33
  private readonly hasSlotController = new HasSlotController(this, 'help-text', 'label');
32
34
  private customValidityMessage = '';
33
35
 
@@ -0,0 +1,309 @@
1
+ import { expect, fixture, html, oneEvent, elementUpdated } from '@open-wc/testing';
2
+ import './nile-select'; // Assuming the component is registered and imported
3
+ import NileSelect from './nile-select';
4
+ import { NileOption } from '../nile-option';
5
+ import { NileInput } from '../nile-input';
6
+ import '../nile-option/nile-option';
7
+ import '../nile-input/nile-input';
8
+ import '../nile-popup/nile-popup';
9
+ import '../nile-tag/nile-tag';
10
+ import '../nile-checkbox/nile-checkbox';
11
+
12
+ const wait=(ms:number=50000)=>new Promise(resolve => setTimeout(resolve, ms))
13
+
14
+ const keyboardEvent = new KeyboardEvent('keydown', {
15
+ code: 'Enter',
16
+ key: 'Enter',
17
+ charCode: 13,
18
+ keyCode: 13,
19
+ view: window,
20
+ bubbles: true
21
+ });
22
+
23
+ const mouseUpEvent = new MouseEvent("mouseup", {
24
+ bubbles: true,
25
+ cancelable: true,
26
+ view: window
27
+ });
28
+
29
+ describe('NileSelect Component', () => {
30
+
31
+ it('should render the placeholder when no value is selected', async () => {
32
+ const el = await fixture<NileSelect>(html`<nile-select placeholder="Select an option..."></nile-select>`);
33
+ const displayInput = el.shadowRoot?.querySelector<HTMLInputElement>('.select__display-input');
34
+ expect(displayInput?.placeholder).to.equal('Select an option...');
35
+ });
36
+
37
+ it('should open the dropdown when clicked', async () => {
38
+ const el = await fixture<NileSelect>(html`
39
+ <nile-select>
40
+ <nile-option value="option1">Option 1</nile-option>
41
+ </nile-select>
42
+ `);
43
+
44
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
45
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
46
+ await elementUpdated(el);
47
+
48
+ const popup = el.shadowRoot?.querySelector('.select');
49
+ expect(popup?.classList.contains('select--open')).to.be.true;
50
+ });
51
+
52
+ it('should close the dropdown when clicked again', async () => {
53
+ const el = await fixture<NileSelect>(html`
54
+ <nile-select>
55
+ <nile-option value="option1">Option 1</nile-option>
56
+ </nile-select>
57
+ `);
58
+
59
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
60
+
61
+ // Open dropdown first
62
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
63
+ await elementUpdated(el);
64
+ expect(el.open).to.be.true;
65
+
66
+ // Click again to close dropdown
67
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
68
+ await elementUpdated(el);
69
+ expect(el.open).to.be.false;
70
+ });
71
+
72
+ it('should update the display label when an option is selected', async () => {
73
+ const el = await fixture<NileSelect>(html`
74
+ <nile-select>
75
+ <nile-option value="option1">Option 1</nile-option>
76
+ <nile-option value="option2">Option 2</nile-option>
77
+ </nile-select>
78
+ `);
79
+
80
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
81
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
82
+ await elementUpdated(el);
83
+
84
+ // Select the first option
85
+ const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
86
+ option1?.dispatchEvent(mouseUpEvent);
87
+ await elementUpdated(el);
88
+
89
+ const displayInput = el.shadowRoot?.querySelector<HTMLInputElement>('.select__display-input');
90
+ expect(displayInput?.value).to.equal('Option 1');
91
+ });
92
+
93
+ it('should handle multi-select and show selected tags', async () => {
94
+ const el = await fixture<NileSelect>(html`
95
+ <nile-select multiple>
96
+ <nile-option value="option1">Option 1</nile-option>
97
+ <nile-option value="option2">Option 2</nile-option>
98
+ <nile-option value="option3">Option 3</nile-option>
99
+ </nile-select>
100
+ `);
101
+
102
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
103
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
104
+ await elementUpdated(el);
105
+
106
+ // Select multiple options
107
+ const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
108
+ const option2 = el.querySelector<NileOption>('nile-option[value="option2"]');
109
+
110
+ option1?.dispatchEvent(mouseUpEvent);
111
+ option2?.dispatchEvent(mouseUpEvent);
112
+ await elementUpdated(el);
113
+
114
+ // Check if the tags are displayed
115
+ const tags = el.shadowRoot?.querySelectorAll('nile-tag');
116
+ expect(tags?.length).to.equal(2);
117
+ expect(tags?.[0].textContent?.trim()).to.equal('Option 1');
118
+ expect(tags?.[1].textContent?.trim()).to.equal('Option 2');
119
+ });
120
+
121
+ it('should clear selected value when clear button is clicked', async () => {
122
+ const el = await fixture<NileSelect>(html`
123
+ <nile-select clearable>
124
+ <nile-option value="option1">Option 1</nile-option>
125
+ </nile-select>
126
+ `);
127
+
128
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
129
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
130
+ await elementUpdated(el);
131
+
132
+ // Select an option
133
+ const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
134
+ option1?.click();
135
+ await elementUpdated(el);
136
+
137
+ // Clear the selected value
138
+ const clearButton = el.shadowRoot?.querySelector<HTMLButtonElement>('.select__clear');
139
+ clearButton?.click();
140
+ await elementUpdated(el);
141
+
142
+ const displayInput = el.shadowRoot?.querySelector<HTMLInputElement>('.select__display-input');
143
+ expect(displayInput?.value).to.be.empty;
144
+ });
145
+
146
+ it('should emit nile-change event when value changes', async () => {
147
+ const el = await fixture<NileSelect>(html`
148
+ <nile-select>
149
+ <nile-option value="option1">Option 1</nile-option>
150
+ <nile-option value="option2">Option 2</nile-option>
151
+ </nile-select>
152
+ `);
153
+
154
+ const listener = oneEvent(el, 'nile-change');
155
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
156
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
157
+ await elementUpdated(el);
158
+
159
+ const option1 = el.querySelector<NileOption>('nile-option[value="option1"]');
160
+ option1?.dispatchEvent(mouseUpEvent);
161
+
162
+ const event = await listener;
163
+ expect(event.detail.value).to.equal('option1');
164
+ });
165
+
166
+ it('should not open when disabled', async () => {
167
+ const el = await fixture<NileSelect>(html`
168
+ <nile-select disabled>
169
+ <nile-option value="option1">Option 1</nile-option>
170
+ </nile-select>
171
+ `);
172
+
173
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
174
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
175
+ await elementUpdated(el);
176
+
177
+ const popup = el.shadowRoot?.querySelector('.select');
178
+ expect(popup?.classList.contains('select--open')).to.be.false;
179
+ });
180
+
181
+ it('should display the search bar if searchEnabled is true', async () => {
182
+ const el = await fixture<NileSelect>(html`
183
+ <nile-select searchEnabled>
184
+ <nile-option value="option1">Option 1</nile-option>
185
+ <nile-option value="option2">Option 2</nile-option>
186
+ </nile-select>
187
+ `);
188
+
189
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>("div.select__combobox");
190
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
191
+ await elementUpdated(el);
192
+
193
+ const searchBar = el.shadowRoot?.querySelector('.select__search');
194
+ expect(searchBar).to.exist;
195
+ });
196
+
197
+ it('should show "No results found" when searching for an invalid query', async () => {
198
+ const el = await fixture<NileSelect>(html`
199
+ <nile-select searchEnabled>
200
+ <nile-option value="option1">Option 1</nile-option>
201
+ <nile-option value="option2">Option 2</nile-option>
202
+ </nile-select>
203
+ `);
204
+
205
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>('.select__combobox');
206
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
207
+ await elementUpdated(el);
208
+
209
+ // Simulate typing an invalid search query
210
+ const searchInput = el.shadowRoot?.querySelector<NileInput>('.select__search nile-input');
211
+ if (searchInput) {
212
+ searchInput.value = 'invalid';
213
+ searchInput.dispatchEvent(new CustomEvent('nile-input',{detail:{value:'invalid'}}));
214
+ }
215
+ await elementUpdated(el);
216
+
217
+ const noResultsMessage = el.shadowRoot?.querySelector('.select__no-results');
218
+ expect(noResultsMessage).to.exist;
219
+ expect(noResultsMessage?.textContent?.trim()).to.equal('No results found');
220
+ });
221
+
222
+
223
+ it('should allow selecting multiple options, display the selected count, and clear selections when clear button is clicked', async () => {
224
+ const el = await fixture<NileSelect>(html`
225
+ <nile-select multiple clearable>
226
+ <nile-option value="1">Option 1</nile-option>
227
+ <nile-option value="2">Option 2</nile-option>
228
+ <nile-option value="3">Option 3</nile-option>
229
+ </nile-select>
230
+ `);
231
+
232
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>('.select__combobox');
233
+ const options = el.querySelectorAll('nile-option');
234
+ const displayInput = el.shadowRoot?.querySelector<NileInput>('.select__display-input');
235
+
236
+ // Open the dropdown
237
+ combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
238
+ await el.updateComplete;
239
+
240
+ // Select the first two options
241
+ options[0].dispatchEvent(mouseUpEvent);
242
+ options[1].dispatchEvent(mouseUpEvent);
243
+ await el.updateComplete;
244
+
245
+ // Verify the display label reflects the number of selected options
246
+ expect(displayInput?.value).to.equal('2 selected');
247
+
248
+ // Check that the clearable button is visible
249
+ const clearButton = el.shadowRoot?.querySelector<HTMLElement>('.select__clear');
250
+ console.log(clearButton)
251
+ expect(clearButton).to.exist;
252
+
253
+ // Click the clear button
254
+ clearButton?.click();
255
+ await el.updateComplete;
256
+
257
+ // Verify the display label is cleared and placeholder is shown
258
+ expect(displayInput?.value).to.equal('');
259
+
260
+ // Verify that no options are selected
261
+ expect(Array.from(options).every(option => !option.selected)).to.be.true;
262
+ });
263
+
264
+ it('should allow selecting multiple options, clearing selections, and handling backspace to deselect the last selected option', async () => {
265
+ const el = await fixture<NileSelect>(html`
266
+ <nile-select multiple clearable>
267
+ <nile-option value="option1">Option 1</nile-option>
268
+ <nile-option value="option2">Option 2</nile-option>
269
+ <nile-option value="option3">Option 3</nile-option>
270
+ </nile-select>
271
+ `);
272
+
273
+ const combobox = el.shadowRoot?.querySelector<HTMLElement>('div.select__combobox');
274
+ const options = el.querySelectorAll('nile-option');
275
+ const displayInput = el.shadowRoot?.querySelector<NileInput>('.select__display-input');
276
+ const clearButton = el.shadowRoot?.querySelector<HTMLButtonElement>('.select__clear');
277
+
278
+ // Open the dropdown and select three options
279
+ combobox?.click();
280
+ await el.updateComplete;
281
+
282
+ options[0].dispatchEvent(mouseUpEvent);
283
+ options[1].dispatchEvent(mouseUpEvent);
284
+ options[2].dispatchEvent(mouseUpEvent);
285
+ await el.updateComplete;
286
+
287
+ // Verify that three options are selected
288
+ expect(displayInput?.value).to.equal('3 selected');
289
+ expect(Array.from(options).every(option => option.selected)).to.be.true;
290
+
291
+ // // Reopen dropdown, select three options again
292
+ // combobox?.dispatchEvent(keyboardEvent); // Simulate click to open the dropdown
293
+ // await el.updateComplete;
294
+
295
+ // options[0].dispatchEvent(mouseUpEvent);
296
+ // options[1].dispatchEvent(mouseUpEvent);
297
+ options[2].dispatchEvent(mouseUpEvent);
298
+ await el.updateComplete;
299
+
300
+ // Verify only the first two options are selected
301
+ expect(options[0].selected).to.be.true;
302
+ expect(options[1].selected).to.be.true;
303
+ expect(options[2].selected).to.be.false;
304
+
305
+ // Verify display label reflects two selected options
306
+ expect(displayInput?.value).to.equal('2 selected');
307
+ });
308
+
309
+ });
@@ -97,6 +97,8 @@ type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
97
97
  export class NileSelect extends NileElement implements NileFormControl {
98
98
  static styles: CSSResultGroup = styles;
99
99
 
100
+ protected override BUBBLES: boolean=false;
101
+
100
102
  // protected override BUBBLES=false;
101
103
 
102
104
  private readonly formControlController = new FormControlController(this, {
@@ -397,41 +399,6 @@ export class NileSelect extends NileElement implements NileFormControl {
397
399
  return;
398
400
  }
399
401
 
400
- // Navigate options
401
- if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {
402
- const allOptions = this.getAllOptions();
403
- const currentIndex = allOptions.indexOf(this.currentOption);
404
- let newIndex = Math.max(0, currentIndex);
405
-
406
- // Prevent scrolling
407
- event.preventDefault();
408
-
409
- // Open it
410
- if (!this.open) {
411
- this.show();
412
-
413
- // If an option is already selected, stop here because we want that one to remain highlighted when the listbox
414
- // opens for the first time
415
- if (this.currentOption) {
416
- return;
417
- }
418
- }
419
-
420
- if (event.key === 'ArrowDown') {
421
- newIndex = currentIndex + 1;
422
- if (newIndex > allOptions.length - 1) newIndex = 0;
423
- } else if (event.key === 'ArrowUp') {
424
- newIndex = currentIndex - 1;
425
- if (newIndex < 0) newIndex = allOptions.length - 1;
426
- } else if (event.key === 'Home') {
427
- newIndex = 0;
428
- } else if (event.key === 'End') {
429
- newIndex = allOptions.length - 1;
430
- }
431
-
432
- this.setCurrentOption(allOptions[newIndex]);
433
- }
434
-
435
402
  // All other "printable" keys trigger type to select
436
403
  if (event.key.length === 1 || event.key === 'Backspace') {
437
404
  const allOptions = this.getAllOptions();
@@ -1255,9 +1222,11 @@ export class NileSelect extends NileElement implements NileFormControl {
1255
1222
  clearable
1256
1223
  .value=${this.searchValue}
1257
1224
  placeholder="${this.internalSearchPlaceHolder}"
1258
- @nile-input=${this.handleSearchChange}
1259
- @nile-focus=${this.handleSearchFocus}
1260
- @nile-change="${this.onInputChange}"
1225
+ @nile-focus="${(e:CustomEvent)=>{this.handleSearchFocus();this.emit('nile-focus',e.detail)}}"
1226
+ @nile-blur="${(e:CustomEvent)=>{this.emit('nile-blur',e.detail)}}"
1227
+ @nile-change="${(e:CustomEvent)=>{this.onInputChange(e);this.emit('nile-change',e.detail)}}"
1228
+ @nile-input="${(e:CustomEvent)=>{this.handleSearchChange(e);this.emit('nile-input',e.detail)}}"
1229
+ @nile-clear=${(e:CustomEvent)=>this.emit('nile-clear',e.detail)}
1261
1230
  >
1262
1231
  <nile-icon name="search" slot="suffix"> </nile-icon>
1263
1232
  </nile-input>
@@ -8,15 +8,17 @@ import { classMap } from 'lit/directives/class-map.js';
8
8
  export class NileSlideToggle extends NileElement {
9
9
  public static styles: CSSResultGroup = styles;
10
10
 
11
+ protected override BUBBLES: boolean=false;
12
+
11
13
  @property({ type: String }) label = '';
12
14
 
13
15
  @property({ type: String }) sublabel = '';
14
16
 
15
- @property({ type: String, attribute:'text-position' }) textPosition:'left' | 'right' = 'right';
17
+ @property({ type: String, }) textPosition:'left' | 'right' = 'right';
16
18
 
17
19
  @property({ type: Boolean, reflect: true }) isChecked = false;
18
20
 
19
- @property({ type: Boolean, reflect: true, attribute:'full-width' }) fullWidth = false;
21
+ @property({ type: Boolean, reflect: true }) fullWidth = false;
20
22
 
21
23
  @property({ type: Boolean, reflect: true }) disabled = false;
22
24
 
@@ -0,0 +1,7 @@
1
+ import { expect, fixture, html, oneEvent } from '@open-wc/testing';
2
+ import './nile-split-panel'
3
+ import NileSplitPanel from './nile-split-panel';
4
+
5
+ describe('NileSplitPanel',()=>{
6
+
7
+ })
@@ -43,6 +43,8 @@ export class NileSplitPanel extends NileElement {
43
43
 
44
44
  static styles: CSSResultGroup = styles;
45
45
 
46
+ protected override BUBBLES: boolean=false;
47
+
46
48
  private cachedPositionInPixels: number;
47
49
  private resizeObserver: ResizeObserver;
48
50
  private size: number;