@aquera/nile-elements 0.0.81 → 0.0.82

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 (425) hide show
  1. package/README.md +9 -0
  2. package/demo/filenames.txt +1 -1
  3. package/demo/variables.css +54 -0
  4. package/demo/variables_v2.css +51 -0
  5. package/dist/{fixture-b1476eef.cjs.js → fixture-1a9fb5f1.cjs.js} +5 -5
  6. package/dist/fixture-1a9fb5f1.cjs.js.map +1 -0
  7. package/dist/{fixture-6f853cbd.esm.js → fixture-81e5a936.esm.js} +3 -3
  8. package/dist/index.cjs.js +1 -1
  9. package/dist/index.esm.js +1 -1
  10. package/dist/index.iife.js +854 -547
  11. package/dist/internal/animate.cjs.js +1 -1
  12. package/dist/internal/animate.cjs.js.map +1 -1
  13. package/dist/internal/animate.esm.js +1 -1
  14. package/dist/nile-avatar/nile-avatar.css.cjs.js +1 -1
  15. package/dist/nile-avatar/nile-avatar.css.cjs.js.map +1 -1
  16. package/dist/nile-avatar/nile-avatar.css.esm.js +7 -8
  17. package/dist/nile-avatar/nile-avatar.test.cjs.js +2 -0
  18. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -0
  19. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -0
  20. package/dist/nile-badge/index.cjs.js +1 -1
  21. package/dist/nile-badge/index.esm.js +1 -1
  22. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  23. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  24. package/dist/nile-badge/nile-badge.css.cjs.js +1 -1
  25. package/dist/nile-badge/nile-badge.css.cjs.js.map +1 -1
  26. package/dist/nile-badge/nile-badge.css.esm.js +47 -47
  27. package/dist/nile-badge/nile-badge.esm.js +1 -1
  28. package/dist/nile-badge/nile-badge.test.cjs.js +2 -0
  29. package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -0
  30. package/dist/nile-badge/nile-badge.test.esm.js +1 -0
  31. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js +1 -1
  32. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js.map +1 -1
  33. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.esm.js +3 -4
  34. package/dist/nile-button/index.cjs.js +1 -1
  35. package/dist/nile-button/index.esm.js +1 -1
  36. package/dist/nile-button/nile-button.cjs.js +1 -1
  37. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  38. package/dist/nile-button/nile-button.esm.js +1 -1
  39. package/dist/nile-button/nile-button.test.cjs.js +2 -0
  40. package/dist/nile-button/nile-button.test.cjs.js.map +1 -0
  41. package/dist/nile-button/nile-button.test.esm.js +4 -0
  42. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +2 -0
  43. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js.map +1 -0
  44. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +49 -0
  45. package/dist/nile-calendar/index.cjs.js +1 -1
  46. package/dist/nile-calendar/index.esm.js +1 -1
  47. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  48. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  49. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  50. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  51. package/dist/nile-calendar/nile-calendar.css.esm.js +122 -191
  52. package/dist/nile-calendar/nile-calendar.esm.js +135 -135
  53. package/dist/nile-card/nile-card.test.cjs.js +2 -0
  54. package/dist/nile-card/nile-card.test.cjs.js.map +1 -0
  55. package/dist/nile-card/nile-card.test.esm.js +51 -0
  56. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  57. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  58. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  59. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  60. package/dist/nile-date-picker/nile-date-picker.esm.js +1 -1
  61. package/dist/nile-dialog/index.cjs.js +1 -1
  62. package/dist/nile-dialog/index.esm.js +1 -1
  63. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  64. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  65. package/dist/nile-dialog/nile-dialog.css.cjs.js +1 -1
  66. package/dist/nile-dialog/nile-dialog.css.cjs.js.map +1 -1
  67. package/dist/nile-dialog/nile-dialog.css.esm.js +4 -1
  68. package/dist/nile-dialog/nile-dialog.esm.js +5 -4
  69. package/dist/nile-drawer/index.cjs.js +1 -1
  70. package/dist/nile-drawer/index.esm.js +1 -1
  71. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  72. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  73. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  74. package/dist/nile-drawer/nile-drawer.test.cjs.js +2 -0
  75. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -0
  76. package/dist/nile-drawer/nile-drawer.test.esm.js +18 -0
  77. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  78. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  79. package/dist/nile-error-message/nile-error-message.test.cjs.js +2 -0
  80. package/dist/nile-error-message/nile-error-message.test.cjs.js.map +1 -0
  81. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -0
  82. package/dist/nile-form-group/nile-form-group.test.cjs.js +2 -0
  83. package/dist/nile-form-group/nile-form-group.test.cjs.js.map +1 -0
  84. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -0
  85. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  86. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  87. package/dist/nile-icon/icons/svg/alert.cjs.js +2 -0
  88. package/dist/nile-icon/icons/svg/alert.cjs.js.map +1 -0
  89. package/dist/nile-icon/icons/svg/alert.esm.js +1 -0
  90. package/dist/nile-icon/icons/svg/file-check-02.cjs.js +2 -0
  91. package/dist/nile-icon/icons/svg/file-check-02.cjs.js.map +1 -0
  92. package/dist/nile-icon/icons/svg/file-check-02.esm.js +1 -0
  93. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  94. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  95. package/dist/nile-icon/icons/svg/monitor-01.cjs.js +2 -0
  96. package/dist/nile-icon/icons/svg/monitor-01.cjs.js.map +1 -0
  97. package/dist/nile-icon/icons/svg/monitor-01.esm.js +1 -0
  98. package/dist/nile-icon/index.cjs.js +1 -1
  99. package/dist/nile-icon/index.cjs.js.map +1 -1
  100. package/dist/nile-icon/index.esm.js +1 -1
  101. package/dist/nile-icon/nile-icon.test.cjs.js +2 -0
  102. package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -0
  103. package/dist/nile-icon/nile-icon.test.esm.js +1 -0
  104. package/dist/nile-icon-button/index.cjs.js +1 -1
  105. package/dist/nile-icon-button/index.esm.js +1 -1
  106. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  107. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  108. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  109. package/dist/nile-input/index.cjs.js +1 -1
  110. package/dist/nile-input/index.esm.js +1 -1
  111. package/dist/nile-input/nile-input.cjs.js +1 -1
  112. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  113. package/dist/nile-input/nile-input.esm.js +1 -1
  114. package/dist/nile-input/nile-input.test.cjs.js +2 -0
  115. package/dist/nile-input/nile-input.test.cjs.js.map +1 -0
  116. package/dist/nile-input/nile-input.test.esm.js +17 -0
  117. package/dist/nile-link/nile-link.test.cjs.js +2 -0
  118. package/dist/nile-link/nile-link.test.cjs.js.map +1 -0
  119. package/dist/nile-link/nile-link.test.esm.js +1 -0
  120. package/dist/nile-list/index.cjs.js +2 -0
  121. package/dist/nile-list/index.cjs.js.map +1 -0
  122. package/dist/nile-list/index.esm.js +1 -0
  123. package/dist/nile-list/nile-list.cjs.js +2 -0
  124. package/dist/nile-list/nile-list.cjs.js.map +1 -0
  125. package/dist/nile-list/nile-list.css.cjs.js +2 -0
  126. package/dist/nile-list/nile-list.css.cjs.js.map +1 -0
  127. package/dist/nile-list/nile-list.css.esm.js +8 -0
  128. package/dist/nile-list/nile-list.esm.js +3 -0
  129. package/dist/nile-list-item/index.cjs.js +2 -0
  130. package/dist/nile-list-item/index.cjs.js.map +1 -0
  131. package/dist/nile-list-item/index.esm.js +1 -0
  132. package/dist/nile-list-item/nile-list-item.cjs.js +2 -0
  133. package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -0
  134. package/dist/nile-list-item/nile-list-item.css.cjs.js +2 -0
  135. package/dist/nile-list-item/nile-list-item.css.cjs.js.map +1 -0
  136. package/dist/nile-list-item/nile-list-item.css.esm.js +54 -0
  137. package/dist/nile-list-item/nile-list-item.esm.js +21 -0
  138. package/dist/nile-loader/nile-loader.test.cjs.js +2 -0
  139. package/dist/nile-loader/nile-loader.test.cjs.js.map +1 -0
  140. package/dist/nile-loader/nile-loader.test.esm.js +1 -0
  141. package/dist/nile-menu/nile-menu.cjs.js +1 -1
  142. package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
  143. package/dist/nile-menu/nile-menu.css.cjs.js +1 -1
  144. package/dist/nile-menu/nile-menu.css.cjs.js.map +1 -1
  145. package/dist/nile-menu/nile-menu.css.esm.js +21 -7
  146. package/dist/nile-menu/nile-menu.esm.js +17 -15
  147. package/dist/nile-menu-item/index.cjs.js +1 -1
  148. package/dist/nile-menu-item/index.esm.js +1 -1
  149. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  150. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  151. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  152. package/dist/nile-option/index.cjs.js +1 -1
  153. package/dist/nile-option/index.esm.js +1 -1
  154. package/dist/nile-option/nile-option.cjs.js +1 -1
  155. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  156. package/dist/nile-option/nile-option.esm.js +1 -1
  157. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  158. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  159. package/dist/nile-popover/nile-popover.css.cjs.js +1 -1
  160. package/dist/nile-popover/nile-popover.css.cjs.js.map +1 -1
  161. package/dist/nile-popover/nile-popover.css.esm.js +6 -4
  162. package/dist/nile-popover/nile-popover.esm.js +4 -7
  163. package/dist/nile-popover/nile-popover.test.cjs.js +2 -0
  164. package/dist/nile-popover/nile-popover.test.cjs.js.map +1 -0
  165. package/dist/nile-popover/nile-popover.test.esm.js +21 -0
  166. package/dist/nile-popup/nile-popup.css.cjs.js +1 -1
  167. package/dist/nile-popup/nile-popup.css.cjs.js.map +1 -1
  168. package/dist/nile-popup/nile-popup.css.esm.js +8 -4
  169. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +2 -0
  170. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js.map +1 -0
  171. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -0
  172. package/dist/nile-radio/nile-radio.test.cjs.js +2 -0
  173. package/dist/nile-radio/nile-radio.test.cjs.js.map +1 -0
  174. package/dist/nile-radio/nile-radio.test.esm.js +1 -0
  175. package/dist/nile-select/index.cjs.js +1 -1
  176. package/dist/nile-select/index.esm.js +1 -1
  177. package/dist/nile-select/nile-select.cjs.js +1 -1
  178. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  179. package/dist/nile-select/nile-select.esm.js +3 -3
  180. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +2 -0
  181. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js.map +1 -0
  182. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -0
  183. package/dist/nile-tab/index.cjs.js +1 -1
  184. package/dist/nile-tab/index.esm.js +1 -1
  185. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  186. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  187. package/dist/nile-tab/nile-tab.esm.js +1 -1
  188. package/dist/nile-tab-group/index.cjs.js +1 -1
  189. package/dist/nile-tab-group/index.esm.js +1 -1
  190. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  191. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  192. package/dist/nile-tab-group/nile-tab-group.css.cjs.js +1 -1
  193. package/dist/nile-tab-group/nile-tab-group.css.cjs.js.map +1 -1
  194. package/dist/nile-tab-group/nile-tab-group.css.esm.js +2 -2
  195. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  196. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
  197. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
  198. package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +0 -4
  199. package/dist/nile-tag/index.cjs.js +1 -1
  200. package/dist/nile-tag/index.esm.js +1 -1
  201. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  202. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  203. package/dist/nile-tag/nile-tag.esm.js +1 -1
  204. package/dist/nile-textarea/nile-textarea.test.cjs.js +2 -0
  205. package/dist/nile-textarea/nile-textarea.test.cjs.js.map +1 -0
  206. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -0
  207. package/dist/nile-toast/index.cjs.js +1 -1
  208. package/dist/nile-toast/index.esm.js +1 -1
  209. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  210. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  211. package/dist/nile-toast/nile-toast.esm.js +1 -1
  212. package/dist/nile-tree/index.cjs.js +2 -0
  213. package/dist/nile-tree/index.cjs.js.map +1 -0
  214. package/dist/nile-tree/index.esm.js +1 -0
  215. package/dist/nile-tree/nile-tree.cjs.js +2 -0
  216. package/dist/nile-tree/nile-tree.cjs.js.map +1 -0
  217. package/dist/nile-tree/nile-tree.css.cjs.js +2 -0
  218. package/dist/nile-tree/nile-tree.css.cjs.js.map +1 -0
  219. package/dist/nile-tree/nile-tree.css.esm.js +36 -0
  220. package/dist/nile-tree/nile-tree.esm.js +13 -0
  221. package/dist/nile-tree-item/index.cjs.js +2 -0
  222. package/dist/nile-tree-item/index.cjs.js.map +1 -0
  223. package/dist/nile-tree-item/index.esm.js +1 -0
  224. package/dist/nile-tree-item/nile-tree-item.cjs.js +2 -0
  225. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -0
  226. package/dist/nile-tree-item/nile-tree-item.css.cjs.js +2 -0
  227. package/dist/nile-tree-item/nile-tree-item.css.cjs.js.map +1 -0
  228. package/dist/nile-tree-item/nile-tree-item.css.esm.js +164 -0
  229. package/dist/nile-tree-item/nile-tree-item.esm.js +63 -0
  230. package/dist/src/index.d.ts +4 -0
  231. package/dist/src/index.js +4 -0
  232. package/dist/src/index.js.map +1 -1
  233. package/dist/src/nile-avatar/nile-avatar.css.js +5 -6
  234. package/dist/src/nile-avatar/nile-avatar.css.js.map +1 -1
  235. package/dist/src/nile-avatar/nile-avatar.test.d.ts +1 -0
  236. package/dist/src/nile-avatar/nile-avatar.test.js +58 -0
  237. package/dist/src/nile-avatar/nile-avatar.test.js.map +1 -0
  238. package/dist/src/nile-badge/nile-badge.css.js +45 -45
  239. package/dist/src/nile-badge/nile-badge.css.js.map +1 -1
  240. package/dist/src/nile-badge/nile-badge.test.d.ts +1 -0
  241. package/dist/src/nile-badge/nile-badge.test.js +42 -0
  242. package/dist/src/nile-badge/nile-badge.test.js.map +1 -0
  243. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js +3 -4
  244. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js.map +1 -1
  245. package/dist/src/nile-button/nile-button.test.d.ts +1 -0
  246. package/dist/src/nile-button/nile-button.test.js +86 -0
  247. package/dist/src/nile-button/nile-button.test.js.map +1 -0
  248. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.d.ts +2 -0
  249. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js +108 -0
  250. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js.map +1 -0
  251. package/dist/src/nile-calendar/nile-calendar.css.js +122 -191
  252. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
  253. package/dist/src/nile-calendar/nile-calendar.d.ts +8 -0
  254. package/dist/src/nile-calendar/nile-calendar.js +164 -167
  255. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  256. package/dist/src/nile-card/nile-card.test.d.ts +1 -0
  257. package/dist/src/nile-card/nile-card.test.js +69 -0
  258. package/dist/src/nile-card/nile-card.test.js.map +1 -0
  259. package/dist/src/nile-date-picker/nile-date-picker.js +1 -0
  260. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  261. package/dist/src/nile-dialog/nile-dialog.css.js +4 -1
  262. package/dist/src/nile-dialog/nile-dialog.css.js.map +1 -1
  263. package/dist/src/nile-dialog/nile-dialog.js +4 -3
  264. package/dist/src/nile-dialog/nile-dialog.js.map +1 -1
  265. package/dist/src/nile-drawer/nile-drawer.test.d.ts +1 -0
  266. package/dist/src/nile-drawer/nile-drawer.test.js +88 -0
  267. package/dist/src/nile-drawer/nile-drawer.test.js.map +1 -0
  268. package/dist/src/nile-error-message/nile-error-message.test.d.ts +1 -0
  269. package/dist/src/nile-error-message/nile-error-message.test.js +61 -0
  270. package/dist/src/nile-error-message/nile-error-message.test.js.map +1 -0
  271. package/dist/src/nile-form-group/nile-form-group.test.d.ts +1 -0
  272. package/dist/src/nile-form-group/nile-form-group.test.js +55 -0
  273. package/dist/src/nile-form-group/nile-form-group.test.js.map +1 -0
  274. package/dist/src/nile-icon/icons/svg/alert.d.ts +5 -0
  275. package/dist/src/nile-icon/icons/svg/alert.js +5 -0
  276. package/dist/src/nile-icon/icons/svg/alert.js.map +1 -0
  277. package/dist/src/nile-icon/icons/svg/file-check-02.d.ts +5 -0
  278. package/dist/src/nile-icon/icons/svg/file-check-02.js +5 -0
  279. package/dist/src/nile-icon/icons/svg/file-check-02.js.map +1 -0
  280. package/dist/src/nile-icon/icons/svg/index.d.ts +3 -0
  281. package/dist/src/nile-icon/icons/svg/index.js +3 -0
  282. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  283. package/dist/src/nile-icon/icons/svg/monitor-01.d.ts +5 -0
  284. package/dist/src/nile-icon/icons/svg/monitor-01.js +5 -0
  285. package/dist/src/nile-icon/icons/svg/monitor-01.js.map +1 -0
  286. package/dist/src/nile-icon/nile-icon.test.d.ts +1 -0
  287. package/dist/src/nile-icon/nile-icon.test.js +45 -0
  288. package/dist/src/nile-icon/nile-icon.test.js.map +1 -0
  289. package/dist/src/nile-input/nile-input.test.d.ts +1 -0
  290. package/dist/src/nile-input/nile-input.test.js +139 -0
  291. package/dist/src/nile-input/nile-input.test.js.map +1 -0
  292. package/dist/src/nile-link/nile-link.test.d.ts +1 -0
  293. package/dist/src/nile-link/nile-link.test.js +72 -0
  294. package/dist/src/nile-link/nile-link.test.js.map +1 -0
  295. package/dist/src/nile-list/index.d.ts +1 -0
  296. package/dist/src/nile-list/index.js +2 -0
  297. package/dist/src/nile-list/index.js.map +1 -0
  298. package/dist/src/nile-list/nile-list.css.d.ts +12 -0
  299. package/dist/src/nile-list/nile-list.css.js +20 -0
  300. package/dist/src/nile-list/nile-list.css.js.map +1 -0
  301. package/dist/src/nile-list/nile-list.d.ts +33 -0
  302. package/dist/src/nile-list/nile-list.js +47 -0
  303. package/dist/src/nile-list/nile-list.js.map +1 -0
  304. package/dist/src/nile-list-item/index.d.ts +1 -0
  305. package/dist/src/nile-list-item/index.js +2 -0
  306. package/dist/src/nile-list-item/index.js.map +1 -0
  307. package/dist/src/nile-list-item/nile-list-item.css.d.ts +12 -0
  308. package/dist/src/nile-list-item/nile-list-item.css.js +66 -0
  309. package/dist/src/nile-list-item/nile-list-item.css.js.map +1 -0
  310. package/dist/src/nile-list-item/nile-list-item.d.ts +38 -0
  311. package/dist/src/nile-list-item/nile-list-item.js +96 -0
  312. package/dist/src/nile-list-item/nile-list-item.js.map +1 -0
  313. package/dist/src/nile-loader/nile-loader.test.d.ts +1 -0
  314. package/dist/src/nile-loader/nile-loader.test.js +39 -0
  315. package/dist/src/nile-loader/nile-loader.test.js.map +1 -0
  316. package/dist/src/nile-menu/nile-menu.css.js +19 -5
  317. package/dist/src/nile-menu/nile-menu.css.js.map +1 -1
  318. package/dist/src/nile-menu/nile-menu.d.ts +1 -0
  319. package/dist/src/nile-menu/nile-menu.js +25 -14
  320. package/dist/src/nile-menu/nile-menu.js.map +1 -1
  321. package/dist/src/nile-popover/nile-popover.css.js +6 -4
  322. package/dist/src/nile-popover/nile-popover.css.js.map +1 -1
  323. package/dist/src/nile-popover/nile-popover.d.ts +1 -0
  324. package/dist/src/nile-popover/nile-popover.js +7 -6
  325. package/dist/src/nile-popover/nile-popover.js.map +1 -1
  326. package/dist/src/nile-popover/nile-popover.test.d.ts +1 -0
  327. package/dist/src/nile-popover/nile-popover.test.js +73 -0
  328. package/dist/src/nile-popover/nile-popover.test.js.map +1 -0
  329. package/dist/src/nile-popup/nile-popup.css.d.ts +5 -5
  330. package/dist/src/nile-popup/nile-popup.css.js +13 -9
  331. package/dist/src/nile-popup/nile-popup.css.js.map +1 -1
  332. package/dist/src/nile-progress-bar/nile-progress-bar.test.d.ts +1 -0
  333. package/dist/src/nile-progress-bar/nile-progress-bar.test.js +48 -0
  334. package/dist/src/nile-progress-bar/nile-progress-bar.test.js.map +1 -0
  335. package/dist/src/nile-radio/nile-radio.test.d.ts +1 -0
  336. package/dist/src/nile-radio/nile-radio.test.js +71 -0
  337. package/dist/src/nile-radio/nile-radio.test.js.map +1 -0
  338. package/dist/src/nile-select/nile-select.d.ts +1 -0
  339. package/dist/src/nile-select/nile-select.js +5 -1
  340. package/dist/src/nile-select/nile-select.js.map +1 -1
  341. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.d.ts +1 -0
  342. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js +54 -0
  343. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js.map +1 -0
  344. package/dist/src/nile-tab-group/nile-tab-group.css.js +2 -2
  345. package/dist/src/nile-tab-group/nile-tab-group.css.js.map +1 -1
  346. package/dist/src/nile-tab-group/nile-tab-group.js +16 -15
  347. package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
  348. package/dist/src/nile-table-header-item/nile-table-header-item.css.js +0 -4
  349. package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
  350. package/dist/src/nile-textarea/nile-textarea.test.d.ts +1 -0
  351. package/dist/src/nile-textarea/nile-textarea.test.js +87 -0
  352. package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -0
  353. package/dist/src/nile-tree/index.d.ts +1 -0
  354. package/dist/src/nile-tree/index.js +2 -0
  355. package/dist/src/nile-tree/index.js.map +1 -0
  356. package/dist/src/nile-tree/nile-tree.css.d.ts +12 -0
  357. package/dist/src/nile-tree/nile-tree.css.js +48 -0
  358. package/dist/src/nile-tree/nile-tree.css.js.map +1 -0
  359. package/dist/src/nile-tree/nile-tree.d.ts +69 -0
  360. package/dist/src/nile-tree/nile-tree.js +376 -0
  361. package/dist/src/nile-tree/nile-tree.js.map +1 -0
  362. package/dist/src/nile-tree-item/index.d.ts +1 -0
  363. package/dist/src/nile-tree-item/index.js +2 -0
  364. package/dist/src/nile-tree-item/index.js.map +1 -0
  365. package/dist/src/nile-tree-item/nile-tree-item.css.d.ts +12 -0
  366. package/dist/src/nile-tree-item/nile-tree-item.css.js +176 -0
  367. package/dist/src/nile-tree-item/nile-tree-item.css.js.map +1 -0
  368. package/dist/src/nile-tree-item/nile-tree-item.d.ts +96 -0
  369. package/dist/src/nile-tree-item/nile-tree-item.js +324 -0
  370. package/dist/src/nile-tree-item/nile-tree-item.js.map +1 -0
  371. package/dist/tsconfig.tsbuildinfo +1 -1
  372. package/package.json +71 -2
  373. package/plopfile.js +11 -0
  374. package/src/index.ts +5 -1
  375. package/src/nile-avatar/nile-avatar.css.ts +5 -6
  376. package/src/nile-avatar/nile-avatar.test.ts +65 -0
  377. package/src/nile-badge/nile-badge.css.ts +45 -45
  378. package/src/nile-badge/nile-badge.test.ts +48 -0
  379. package/src/nile-breadcrumb-item/nile-breadcrumb-item.css.ts +3 -4
  380. package/src/nile-button/nile-button.test.ts +117 -0
  381. package/src/nile-button-toggle-group/nile-button-toggle-group.test.ts +130 -0
  382. package/src/nile-calendar/nile-calendar.css.ts +122 -191
  383. package/src/nile-calendar/nile-calendar.ts +170 -213
  384. package/src/nile-card/nile-card.test.ts +74 -0
  385. package/src/nile-date-picker/nile-date-picker.ts +5 -6
  386. package/src/nile-dialog/nile-dialog.css.ts +4 -1
  387. package/src/nile-dialog/nile-dialog.ts +4 -4
  388. package/src/nile-drawer/nile-drawer.test.ts +106 -0
  389. package/src/nile-error-message/nile-error-message.test.ts +69 -0
  390. package/src/nile-form-group/nile-form-group.test.ts +63 -0
  391. package/src/nile-icon/icons/svg/alert.ts +5 -0
  392. package/src/nile-icon/icons/svg/file-check-02.ts +5 -0
  393. package/src/nile-icon/icons/svg/index.ts +3 -0
  394. package/src/nile-icon/icons/svg/monitor-01.ts +5 -0
  395. package/src/nile-icon/nile-icon.test.ts +53 -0
  396. package/src/nile-input/nile-input.test.ts +160 -0
  397. package/src/nile-link/nile-link.test.ts +83 -0
  398. package/src/nile-list/index.ts +1 -0
  399. package/src/nile-list/nile-list.css.ts +22 -0
  400. package/src/nile-list/nile-list.ts +64 -0
  401. package/src/nile-list-item/index.ts +1 -0
  402. package/src/nile-list-item/nile-list-item.css.ts +68 -0
  403. package/src/nile-list-item/nile-list-item.ts +104 -0
  404. package/src/nile-loader/nile-loader.test.ts +45 -0
  405. package/src/nile-menu/nile-menu.css.ts +19 -5
  406. package/src/nile-menu/nile-menu.ts +27 -17
  407. package/src/nile-popover/nile-popover.css.ts +6 -4
  408. package/src/nile-popover/nile-popover.test.ts +86 -0
  409. package/src/nile-popover/nile-popover.ts +7 -10
  410. package/src/nile-popup/nile-popup.css.ts +14 -10
  411. package/src/nile-progress-bar/nile-progress-bar.test.ts +55 -0
  412. package/src/nile-radio/nile-radio.test.ts +81 -0
  413. package/src/nile-select/nile-select.ts +3 -1
  414. package/src/nile-slide-toggle/nile-slide-toggle.test.ts +61 -0
  415. package/src/nile-tab-group/nile-tab-group.css.ts +2 -2
  416. package/src/nile-tab-group/nile-tab-group.ts +2 -1
  417. package/src/nile-table-header-item/nile-table-header-item.css.ts +0 -4
  418. package/src/nile-textarea/nile-textarea.test.ts +102 -0
  419. package/src/nile-tree/index.ts +1 -0
  420. package/src/nile-tree/nile-tree.css.ts +50 -0
  421. package/src/nile-tree/nile-tree.ts +433 -0
  422. package/src/nile-tree-item/index.ts +1 -0
  423. package/src/nile-tree-item/nile-tree-item.css.ts +178 -0
  424. package/src/nile-tree-item/nile-tree-item.ts +330 -0
  425. package/dist/fixture-b1476eef.cjs.js.map +0 -1
@@ -21,6 +21,7 @@ let NileMenu = class NileMenu extends NileElement {
21
21
  this.searchValue = '';
22
22
  this.searchWidth = 0;
23
23
  this.searchEnabled = false;
24
+ this.customSearch = false;
24
25
  this.showNoResults = false;
25
26
  this.noResultsMessage = 'No results found';
26
27
  }
@@ -132,6 +133,11 @@ let NileMenu = class NileMenu extends NileElement {
132
133
  }
133
134
  handleSearchChange(e) {
134
135
  let items = this.getAllItems();
136
+ let searchValue = e.target.value;
137
+ if (this.customSearch) {
138
+ this.emit('nile-search-value', { value: searchValue });
139
+ return;
140
+ }
135
141
  let counter = 0;
136
142
  items.map(curr_item => {
137
143
  this.searchWidth = Math.max(this.searchWidth, curr_item.offsetWidth);
@@ -147,23 +153,24 @@ let NileMenu = class NileMenu extends NileElement {
147
153
  }
148
154
  render() {
149
155
  return html `
150
- <div>
151
- ${this.searchEnabled
152
- ? html `<div class="search__wrapper" part="search__wrapper">
153
- <nile-input
154
- size="medium"
155
- style=${this.searchWidth
156
+ ${this.searchEnabled
157
+ ? html `<div class="search__wrapper" part="search__wrapper" >
158
+ <nile-input
159
+ size="medium"
160
+ style=${this.searchWidth
156
161
  ? `width: ${this.searchWidth}px;`
157
162
  : 'width: 100%;'}
158
- .value=${this.searchValue}
159
- placeholder="Search..."
160
- @nile-input=${this.handleSearchChange}
161
- part="menu__input"
162
- >
163
- <nile-icon name="search" slot="suffix"> </nile-icon>
164
- </nile-input>
165
- </div>`
163
+ .value=${this.searchValue}
164
+ placeholder="Search..."
165
+ @nile-input=${this.handleSearchChange}
166
+ part="menu__input"
167
+ clearable
168
+ >
169
+ <nile-icon name="search" slot="suffix"> </nile-icon>
170
+ </nile-input>
171
+ </div>`
166
172
  : html ``}
173
+ <div class="menu__items-wrapper">
167
174
  ${this.showNoResults
168
175
  ? html ` <nile-menu-item>${this.noResultsMessage}</nile-menu-item> `
169
176
  : ''}
@@ -175,6 +182,7 @@ let NileMenu = class NileMenu extends NileElement {
175
182
  }}
176
183
  ></slot>
177
184
  <slot
185
+ class="menu__item-wrapper"
178
186
  @slotchange=${this.handleSlotChange}
179
187
  @click=${this.handleClick}
180
188
  @keydown=${this.handleKeyDown}
@@ -194,6 +202,9 @@ __decorate([
194
202
  __decorate([
195
203
  property({ type: Boolean, reflect: true })
196
204
  ], NileMenu.prototype, "searchEnabled", void 0);
205
+ __decorate([
206
+ property({ type: Boolean, reflect: true })
207
+ ], NileMenu.prototype, "customSearch", void 0);
197
208
  __decorate([
198
209
  property({ type: Boolean })
199
210
  ], NileMenu.prototype, "showNoResults", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"nile-menu.js","sourceRoot":"","sources":["../../../src/nile-menu/nile-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators.js';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup } from 'lit';\nimport type NileMenuItem from '../nile-menu-item/nile-menu-item';\nimport { styles } from './nile-menu.css';\n\n/**\n * An nile-menu element.\n * @summary Menus provide a list of options for the user to choose from.\n *\n * @slot - The menu's content, including menu items, menu labels, and dividers.\n *\n * @event nile-select - Emitted when a menu item is selected.\n * @fires count-changed - Indicates when the count changes\n * @slot - This element has a slot\n * @csspart button - The button\n */\n\n@customElement('nile-menu')\nexport class NileMenu extends NileElement {\n static styles: CSSResultGroup = styles;\n @state() searchValue: string = '';\n @state() searchWidth: number = 0;\n\n @property({ type: Boolean, reflect: true }) searchEnabled = false;\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n @query('slot:not([name])') defaultSlot!: HTMLSlotElement;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n }\n\n private handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const item = target.closest('nile-menu-item');\n\n if (item?.hasSubMenu) {\n return;\n }\n\n // if (!item || item.disabled || item.inert) {\n if (!item || item.disabled) {\n return;\n }\n\n if (item.type === 'checkbox') {\n item.checked = !item.checked;\n }\n\n this.emit('nile-select', { value: item.value });\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n // Make a selection when pressing enter\n if (event.key === 'Enter') {\n const item = this.getCurrentItem();\n event.preventDefault();\n\n // Simulate a click to support @click handlers on menu items that also work with the keyboard\n item?.click();\n }\n\n // Prevent scrolling when space is pressed\n if (event.key === ' ') {\n event.preventDefault();\n }\n\n // Move the selection when pressing down or up\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const items = this.getAllItems();\n const activeItem = this.getCurrentItem();\n let index = activeItem ? items.indexOf(activeItem) : 0;\n\n if (items.length > 0) {\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n index++;\n } else if (event.key === 'ArrowUp') {\n index--;\n } else if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = items.length - 1;\n }\n\n if (index < 0) {\n index = items.length - 1;\n }\n if (index > items.length - 1) {\n index = 0;\n }\n\n this.setCurrentItem(items[index]);\n items[index].focus();\n }\n }\n }\n\n private handleMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement;\n\n if (this.isMenuItem(target)) {\n this.setCurrentItem(target as NileMenuItem);\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllItems();\n\n // Reset the roving tab index when the slotted items change\n if (items.length > 0) {\n this.setCurrentItem(items[0]);\n }\n }\n\n private isMenuItem(item: HTMLElement) {\n return (\n item.tagName.toLowerCase() === 'nile-menu-item' ||\n ['menuitem', 'menuitemcheckbox', 'menuitemradio'].includes(\n item.getAttribute('role') ?? ''\n )\n );\n }\n\n /** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */\n getAllItems() {\n return [...this.defaultSlot.assignedElements({ flatten: true })].filter(\n (el: HTMLElement) => {\n if (!this.isMenuItem(el)) {\n // if (el.inert || !this.isMenuItem(el)) {\n return false;\n }\n return true;\n }\n ) as NileMenuItem[];\n }\n\n /**\n * @internal Gets the current menu item, which is the menu item that has `tabindex=\"0\"` within the roving tab index.\n * The menu item may or may not have focus, but for keyboard interaction purposes it's considered the \"active\" item.\n */\n getCurrentItem() {\n return this.getAllItems().find(i => i.getAttribute('tabindex') === '0');\n }\n\n /**\n * @internal Sets the current menu item to the specified element. This sets `tabindex=\"0\"` on the target element and\n * `tabindex=\"-1\"` to all other items. This method must be called prior to setting focus on a menu item.\n */\n setCurrentItem(item: NileMenuItem) {\n const items = this.getAllItems();\n\n // Update tab indexes\n items.forEach(i => {\n i.setAttribute('tabindex', i === item ? '0' : '-1');\n });\n }\n\n private handleSearchChange(e: any) {\n let items = this.getAllItems();\n let counter = 0;\n items.map(curr_item => {\n this.searchWidth = Math.max(this.searchWidth, curr_item.offsetWidth);\n if (\n curr_item.innerText.toLowerCase().includes(e.target.value.toLowerCase())\n ) {\n curr_item.style.display = 'block';\n counter++;\n } else {\n curr_item.style.display = 'none';\n }\n });\n this.showNoResults = counter === 0;\n }\n\n render() {\n return html`\n <div>\n ${this.searchEnabled\n ? html`<div class=\"search__wrapper\" part=\"search__wrapper\">\n <nile-input\n size=\"medium\"\n style=${this.searchWidth\n ? `width: ${this.searchWidth}px;`\n : 'width: 100%;'}\n .value=${this.searchValue}\n placeholder=\"Search...\"\n @nile-input=${this.handleSearchChange}\n part=\"menu__input\"\n >\n <nile-icon name=\"search\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>`\n : html``}\n ${this.showNoResults\n ? html` <nile-menu-item>${this.noResultsMessage}</nile-menu-item> `\n : ''}\n\n <slot\n name=\"menu__header\"\n @click=${(e: Event) => {\n e.stopPropagation();\n }}\n ></slot>\n <slot\n @slotchange=${this.handleSlotChange}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n ></slot>\n </div>\n `;\n }\n}\nexport default NileMenu;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-menu': NileMenu;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-menu.js","sourceRoot":"","sources":["../../../src/nile-menu/nile-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators.js';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup } from 'lit';\nimport type NileMenuItem from '../nile-menu-item/nile-menu-item';\nimport { styles } from './nile-menu.css';\n\n/**\n * An nile-menu element.\n * @summary Menus provide a list of options for the user to choose from.\n *\n * @slot - The menu's content, including menu items, menu labels, and dividers.\n *\n * @event nile-select - Emitted when a menu item is selected.\n * @fires count-changed - Indicates when the count changes\n * @slot - This element has a slot\n * @csspart button - The button\n */\n\n@customElement('nile-menu')\nexport class NileMenu extends NileElement {\n static styles: CSSResultGroup = styles;\n @state() searchValue: string = '';\n @state() searchWidth: number = 0;\n\n @property({ type: Boolean, reflect: true }) searchEnabled = false;\n @property({ type: Boolean, reflect: true }) customSearch = false;\n\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n @query('slot:not([name])') defaultSlot!: HTMLSlotElement;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n }\n\n private handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const item = target.closest('nile-menu-item');\n\n if (item?.hasSubMenu) {\n return;\n }\n\n // if (!item || item.disabled || item.inert) {\n if (!item || item.disabled) {\n return;\n }\n\n if (item.type === 'checkbox') {\n item.checked = !item.checked;\n }\n\n this.emit('nile-select', { value: item.value });\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n // Make a selection when pressing enter\n if (event.key === 'Enter') {\n const item = this.getCurrentItem();\n event.preventDefault();\n\n // Simulate a click to support @click handlers on menu items that also work with the keyboard\n item?.click();\n }\n\n // Prevent scrolling when space is pressed\n if (event.key === ' ') {\n event.preventDefault();\n }\n\n // Move the selection when pressing down or up\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const items = this.getAllItems();\n const activeItem = this.getCurrentItem();\n let index = activeItem ? items.indexOf(activeItem) : 0;\n\n if (items.length > 0) {\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n index++;\n } else if (event.key === 'ArrowUp') {\n index--;\n } else if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = items.length - 1;\n }\n\n if (index < 0) {\n index = items.length - 1;\n }\n if (index > items.length - 1) {\n index = 0;\n }\n\n this.setCurrentItem(items[index]);\n items[index].focus();\n }\n }\n }\n\n private handleMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement;\n\n if (this.isMenuItem(target)) {\n this.setCurrentItem(target as NileMenuItem);\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllItems();\n\n // Reset the roving tab index when the slotted items change\n if (items.length > 0) {\n this.setCurrentItem(items[0]);\n }\n }\n\n private isMenuItem(item: HTMLElement) {\n return (\n item.tagName.toLowerCase() === 'nile-menu-item' ||\n ['menuitem', 'menuitemcheckbox', 'menuitemradio'].includes(\n item.getAttribute('role') ?? ''\n )\n );\n }\n\n /** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */\n getAllItems() {\n return [...this.defaultSlot.assignedElements({ flatten: true })].filter(\n (el: HTMLElement) => {\n if (!this.isMenuItem(el)) {\n // if (el.inert || !this.isMenuItem(el)) {\n return false;\n }\n return true;\n }\n ) as NileMenuItem[];\n }\n\n /**\n * @internal Gets the current menu item, which is the menu item that has `tabindex=\"0\"` within the roving tab index.\n * The menu item may or may not have focus, but for keyboard interaction purposes it's considered the \"active\" item.\n */\n getCurrentItem() {\n return this.getAllItems().find(i => i.getAttribute('tabindex') === '0');\n }\n\n /**\n * @internal Sets the current menu item to the specified element. This sets `tabindex=\"0\"` on the target element and\n * `tabindex=\"-1\"` to all other items. This method must be called prior to setting focus on a menu item.\n */\n setCurrentItem(item: NileMenuItem) {\n const items = this.getAllItems();\n\n // Update tab indexes\n items.forEach(i => {\n i.setAttribute('tabindex', i === item ? '0' : '-1');\n });\n }\n\n private handleSearchChange(e: any) {\n let items = this.getAllItems();\n let searchValue = e.target.value;\n if (this.customSearch) {\n this.emit('nile-search-value', { value: searchValue });\n return;\n }\n\n let counter = 0;\n items.map(curr_item => {\n this.searchWidth = Math.max(this.searchWidth, curr_item.offsetWidth);\n if (\n curr_item.innerText.toLowerCase().includes(e.target.value.toLowerCase())\n ) {\n curr_item.style.display = 'block';\n counter++;\n } else {\n curr_item.style.display = 'none';\n }\n });\n this.showNoResults = counter === 0;\n }\n\n render() {\n return html`\n ${this.searchEnabled\n ? html`<div class=\"search__wrapper\" part=\"search__wrapper\" >\n <nile-input\n size=\"medium\"\n style=${this.searchWidth\n ? `width: ${this.searchWidth}px;`\n : 'width: 100%;'}\n .value=${this.searchValue}\n placeholder=\"Search...\"\n @nile-input=${this.handleSearchChange}\n part=\"menu__input\"\n clearable\n >\n <nile-icon name=\"search\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>`\n : html``}\n <div class=\"menu__items-wrapper\">\n ${this.showNoResults\n ? html` <nile-menu-item>${this.noResultsMessage}</nile-menu-item> `\n : ''}\n\n <slot\n name=\"menu__header\"\n @click=${(e: Event) => {\n e.stopPropagation();\n }}\n ></slot>\n <slot\n class=\"menu__item-wrapper\"\n @slotchange=${this.handleSlotChange}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n ></slot>\n </div>\n `;\n }\n}\nexport default NileMenu;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-menu': NileMenu;\n }\n}\n"]}
@@ -15,13 +15,12 @@ export const styles = css `
15
15
 
16
16
  .popover__title {
17
17
  display: block;
18
- color: var(--Dark-Normal, var(--Color-Text-Default, #000));
19
- font-feature-settings: 'clig' off, 'liga' off;
18
+ color: #000;
20
19
  font-family: var(--nile-font-family-serif);
21
20
  font-size: var(--nile-type-scale-4);
22
21
  font-style: normal;
23
22
  font-weight: 500;
24
- line-height: var(--nile-type-scale-4); /* 100% */
23
+ line-height: var(--nile-type-scale-4);
25
24
  letter-spacing: 0.2px;
26
25
  }
27
26
 
@@ -33,7 +32,10 @@ export const styles = css `
33
32
  gap: var(--nile-type-scale-4);
34
33
  padding: var(--nile-type-scale-4);
35
34
  border-radius: var(--nile-radius-base-standard);
36
- background-color:var(--nile-colors-white-base);
35
+ background-color: var(--nile-colors-white-base);
36
+ border: solid 1px hsl(240 5.9% 90%);
37
+ box-shadow: 0px 20px 24px -4px rgba(16, 24, 40, 0.08),
38
+ 0px 8px 8px -4px rgba(16, 24, 40, 0.03);
37
39
  }
38
40
 
39
41
  .popover__action {
@@ -1 +1 @@
1
- {"version":3,"file":"nile-popover.css.js","sourceRoot":"","sources":["../../../src/nile-popover/nile-popover.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit-element';\n\n/**\n * Popover CSS\n */\nexport const styles = css`\n :host {\n box-sizing: 'border-box';\n }\n\n .popover__title {\n display: block;\n color: var(--Dark-Normal, var(--Color-Text-Default, #000));\n font-feature-settings: 'clig' off, 'liga' off;\n font-family: var(--nile-font-family-serif);\n font-size: var(--nile-type-scale-4);\n font-style: normal;\n font-weight: 500;\n line-height: var(--nile-type-scale-4); /* 100% */\n letter-spacing: 0.2px;\n }\n\n .popover__box {\n display: flex;\n flex-direction: column;\n height: auto;\n min-width: 352px;\n gap: var(--nile-type-scale-4);\n padding: var(--nile-type-scale-4);\n border-radius: var(--nile-radius-base-standard);\n background-color:var(--nile-colors-white-base);\n }\n\n .popover__action {\n align-self: end;\n display: inline;\n }\n\n nile-popup {\n --arrow-size: 18px;\n --arrow-color: #ffff;\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-popover.css.js","sourceRoot":"","sources":["../../../src/nile-popover/nile-popover.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit-element';\n\n/**\n * Popover CSS\n */\nexport const styles = css`\n :host {\n box-sizing: 'border-box';\n }\n\n .popover__title {\n display: block;\n color: #000;\n font-family: var(--nile-font-family-serif);\n font-size: var(--nile-type-scale-4);\n font-style: normal;\n font-weight: 500;\n line-height: var(--nile-type-scale-4);\n letter-spacing: 0.2px;\n }\n\n .popover__box {\n display: flex;\n flex-direction: column;\n height: auto;\n min-width: 352px;\n gap: var(--nile-type-scale-4);\n padding: var(--nile-type-scale-4);\n border-radius: var(--nile-radius-base-standard);\n background-color: var(--nile-colors-white-base);\n border: solid 1px hsl(240 5.9% 90%);\n box-shadow: 0px 20px 24px -4px rgba(16, 24, 40, 0.08),\n 0px 8px 8px -4px rgba(16, 24, 40, 0.03);\n }\n\n .popover__action {\n align-self: end;\n display: inline;\n }\n\n nile-popup {\n --arrow-size: 18px;\n --arrow-color: #ffff;\n }\n`;\n\nexport default [styles];\n"]}
@@ -24,6 +24,7 @@ export declare class NilePopover extends LitElement {
24
24
  placement: 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
25
25
  /** The distance in pixels from which to offset the popover away from its target. */
26
26
  distance: number;
27
+ arrow: boolean;
27
28
  /** Gives the title to the popover */
28
29
  title: string;
29
30
  private isShow;
@@ -24,6 +24,7 @@ let NilePopover = class NilePopover extends LitElement {
24
24
  this.placement = 'top';
25
25
  /** The distance in pixels from which to offset the popover away from its target. */
26
26
  this.distance = 18;
27
+ this.arrow = true;
27
28
  /** Gives the title to the popover */
28
29
  this.title = '';
29
30
  this.isShow = false;
@@ -75,7 +76,7 @@ let NilePopover = class NilePopover extends LitElement {
75
76
  return html `
76
77
  <nile-popup
77
78
  active
78
- ?arrow="${this.title ? this.isShow : false}"
79
+ .arrow="${this.arrow && this.isShow}"
79
80
  distance="${this.distance}"
80
81
  placement="${this.placement}"
81
82
  @click=${(e) => e.stopPropagation()}
@@ -90,11 +91,8 @@ let NilePopover = class NilePopover extends LitElement {
90
91
  aria-describedby="tooltip"
91
92
  @click=${this.handleClick}
92
93
  ></slot>
93
- ${this.title && this.isShow
94
- ? html ` <div
95
- part="popover"
96
- class="popover__box"
97
- >
94
+ ${this.isShow
95
+ ? html ` <div part="popover" class="popover__box">
98
96
  <slot name="title" class="popover__title">${this.title}</slot>
99
97
  <slot part="base"></slot>
100
98
  <slot name="action" class="popover__action"> </slot>
@@ -110,6 +108,9 @@ __decorate([
110
108
  __decorate([
111
109
  property({ type: Number })
112
110
  ], NilePopover.prototype, "distance", void 0);
111
+ __decorate([
112
+ property({ type: Boolean, attribute: 'arrow' })
113
+ ], NilePopover.prototype, "arrow", void 0);
113
114
  __decorate([
114
115
  property({ type: String })
115
116
  ], NilePopover.prototype, "title", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"nile-popover.js","sourceRoot":"","sources":["../../../src/nile-popover/nile-popover.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n property,\n CSSResultArray,\n TemplateResult,\n} from 'lit-element';\nimport { customElement, state } from 'lit/decorators.js';\nimport { styles } from './nile-popover.css';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { string } from '../nile-icon/icons/svg';\n\n/**\n * Nile icon component.\n *\n * @tag nile-popover\n *\n */\n@customElement('nile-popover')\nexport class NilePopover extends LitElement {\n /**\n * The styles for Popover\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n /**\n * The preferred placement of the popover. Note that the actual placement may vary as needed to keep the tooltip\n * inside of the viewport.\n */\n @property() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'top';\n\n /** The distance in pixels from which to offset the popover away from its target. */\n @property({ type: Number }) distance = 18;\n\n /** Gives the title to the popover */\n @property({ type: String }) title = '';\n\n @state() private isShow = false;\n\n @property({ attribute: 'arrow-placement' }) arrowPlacement:\n | 'start'\n | 'end'\n | 'center'\n | 'anchor' = 'anchor';\n\n\n /**\n * Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n @property({ type: Boolean }) flip = false;\n\n\n /* #endregion */\n\n /* #region Methods */\n\n /**\n * Render method\n * @slot This is a slot test\n */\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this.handleDocumentClick);\n }\n\n private handleClick = () => {\n this.isShow = !this.isShow;\n const allPopovers = document.querySelectorAll('nile-popover');\n \n allPopovers.forEach(popover => {\n if (popover !== this) {\n popover.isShow=false;\n }\n });\n };\n\n private handleDocumentClick = () => {\n if (this.isShow) {\n this.isShow = !this.isShow;\n }\n };\n\n public render(): TemplateResult {\n return html`\n <nile-popup\n active\n ?arrow=\"${this.title ? this.isShow : false}\"\n distance=\"${this.distance}\"\n placement=\"${this.placement}\"\n @click=${(e: Event) => e.stopPropagation()}\n arrowPlacement=\"${this.arrowPlacement}\"\n .flip=\"${this.flip}\"\n shift\n strategy=${this.hoist ? 'fixed' : 'absolute'}\n >\n <slot\n slot=\"anchor\"\n name=\"anchor\"\n aria-describedby=\"tooltip\"\n @click=${this.handleClick}\n ></slot>\n ${this.title && this.isShow\n ? html` <div\n part=\"popover\"\n class=\"popover__box\"\n >\n <slot name=\"title\" class=\"popover__title\">${this.title}</slot>\n <slot part=\"base\"></slot>\n <slot name=\"action\" class=\"popover__action\"> </slot>\n </div>`\n : html``}\n </nile-popup>\n `;\n }\n\n /* #endregion */\n}\n\nexport default NilePopover;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-popover': NilePopover;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-popover.js","sourceRoot":"","sources":["../../../src/nile-popover/nile-popover.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n property,\n CSSResultArray,\n TemplateResult,\n} from 'lit-element';\nimport { customElement, state } from 'lit/decorators.js';\nimport { styles } from './nile-popover.css';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { string } from '../nile-icon/icons/svg';\n\n/**\n * Nile icon component.\n *\n * @tag nile-popover\n *\n */\n@customElement('nile-popover')\nexport class NilePopover extends LitElement {\n /**\n * The styles for Popover\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n /**\n * The preferred placement of the popover. Note that the actual placement may vary as needed to keep the tooltip\n * inside of the viewport.\n */\n @property() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'top';\n\n /** The distance in pixels from which to offset the popover away from its target. */\n @property({ type: Number }) distance = 18;\n\n @property({ type: Boolean, attribute: 'arrow' }) arrow = true;\n\n /** Gives the title to the popover */\n @property({ type: String }) title = '';\n\n @state() private isShow = false;\n\n @property({ attribute: 'arrow-placement' }) arrowPlacement:\n | 'start'\n | 'end'\n | 'center'\n | 'anchor' = 'anchor';\n\n /**\n * Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n @property({ type: Boolean }) flip = false;\n\n /* #endregion */\n\n /* #region Methods */\n\n /**\n * Render method\n * @slot This is a slot test\n */\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this.handleDocumentClick);\n }\n\n private handleClick = () => {\n this.isShow = !this.isShow;\n const allPopovers = document.querySelectorAll('nile-popover');\n\n allPopovers.forEach(popover => {\n if (popover !== this) {\n popover.isShow = false;\n }\n });\n };\n\n private handleDocumentClick = () => {\n if (this.isShow) {\n this.isShow = !this.isShow;\n }\n };\n\n public render(): TemplateResult {\n return html`\n <nile-popup\n active\n .arrow=\"${this.arrow && this.isShow}\"\n distance=\"${this.distance}\"\n placement=\"${this.placement}\"\n @click=${(e: Event) => e.stopPropagation()}\n arrowPlacement=\"${this.arrowPlacement}\"\n .flip=\"${this.flip}\"\n shift\n strategy=${this.hoist ? 'fixed' : 'absolute'}\n >\n <slot\n slot=\"anchor\"\n name=\"anchor\"\n aria-describedby=\"tooltip\"\n @click=${this.handleClick}\n ></slot>\n ${this.isShow\n ? html` <div part=\"popover\" class=\"popover__box\">\n <slot name=\"title\" class=\"popover__title\">${this.title}</slot>\n <slot part=\"base\"></slot>\n <slot name=\"action\" class=\"popover__action\"> </slot>\n </div>`\n : html``}\n </nile-popup>\n `;\n }\n\n /* #endregion */\n}\n\nexport default NilePopover;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-popover': NilePopover;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ import './nile-popover';
@@ -0,0 +1,73 @@
1
+ import { fixture, html, expect } from '@open-wc/testing';
2
+ import './nile-popover';
3
+ describe('NilePopover', () => {
4
+ it('renders correctly', async () => {
5
+ const el = await fixture(html `
6
+ <nile-popover title="Test Popover">
7
+ <button slot="anchor">Click me</button>
8
+ <div>Popover Content</div>
9
+ </nile-popover>
10
+ `);
11
+ expect(el).shadowDom.to.equalSnapshot();
12
+ });
13
+ it('has default properties', async () => {
14
+ const el = await fixture(html `<nile-popover></nile-popover>`);
15
+ expect(el.placement).to.equal('top');
16
+ expect(el.distance).to.equal(18);
17
+ expect(el.title).to.equal('');
18
+ expect(el.arrowPlacement).to.equal('anchor');
19
+ expect(el.hoist).to.be.false;
20
+ expect(el.flip).to.be.false;
21
+ });
22
+ it('displays title when popover is shown', async () => {
23
+ const el = await fixture(html `
24
+ <nile-popover title="Test Popover">
25
+ <button slot="anchor">Click me</button>
26
+ <div>Popover Content</div>
27
+ </nile-popover>
28
+ `);
29
+ const button = el.querySelector('button');
30
+ button.click();
31
+ await el.updateComplete;
32
+ const popoverBox = el.shadowRoot.querySelector('.popover__box');
33
+ expect(popoverBox).to.exist;
34
+ const titleSlot = el.shadowRoot.querySelector('slot[name="title"]');
35
+ expect(titleSlot).to.exist;
36
+ expect(titleSlot.textContent).to.equal('Test Popover');
37
+ });
38
+ it('toggles isShow state on anchor click', async () => {
39
+ const el = await fixture(html `
40
+ <nile-popover title="Test Popover">
41
+ <button slot="anchor">Click me</button>
42
+ <div>Popover Content</div>
43
+ </nile-popover>
44
+ `);
45
+ const button = el.querySelector('button');
46
+ button.click();
47
+ await el.updateComplete;
48
+ const popOverBox = el.shadowRoot.querySelector('div[part="popover"]');
49
+ expect(popOverBox).to.exist;
50
+ button.click();
51
+ await el.updateComplete;
52
+ const afterPopOverBox = el.shadowRoot.querySelector('div[part="popover"]');
53
+ expect(afterPopOverBox).to.null;
54
+ });
55
+ it('hides popover on document click', async () => {
56
+ const el = await fixture(html `
57
+ <nile-popover title="Test Popover">
58
+ <button slot="anchor">Click me</button>
59
+ <div>Popover Content</div>
60
+ </nile-popover>
61
+ `);
62
+ const button = el.querySelector('button');
63
+ button.click();
64
+ await el.updateComplete;
65
+ let popoverBox = el.shadowRoot.querySelector('.popover__box');
66
+ expect(popoverBox).to.exist;
67
+ document.body.click();
68
+ await el.updateComplete;
69
+ popoverBox = el.shadowRoot.querySelector('.popover__box');
70
+ expect(popoverBox).to.not.exist;
71
+ });
72
+ });
73
+ //# sourceMappingURL=nile-popover.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-popover.test.js","sourceRoot":"","sources":["../../../src/nile-popover/nile-popover.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AACnE,OAAO,gBAAgB,CAAC;AAExB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAA;;;;;KAK5B,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,+BAA+B,CAAC,CAAC;QAC3E,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA;;;;;KAKzC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,UAAU,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE5B,MAAM,SAAS,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC3B,MAAM,CAAC,SAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA;;;;;KAKzC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,UAAU,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACvE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE5B,MAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,eAAe,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC5E,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA;;;;;KAKzC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,IAAI,UAAU,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE5B,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,UAAU,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture, html, expect, oneEvent } from '@open-wc/testing';\nimport './nile-popover';\nimport { NilePopover } from './nile-popover';\ndescribe('NilePopover', () => {\n it('renders correctly', async () => {\n const el = await fixture(html`\n <nile-popover title=\"Test Popover\">\n <button slot=\"anchor\">Click me</button>\n <div>Popover Content</div>\n </nile-popover>\n `);\n expect(el).shadowDom.to.equalSnapshot();\n });\n\n it('has default properties', async () => {\n const el = await fixture<NilePopover>(html`<nile-popover></nile-popover>`);\n expect(el.placement).to.equal('top');\n expect(el.distance).to.equal(18);\n expect(el.title).to.equal('');\n expect(el.arrowPlacement).to.equal('anchor');\n expect(el.hoist).to.be.false;\n expect(el.flip).to.be.false;\n });\n\n it('displays title when popover is shown', async () => {\n const el = await fixture<NilePopover>(html`\n <nile-popover title=\"Test Popover\">\n <button slot=\"anchor\">Click me</button>\n <div>Popover Content</div>\n </nile-popover>\n `);\n\n const button = el.querySelector('button');\n button!.click();\n await el.updateComplete;\n const popoverBox = el.shadowRoot!.querySelector('.popover__box');\n expect(popoverBox).to.exist;\n\n const titleSlot = el.shadowRoot!.querySelector('slot[name=\"title\"]');\n expect(titleSlot).to.exist;\n expect(titleSlot!.textContent).to.equal('Test Popover');\n });\n\n it('toggles isShow state on anchor click', async () => {\n const el = await fixture<NilePopover>(html`\n <nile-popover title=\"Test Popover\">\n <button slot=\"anchor\">Click me</button>\n <div>Popover Content</div>\n </nile-popover>\n `);\n\n const button = el.querySelector('button');\n button!.click();\n await el.updateComplete;\n const popOverBox = el.shadowRoot!.querySelector('div[part=\"popover\"]');\n expect(popOverBox).to.exist;\n\n button!.click();\n await el.updateComplete;\n\n const afterPopOverBox = el.shadowRoot!.querySelector('div[part=\"popover\"]');\n expect(afterPopOverBox).to.null;\n });\n\n it('hides popover on document click', async () => {\n const el = await fixture<NilePopover>(html`\n <nile-popover title=\"Test Popover\">\n <button slot=\"anchor\">Click me</button>\n <div>Popover Content</div>\n </nile-popover>\n `);\n\n const button = el.querySelector('button');\n button!.click();\n await el.updateComplete;\n\n let popoverBox = el.shadowRoot!.querySelector('.popover__box');\n expect(popoverBox).to.exist;\n\n document.body.click();\n await el.updateComplete;\n\n popoverBox = el.shadowRoot!.querySelector('.popover__box');\n expect(popoverBox).to.not.exist;\n });\n});\n"]}
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Copyright Aquera Inc 2023
3
- *
4
- * This source code is licensed under the BSD-3-Clause license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
7
  /**
8
8
  * Popup CSS
9
9
  */
@@ -1,17 +1,15 @@
1
1
  /**
2
- * Copyright Aquera Inc 2023
3
- *
4
- * This source code is licensed under the BSD-3-Clause license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
7
  import { css } from 'lit-element';
8
8
  /**
9
9
  * Popup CSS
10
10
  */
11
11
  export const styles = css `
12
-
13
-
14
- :host {
12
+ :host {
15
13
  --arrow-color: hsl(240 4.8% 95.9%);
16
14
  --arrow-size: 6px;
17
15
 
@@ -20,7 +18,9 @@ export const styles = css `
20
18
  * 0.7071 is derived from sin(45), which is the diagonal size of the arrow's container after rotating.
21
19
  */
22
20
  --arrow-size-diagonal: calc(var(--arrow-size) * 0.7071);
23
- --arrow-padding-offset: calc(var(--arrow-size-diagonal) - var(--arrow-size));
21
+ --arrow-padding-offset: calc(
22
+ var(--arrow-size-diagonal) - var(--arrow-size)
23
+ );
24
24
 
25
25
  display: contents;
26
26
  }
@@ -48,6 +48,10 @@ export const styles = css `
48
48
  rotate: 45deg;
49
49
  background: var(--arrow-color);
50
50
  z-index: -1;
51
+ /* Added border and box-shadow to arrow */
52
+ border: solid 1px hsl(240 5.9% 90%);
53
+ box-shadow: 0px 20px 24px -4px rgba(16, 24, 40, 0.08),
54
+ 0px 8px 8px -4px rgba(16, 24, 40, 0.03);
51
55
  }
52
56
  `;
53
57
  export default [styles];
@@ -1 +1 @@
1
- {"version":3,"file":"nile-popup.css.js","sourceRoot":"","sources":["../../../src/nile-popup/nile-popup.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2023\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\n\nimport {css} from 'lit-element';\n\n/**\n * Popup CSS\n */\nexport const styles = css`\n\n\n:host {\n --arrow-color: hsl(240 4.8% 95.9%);\n --arrow-size: 6px;\n\n /*\n * These properties are computed to account for the arrow's dimensions after being rotated 45º. The constant\n * 0.7071 is derived from sin(45), which is the diagonal size of the arrow's container after rotating.\n */\n --arrow-size-diagonal: calc(var(--arrow-size) * 0.7071);\n --arrow-padding-offset: calc(var(--arrow-size-diagonal) - var(--arrow-size));\n\n display: contents;\n }\n\n .popup {\n position: absolute;\n isolation: isolate;\n max-width: var(--auto-size-available-width, none);\n max-height: var(--auto-size-available-height, none);\n z-index: 800;\n }\n\n .popup--fixed {\n position: fixed;\n }\n\n .popup:not(.popup--active) {\n display: none;\n }\n\n .popup__arrow {\n position: absolute;\n width: calc(var(--arrow-size-diagonal) * 2);\n height: calc(var(--arrow-size-diagonal) * 2);\n rotate: 45deg;\n background: var(--arrow-color);\n z-index: -1;\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-popup.css.js","sourceRoot":"","sources":["../../../src/nile-popup/nile-popup.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit-element';\n\n/**\n * Popup CSS\n */\nexport const styles = css`\n :host {\n --arrow-color: hsl(240 4.8% 95.9%);\n --arrow-size: 6px;\n\n /*\n * These properties are computed to account for the arrow's dimensions after being rotated 45º. The constant\n * 0.7071 is derived from sin(45), which is the diagonal size of the arrow's container after rotating.\n */\n --arrow-size-diagonal: calc(var(--arrow-size) * 0.7071);\n --arrow-padding-offset: calc(\n var(--arrow-size-diagonal) - var(--arrow-size)\n );\n\n display: contents;\n }\n\n .popup {\n position: absolute;\n isolation: isolate;\n max-width: var(--auto-size-available-width, none);\n max-height: var(--auto-size-available-height, none);\n z-index: 800;\n }\n\n .popup--fixed {\n position: fixed;\n }\n\n .popup:not(.popup--active) {\n display: none;\n }\n\n .popup__arrow {\n position: absolute;\n width: calc(var(--arrow-size-diagonal) * 2);\n height: calc(var(--arrow-size-diagonal) * 2);\n rotate: 45deg;\n background: var(--arrow-color);\n z-index: -1;\n /* Added border and box-shadow to arrow */\n border: solid 1px hsl(240 5.9% 90%);\n box-shadow: 0px 20px 24px -4px rgba(16, 24, 40, 0.08),\n 0px 8px 8px -4px rgba(16, 24, 40, 0.03);\n }\n`;\n\nexport default [styles];\n"]}
@@ -0,0 +1 @@
1
+ import './nile-progress-bar';
@@ -0,0 +1,48 @@
1
+ import { fixture, html, expect } from '@open-wc/testing';
2
+ import './nile-progress-bar'; // Make sure to import the component to be tested
3
+ describe('NileProgressBar', () => {
4
+ it('should have a default value of 0', async () => {
5
+ const el = await fixture(html `<nile-progress-bar></nile-progress-bar>`);
6
+ expect(el.value).to.equal(0);
7
+ const span = el.shadowRoot.querySelector('span') ?? {};
8
+ expect(span.style.width).to.equal('0%');
9
+ });
10
+ it('should set and display the provided value', async () => {
11
+ const el = await fixture(html `<nile-progress-bar value="50"></nile-progress-bar>`);
12
+ expect(el.value).to.equal(50);
13
+ const span = el.shadowRoot.querySelector('span') ?? {};
14
+ expect(span.style.width).to.equal('50%');
15
+ });
16
+ it('should handle boundary value 0%', async () => {
17
+ const el = await fixture(html `<nile-progress-bar value="0"></nile-progress-bar>`);
18
+ expect(el.value).to.equal(0);
19
+ const span = el.shadowRoot.querySelector('span') ?? {};
20
+ expect(span.style.width).to.equal('0%');
21
+ });
22
+ it('should handle boundary value 100%', async () => {
23
+ const el = await fixture(html `<nile-progress-bar value="100"></nile-progress-bar>`);
24
+ expect(el.value).to.equal(100);
25
+ const span = el.shadowRoot.querySelector('span') ?? {};
26
+ expect(span.style.width).to.equal('100%');
27
+ });
28
+ it('should handle values greater than 100', async () => {
29
+ const el = await fixture(html `<nile-progress-bar value="150"></nile-progress-bar>`);
30
+ expect(el.value).to.equal(150);
31
+ const span = el.shadowRoot.querySelector('span') ?? {};
32
+ expect(span.style.width).to.equal('150%');
33
+ });
34
+ it('should handle negative values', async () => {
35
+ const el = await fixture(html `<nile-progress-bar value="-50"></nile-progress-bar>`);
36
+ expect(el.value).to.equal(-50);
37
+ const span = el.shadowRoot.querySelector('span') ?? {};
38
+ expect(span.style.width).to.equal('');
39
+ });
40
+ it('should update the value dynamically', async () => {
41
+ const el = await fixture(html `<nile-progress-bar value="20"></nile-progress-bar>`);
42
+ el.value = 80;
43
+ await el.updateComplete;
44
+ const span = el.shadowRoot.querySelector('span') ?? {};
45
+ expect(span.style.width).to.equal('80%');
46
+ });
47
+ });
48
+ //# sourceMappingURL=nile-progress-bar.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-progress-bar.test.js","sourceRoot":"","sources":["../../../src/nile-progress-bar/nile-progress-bar.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, html, expect } from '@open-wc/testing';\nimport './nile-progress-bar'; // Make sure to import the component to be tested\nimport { NileProgressBar } from './nile-progress-bar';\n\ndescribe('NileProgressBar', () => {\n it('should have a default value of 0', async () => {\n const el = await fixture<NileProgressBar>(html`<nile-progress-bar></nile-progress-bar>`);\n expect(el.value).to.equal(0);\n const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;\n expect(span.style.width).to.equal('0%');\n });\n\n it('should set and display the provided value', async () => {\n const el = await fixture<NileProgressBar>(html`<nile-progress-bar value=\"50\"></nile-progress-bar>`);\n expect(el.value).to.equal(50);\n const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;\n expect(span.style.width).to.equal('50%');\n });\n\n it('should handle boundary value 0%', async () => {\n const el = await fixture<NileProgressBar>(html`<nile-progress-bar value=\"0\"></nile-progress-bar>`);\n expect(el.value).to.equal(0);\n const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;\n expect(span.style.width).to.equal('0%');\n });\n\n it('should handle boundary value 100%', async () => {\n const el = await fixture<NileProgressBar>(html`<nile-progress-bar value=\"100\"></nile-progress-bar>`);\n expect(el.value).to.equal(100);\n const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;\n expect(span.style.width).to.equal('100%');\n });\n\n it('should handle values greater than 100', async () => {\n const el = await fixture<NileProgressBar>(html`<nile-progress-bar value=\"150\"></nile-progress-bar>`);\n expect(el.value).to.equal(150);\n const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;\n expect(span.style.width).to.equal('150%');\n });\n\n it('should handle negative values', async () => {\n const el = await fixture<NileProgressBar>(html`<nile-progress-bar value=\"-50\"></nile-progress-bar>`);\n expect(el.value).to.equal(-50);\n const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;\n expect(span.style.width).to.equal('');\n });\n\n it('should update the value dynamically', async () => {\n const el = await fixture<NileProgressBar>(html`<nile-progress-bar value=\"20\"></nile-progress-bar>`);\n el.value = 80;\n await el.updateComplete;\n const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;\n expect(span.style.width).to.equal('80%');\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ import './nile-radio';
@@ -0,0 +1,71 @@
1
+ import { html, fixture, expect, elementUpdated } from '@open-wc/testing';
2
+ import './nile-radio';
3
+ describe('NileRadio', () => {
4
+ it('should have the correct default properties', async () => {
5
+ const el = await fixture(html `<nile-radio></nile-radio>`);
6
+ expect(el.checked).to.be.false;
7
+ expect(el.disabled).to.be.false;
8
+ expect(el.size).to.equal('medium');
9
+ });
10
+ it('should reflect the disabled attribute', async () => {
11
+ const el = await fixture(html `<nile-radio disabled></nile-radio>`);
12
+ expect(el.disabled).to.be.true;
13
+ expect(el.hasAttribute('aria-disabled')).to.be.true;
14
+ });
15
+ it('should update aria-checked when checked changes', async () => {
16
+ const el = await fixture(html `<nile-radio></nile-radio>`);
17
+ el.checked = true;
18
+ await el.updateComplete;
19
+ expect(el.getAttribute('aria-checked')).to.equal('true');
20
+ });
21
+ it('should toggle checked state on click when not disabled', async () => {
22
+ const el = await fixture(html `<nile-radio></nile-radio>`);
23
+ el.click();
24
+ await elementUpdated(el);
25
+ expect(el.checked).to.be.true;
26
+ });
27
+ it('should not toggle checked state on click when disabled', async () => {
28
+ const el = await fixture(html `<nile-radio disabled></nile-radio>`);
29
+ el.click();
30
+ await elementUpdated(el);
31
+ expect(el.checked).to.be.false;
32
+ });
33
+ it('should emit nile-blur event on blur', async () => {
34
+ const el = await fixture(html `<nile-radio></nile-radio>`);
35
+ const blurEvent = new Promise(resolve => el.addEventListener('nile-blur', resolve));
36
+ el.dispatchEvent(new Event('blur'));
37
+ const event = await blurEvent;
38
+ expect(event).to.exist;
39
+ });
40
+ it('should emit nile-focus event on focus', async () => {
41
+ const el = await fixture(html `<nile-radio></nile-radio>`);
42
+ const focusEvent = new Promise(resolve => el.addEventListener('nile-focus', resolve));
43
+ el.dispatchEvent(new Event('focus'));
44
+ const event = await focusEvent;
45
+ expect(event).to.exist;
46
+ });
47
+ it('should apply the correct classes based on state', async () => {
48
+ const el = await fixture(html `<nile-radio></nile-radio>`);
49
+ el.checked = true;
50
+ el.disabled = true;
51
+ el.size = 'medium';
52
+ await el.updateComplete;
53
+ const base = el.shadowRoot.querySelector('[part="base"]');
54
+ expect(base.classList.contains('radio--checked')).to.be.true;
55
+ expect(base.classList.contains('radio--disabled')).to.be.true;
56
+ expect(base.classList.contains('radio--medium')).to.be.true;
57
+ });
58
+ it('should update aria-disabled when disabled changes', async () => {
59
+ const el = await fixture(html `<nile-radio></nile-radio>`);
60
+ el.disabled = true;
61
+ await elementUpdated(el);
62
+ expect(el.getAttribute('aria-disabled')).to.equal('true');
63
+ });
64
+ it('should set initial attributes correctly', async () => {
65
+ const el = await fixture(html `<nile-radio></nile-radio>`);
66
+ expect(el.getAttribute('role')).to.equal('radio');
67
+ expect(el.getAttribute('tabindex')).to.equal('-1');
68
+ expect(el.getAttribute('aria-disabled')).to.equal('false');
69
+ });
70
+ });
71
+ //# sourceMappingURL=nile-radio.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-radio.test.js","sourceRoot":"","sources":["../../../src/nile-radio/nile-radio.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, elementUpdated } from '@open-wc/testing';\nimport './nile-radio';\nimport { NileRadio } from './nile-radio';\n\ndescribe('NileRadio', () => {\n it('should have the correct default properties', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n expect(el.checked).to.be.false;\n expect(el.disabled).to.be.false;\n expect(el.size).to.equal('medium');\n });\n\n it('should reflect the disabled attribute', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio disabled></nile-radio>`);\n expect(el.disabled).to.be.true;\n expect(el.hasAttribute('aria-disabled')).to.be.true;\n });\n\n it('should update aria-checked when checked changes', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n el.checked = true;\n await el.updateComplete;\n expect(el.getAttribute('aria-checked')).to.equal('true');\n });\n\n it('should toggle checked state on click when not disabled', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n el.click();\n await elementUpdated(el);\n expect(el.checked).to.be.true;\n });\n\n it('should not toggle checked state on click when disabled', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio disabled></nile-radio>`);\n el.click();\n await elementUpdated(el);\n expect(el.checked).to.be.false;\n });\n\n it('should emit nile-blur event on blur', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n const blurEvent = new Promise(resolve => el.addEventListener('nile-blur', resolve));\n el.dispatchEvent(new Event('blur'));\n const event = await blurEvent;\n expect(event).to.exist;\n });\n\n it('should emit nile-focus event on focus', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n const focusEvent = new Promise(resolve => el.addEventListener('nile-focus', resolve));\n el.dispatchEvent(new Event('focus'));\n const event = await focusEvent;\n expect(event).to.exist;\n });\n\n it('should apply the correct classes based on state', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n el.checked = true;\n el.disabled = true;\n el.size = 'medium';\n await el.updateComplete;\n const base = el.shadowRoot!.querySelector('[part=\"base\"]');\n expect(base!.classList.contains('radio--checked')).to.be.true;\n expect(base!.classList.contains('radio--disabled')).to.be.true;\n expect(base!.classList.contains('radio--medium')).to.be.true;\n });\n\n it('should update aria-disabled when disabled changes', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n el.disabled = true;\n await elementUpdated(el);\n expect(el.getAttribute('aria-disabled')).to.equal('true');\n });\n\n it('should set initial attributes correctly', async () => {\n const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);\n expect(el.getAttribute('role')).to.equal('radio');\n expect(el.getAttribute('tabindex')).to.equal('-1');\n expect(el.getAttribute('aria-disabled')).to.equal('false');\n });\n});"]}
@@ -95,6 +95,7 @@ export declare class NileSelect extends NileElement implements NileFormControl {
95
95
  /** Placeholder text to show as a hint when the select is empty. */
96
96
  searchValue: string;
97
97
  searchEnabled: boolean;
98
+ internalSearchPlaceHolder: string;
98
99
  blockValueChange: boolean;
99
100
  disableLocalSearch: boolean;
100
101
  optionsLoading: boolean;