@aquera/nile-elements 0.0.81 → 0.0.84

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 (493) hide show
  1. package/README.md +19 -0
  2. package/demo/filenames.txt +1 -1
  3. package/demo/index.css +117 -0
  4. package/demo/index.html +34 -243
  5. package/demo/index.js +72 -0
  6. package/demo/variables.css +58 -0
  7. package/demo/variables_v2.css +51 -0
  8. package/dist/{fixture-b1476eef.cjs.js → fixture-1a9fb5f1.cjs.js} +5 -5
  9. package/dist/fixture-1a9fb5f1.cjs.js.map +1 -0
  10. package/dist/{fixture-6f853cbd.esm.js → fixture-81e5a936.esm.js} +3 -3
  11. package/dist/index.cjs.js +1 -1
  12. package/dist/index.esm.js +1 -1
  13. package/dist/index.iife.js +892 -570
  14. package/dist/internal/animate.cjs.js +1 -1
  15. package/dist/internal/animate.cjs.js.map +1 -1
  16. package/dist/internal/animate.esm.js +1 -1
  17. package/dist/nile-avatar/nile-avatar.css.cjs.js +1 -1
  18. package/dist/nile-avatar/nile-avatar.css.cjs.js.map +1 -1
  19. package/dist/nile-avatar/nile-avatar.css.esm.js +7 -8
  20. package/dist/nile-avatar/nile-avatar.test.cjs.js +2 -0
  21. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -0
  22. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -0
  23. package/dist/nile-badge/index.cjs.js +1 -1
  24. package/dist/nile-badge/index.esm.js +1 -1
  25. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  26. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  27. package/dist/nile-badge/nile-badge.css.cjs.js +1 -1
  28. package/dist/nile-badge/nile-badge.css.cjs.js.map +1 -1
  29. package/dist/nile-badge/nile-badge.css.esm.js +47 -47
  30. package/dist/nile-badge/nile-badge.esm.js +1 -1
  31. package/dist/nile-badge/nile-badge.test.cjs.js +2 -0
  32. package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -0
  33. package/dist/nile-badge/nile-badge.test.esm.js +1 -0
  34. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js +1 -1
  35. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js.map +1 -1
  36. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.esm.js +3 -4
  37. package/dist/nile-button/index.cjs.js +1 -1
  38. package/dist/nile-button/index.esm.js +1 -1
  39. package/dist/nile-button/nile-button.cjs.js +1 -1
  40. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  41. package/dist/nile-button/nile-button.esm.js +1 -1
  42. package/dist/nile-button/nile-button.test.cjs.js +2 -0
  43. package/dist/nile-button/nile-button.test.cjs.js.map +1 -0
  44. package/dist/nile-button/nile-button.test.esm.js +4 -0
  45. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +2 -0
  46. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js.map +1 -0
  47. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +49 -0
  48. package/dist/nile-calendar/index.cjs.js +1 -1
  49. package/dist/nile-calendar/index.esm.js +1 -1
  50. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  51. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  52. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  53. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  54. package/dist/nile-calendar/nile-calendar.css.esm.js +124 -193
  55. package/dist/nile-calendar/nile-calendar.esm.js +119 -135
  56. package/dist/nile-card/nile-card.test.cjs.js +2 -0
  57. package/dist/nile-card/nile-card.test.cjs.js.map +1 -0
  58. package/dist/nile-card/nile-card.test.esm.js +51 -0
  59. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  60. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  61. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  62. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  63. package/dist/nile-date-picker/nile-date-picker.esm.js +4 -2
  64. package/dist/nile-dialog/index.cjs.js +1 -1
  65. package/dist/nile-dialog/index.esm.js +1 -1
  66. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  67. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  68. package/dist/nile-dialog/nile-dialog.css.cjs.js +1 -1
  69. package/dist/nile-dialog/nile-dialog.css.cjs.js.map +1 -1
  70. package/dist/nile-dialog/nile-dialog.css.esm.js +4 -1
  71. package/dist/nile-dialog/nile-dialog.esm.js +5 -4
  72. package/dist/nile-divider/index.cjs.js +2 -0
  73. package/dist/nile-divider/index.cjs.js.map +1 -0
  74. package/dist/nile-divider/index.esm.js +1 -0
  75. package/dist/nile-divider/nile-divider.cjs.js +2 -0
  76. package/dist/nile-divider/nile-divider.cjs.js.map +1 -0
  77. package/dist/nile-divider/nile-divider.css.cjs.js +2 -0
  78. package/dist/nile-divider/nile-divider.css.cjs.js.map +1 -0
  79. package/dist/nile-divider/nile-divider.css.esm.js +28 -0
  80. package/dist/nile-divider/nile-divider.esm.js +3 -0
  81. package/dist/nile-drawer/index.cjs.js +1 -1
  82. package/dist/nile-drawer/index.esm.js +1 -1
  83. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  84. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  85. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  86. package/dist/nile-drawer/nile-drawer.test.cjs.js +2 -0
  87. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -0
  88. package/dist/nile-drawer/nile-drawer.test.esm.js +18 -0
  89. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  90. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  91. package/dist/nile-error-message/nile-error-message.test.cjs.js +2 -0
  92. package/dist/nile-error-message/nile-error-message.test.cjs.js.map +1 -0
  93. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -0
  94. package/dist/nile-form-group/nile-form-group.test.cjs.js +2 -0
  95. package/dist/nile-form-group/nile-form-group.test.cjs.js.map +1 -0
  96. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -0
  97. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  98. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  99. package/dist/nile-icon/icons/svg/alert.cjs.js +2 -0
  100. package/dist/nile-icon/icons/svg/alert.cjs.js.map +1 -0
  101. package/dist/nile-icon/icons/svg/alert.esm.js +1 -0
  102. package/dist/nile-icon/icons/svg/file-check-02.cjs.js +2 -0
  103. package/dist/nile-icon/icons/svg/file-check-02.cjs.js.map +1 -0
  104. package/dist/nile-icon/icons/svg/file-check-02.esm.js +1 -0
  105. package/dist/nile-icon/icons/svg/headphones-01.cjs.js +2 -0
  106. package/dist/nile-icon/icons/svg/headphones-01.cjs.js.map +1 -0
  107. package/dist/nile-icon/icons/svg/headphones-01.esm.js +1 -0
  108. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  109. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  110. package/dist/nile-icon/icons/svg/keyboard-01.cjs.js +2 -0
  111. package/dist/nile-icon/icons/svg/keyboard-01.cjs.js.map +1 -0
  112. package/dist/nile-icon/icons/svg/keyboard-01.esm.js +1 -0
  113. package/dist/nile-icon/icons/svg/monitor-01.cjs.js +2 -0
  114. package/dist/nile-icon/icons/svg/monitor-01.cjs.js.map +1 -0
  115. package/dist/nile-icon/icons/svg/monitor-01.esm.js +1 -0
  116. package/dist/nile-icon/icons/svg/mouse.cjs.js +2 -0
  117. package/dist/nile-icon/icons/svg/mouse.cjs.js.map +1 -0
  118. package/dist/nile-icon/icons/svg/mouse.esm.js +1 -0
  119. package/dist/nile-icon/icons/svg/printer.cjs.js +2 -0
  120. package/dist/nile-icon/icons/svg/printer.cjs.js.map +1 -0
  121. package/dist/nile-icon/icons/svg/printer.esm.js +1 -0
  122. package/dist/nile-icon/index.cjs.js +1 -1
  123. package/dist/nile-icon/index.cjs.js.map +1 -1
  124. package/dist/nile-icon/index.esm.js +1 -1
  125. package/dist/nile-icon/nile-icon.test.cjs.js +2 -0
  126. package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -0
  127. package/dist/nile-icon/nile-icon.test.esm.js +1 -0
  128. package/dist/nile-icon-button/index.cjs.js +1 -1
  129. package/dist/nile-icon-button/index.esm.js +1 -1
  130. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  131. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  132. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  133. package/dist/nile-input/index.cjs.js +1 -1
  134. package/dist/nile-input/index.esm.js +1 -1
  135. package/dist/nile-input/nile-input.cjs.js +1 -1
  136. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  137. package/dist/nile-input/nile-input.esm.js +1 -1
  138. package/dist/nile-input/nile-input.test.cjs.js +2 -0
  139. package/dist/nile-input/nile-input.test.cjs.js.map +1 -0
  140. package/dist/nile-input/nile-input.test.esm.js +17 -0
  141. package/dist/nile-link/nile-link.test.cjs.js +2 -0
  142. package/dist/nile-link/nile-link.test.cjs.js.map +1 -0
  143. package/dist/nile-link/nile-link.test.esm.js +1 -0
  144. package/dist/nile-list/index.cjs.js +2 -0
  145. package/dist/nile-list/index.cjs.js.map +1 -0
  146. package/dist/nile-list/index.esm.js +1 -0
  147. package/dist/nile-list/nile-list.cjs.js +2 -0
  148. package/dist/nile-list/nile-list.cjs.js.map +1 -0
  149. package/dist/nile-list/nile-list.css.cjs.js +2 -0
  150. package/dist/nile-list/nile-list.css.cjs.js.map +1 -0
  151. package/dist/nile-list/nile-list.css.esm.js +8 -0
  152. package/dist/nile-list/nile-list.esm.js +3 -0
  153. package/dist/nile-list-item/index.cjs.js +2 -0
  154. package/dist/nile-list-item/index.cjs.js.map +1 -0
  155. package/dist/nile-list-item/index.esm.js +1 -0
  156. package/dist/nile-list-item/nile-list-item.cjs.js +2 -0
  157. package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -0
  158. package/dist/nile-list-item/nile-list-item.css.cjs.js +2 -0
  159. package/dist/nile-list-item/nile-list-item.css.cjs.js.map +1 -0
  160. package/dist/nile-list-item/nile-list-item.css.esm.js +54 -0
  161. package/dist/nile-list-item/nile-list-item.esm.js +21 -0
  162. package/dist/nile-loader/nile-loader.test.cjs.js +2 -0
  163. package/dist/nile-loader/nile-loader.test.cjs.js.map +1 -0
  164. package/dist/nile-loader/nile-loader.test.esm.js +1 -0
  165. package/dist/nile-menu/nile-menu.cjs.js +1 -1
  166. package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
  167. package/dist/nile-menu/nile-menu.css.cjs.js +1 -1
  168. package/dist/nile-menu/nile-menu.css.cjs.js.map +1 -1
  169. package/dist/nile-menu/nile-menu.css.esm.js +21 -7
  170. package/dist/nile-menu/nile-menu.esm.js +18 -15
  171. package/dist/nile-menu-item/index.cjs.js +1 -1
  172. package/dist/nile-menu-item/index.esm.js +1 -1
  173. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  174. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  175. package/dist/nile-menu-item/nile-menu-item.css.cjs.js +1 -1
  176. package/dist/nile-menu-item/nile-menu-item.css.cjs.js.map +1 -1
  177. package/dist/nile-menu-item/nile-menu-item.css.esm.js +1 -1
  178. package/dist/nile-menu-item/nile-menu-item.esm.js +18 -21
  179. package/dist/nile-option/index.cjs.js +1 -1
  180. package/dist/nile-option/index.esm.js +1 -1
  181. package/dist/nile-option/nile-option.cjs.js +1 -1
  182. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  183. package/dist/nile-option/nile-option.esm.js +1 -1
  184. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  185. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  186. package/dist/nile-popover/nile-popover.css.cjs.js +1 -1
  187. package/dist/nile-popover/nile-popover.css.cjs.js.map +1 -1
  188. package/dist/nile-popover/nile-popover.css.esm.js +6 -4
  189. package/dist/nile-popover/nile-popover.esm.js +4 -7
  190. package/dist/nile-popover/nile-popover.test.cjs.js +2 -0
  191. package/dist/nile-popover/nile-popover.test.cjs.js.map +1 -0
  192. package/dist/nile-popover/nile-popover.test.esm.js +21 -0
  193. package/dist/nile-popup/nile-popup.css.cjs.js +1 -1
  194. package/dist/nile-popup/nile-popup.css.cjs.js.map +1 -1
  195. package/dist/nile-popup/nile-popup.css.esm.js +8 -4
  196. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +2 -0
  197. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js.map +1 -0
  198. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -0
  199. package/dist/nile-radio/nile-radio.test.cjs.js +2 -0
  200. package/dist/nile-radio/nile-radio.test.cjs.js.map +1 -0
  201. package/dist/nile-radio/nile-radio.test.esm.js +1 -0
  202. package/dist/nile-select/index.cjs.js +1 -1
  203. package/dist/nile-select/index.esm.js +1 -1
  204. package/dist/nile-select/nile-select.cjs.js +1 -1
  205. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  206. package/dist/nile-select/nile-select.esm.js +3 -3
  207. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +2 -0
  208. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js.map +1 -0
  209. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -0
  210. package/dist/nile-tab/index.cjs.js +1 -1
  211. package/dist/nile-tab/index.esm.js +1 -1
  212. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  213. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  214. package/dist/nile-tab/nile-tab.esm.js +1 -1
  215. package/dist/nile-tab-group/index.cjs.js +1 -1
  216. package/dist/nile-tab-group/index.esm.js +1 -1
  217. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  218. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  219. package/dist/nile-tab-group/nile-tab-group.css.cjs.js +1 -1
  220. package/dist/nile-tab-group/nile-tab-group.css.cjs.js.map +1 -1
  221. package/dist/nile-tab-group/nile-tab-group.css.esm.js +2 -2
  222. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  223. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js +1 -1
  224. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js.map +1 -1
  225. package/dist/nile-table-cell-item/nile-table-cell-item.css.esm.js +2 -1
  226. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
  227. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
  228. package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +2 -5
  229. package/dist/nile-tag/index.cjs.js +1 -1
  230. package/dist/nile-tag/index.esm.js +1 -1
  231. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  232. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  233. package/dist/nile-tag/nile-tag.esm.js +1 -1
  234. package/dist/nile-textarea/nile-textarea.test.cjs.js +2 -0
  235. package/dist/nile-textarea/nile-textarea.test.cjs.js.map +1 -0
  236. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -0
  237. package/dist/nile-toast/index.cjs.js +1 -1
  238. package/dist/nile-toast/index.esm.js +1 -1
  239. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  240. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  241. package/dist/nile-toast/nile-toast.esm.js +1 -1
  242. package/dist/nile-tree/index.cjs.js +2 -0
  243. package/dist/nile-tree/index.cjs.js.map +1 -0
  244. package/dist/nile-tree/index.esm.js +1 -0
  245. package/dist/nile-tree/nile-tree.cjs.js +2 -0
  246. package/dist/nile-tree/nile-tree.cjs.js.map +1 -0
  247. package/dist/nile-tree/nile-tree.css.cjs.js +2 -0
  248. package/dist/nile-tree/nile-tree.css.cjs.js.map +1 -0
  249. package/dist/nile-tree/nile-tree.css.esm.js +36 -0
  250. package/dist/nile-tree/nile-tree.esm.js +13 -0
  251. package/dist/nile-tree-item/index.cjs.js +2 -0
  252. package/dist/nile-tree-item/index.cjs.js.map +1 -0
  253. package/dist/nile-tree-item/index.esm.js +1 -0
  254. package/dist/nile-tree-item/nile-tree-item.cjs.js +2 -0
  255. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -0
  256. package/dist/nile-tree-item/nile-tree-item.css.cjs.js +2 -0
  257. package/dist/nile-tree-item/nile-tree-item.css.cjs.js.map +1 -0
  258. package/dist/nile-tree-item/nile-tree-item.css.esm.js +164 -0
  259. package/dist/nile-tree-item/nile-tree-item.esm.js +63 -0
  260. package/dist/src/index.d.ts +5 -0
  261. package/dist/src/index.js +5 -0
  262. package/dist/src/index.js.map +1 -1
  263. package/dist/src/nile-avatar/nile-avatar.css.js +5 -6
  264. package/dist/src/nile-avatar/nile-avatar.css.js.map +1 -1
  265. package/dist/src/nile-avatar/nile-avatar.test.d.ts +1 -0
  266. package/dist/src/nile-avatar/nile-avatar.test.js +58 -0
  267. package/dist/src/nile-avatar/nile-avatar.test.js.map +1 -0
  268. package/dist/src/nile-badge/nile-badge.css.js +45 -45
  269. package/dist/src/nile-badge/nile-badge.css.js.map +1 -1
  270. package/dist/src/nile-badge/nile-badge.test.d.ts +1 -0
  271. package/dist/src/nile-badge/nile-badge.test.js +42 -0
  272. package/dist/src/nile-badge/nile-badge.test.js.map +1 -0
  273. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js +3 -4
  274. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js.map +1 -1
  275. package/dist/src/nile-button/nile-button.test.d.ts +1 -0
  276. package/dist/src/nile-button/nile-button.test.js +86 -0
  277. package/dist/src/nile-button/nile-button.test.js.map +1 -0
  278. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.d.ts +2 -0
  279. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js +108 -0
  280. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js.map +1 -0
  281. package/dist/src/nile-calendar/nile-calendar.css.js +122 -191
  282. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
  283. package/dist/src/nile-calendar/nile-calendar.d.ts +8 -0
  284. package/dist/src/nile-calendar/nile-calendar.js +143 -169
  285. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  286. package/dist/src/nile-card/nile-card.test.d.ts +1 -0
  287. package/dist/src/nile-card/nile-card.test.js +69 -0
  288. package/dist/src/nile-card/nile-card.test.js.map +1 -0
  289. package/dist/src/nile-date-picker/nile-date-picker.d.ts +1 -1
  290. package/dist/src/nile-date-picker/nile-date-picker.js +4 -0
  291. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  292. package/dist/src/nile-dialog/nile-dialog.css.js +4 -1
  293. package/dist/src/nile-dialog/nile-dialog.css.js.map +1 -1
  294. package/dist/src/nile-dialog/nile-dialog.js +4 -3
  295. package/dist/src/nile-dialog/nile-dialog.js.map +1 -1
  296. package/dist/src/nile-divider/index.d.ts +1 -0
  297. package/dist/src/nile-divider/index.js +2 -0
  298. package/dist/src/nile-divider/index.js.map +1 -0
  299. package/dist/src/nile-divider/nile-divider.css.d.ts +12 -0
  300. package/dist/src/nile-divider/nile-divider.css.js +40 -0
  301. package/dist/src/nile-divider/nile-divider.css.js.map +1 -0
  302. package/dist/src/nile-divider/nile-divider.d.ts +34 -0
  303. package/dist/src/nile-divider/nile-divider.js +55 -0
  304. package/dist/src/nile-divider/nile-divider.js.map +1 -0
  305. package/dist/src/nile-drawer/nile-drawer.test.d.ts +1 -0
  306. package/dist/src/nile-drawer/nile-drawer.test.js +88 -0
  307. package/dist/src/nile-drawer/nile-drawer.test.js.map +1 -0
  308. package/dist/src/nile-error-message/nile-error-message.test.d.ts +1 -0
  309. package/dist/src/nile-error-message/nile-error-message.test.js +61 -0
  310. package/dist/src/nile-error-message/nile-error-message.test.js.map +1 -0
  311. package/dist/src/nile-form-group/nile-form-group.test.d.ts +1 -0
  312. package/dist/src/nile-form-group/nile-form-group.test.js +55 -0
  313. package/dist/src/nile-form-group/nile-form-group.test.js.map +1 -0
  314. package/dist/src/nile-icon/icons/svg/alert.d.ts +5 -0
  315. package/dist/src/nile-icon/icons/svg/alert.js +5 -0
  316. package/dist/src/nile-icon/icons/svg/alert.js.map +1 -0
  317. package/dist/src/nile-icon/icons/svg/file-check-02.d.ts +5 -0
  318. package/dist/src/nile-icon/icons/svg/file-check-02.js +5 -0
  319. package/dist/src/nile-icon/icons/svg/file-check-02.js.map +1 -0
  320. package/dist/src/nile-icon/icons/svg/headphones-01.d.ts +5 -0
  321. package/dist/src/nile-icon/icons/svg/headphones-01.js +5 -0
  322. package/dist/src/nile-icon/icons/svg/headphones-01.js.map +1 -0
  323. package/dist/src/nile-icon/icons/svg/index.d.ts +7 -0
  324. package/dist/src/nile-icon/icons/svg/index.js +7 -0
  325. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  326. package/dist/src/nile-icon/icons/svg/keyboard-01.d.ts +5 -0
  327. package/dist/src/nile-icon/icons/svg/keyboard-01.js +5 -0
  328. package/dist/src/nile-icon/icons/svg/keyboard-01.js.map +1 -0
  329. package/dist/src/nile-icon/icons/svg/monitor-01.d.ts +5 -0
  330. package/dist/src/nile-icon/icons/svg/monitor-01.js +5 -0
  331. package/dist/src/nile-icon/icons/svg/monitor-01.js.map +1 -0
  332. package/dist/src/nile-icon/icons/svg/mouse.d.ts +5 -0
  333. package/dist/src/nile-icon/icons/svg/mouse.js +5 -0
  334. package/dist/src/nile-icon/icons/svg/mouse.js.map +1 -0
  335. package/dist/src/nile-icon/icons/svg/printer.d.ts +5 -0
  336. package/dist/src/nile-icon/icons/svg/printer.js +5 -0
  337. package/dist/src/nile-icon/icons/svg/printer.js.map +1 -0
  338. package/dist/src/nile-icon/nile-icon.test.d.ts +1 -0
  339. package/dist/src/nile-icon/nile-icon.test.js +45 -0
  340. package/dist/src/nile-icon/nile-icon.test.js.map +1 -0
  341. package/dist/src/nile-input/nile-input.test.d.ts +1 -0
  342. package/dist/src/nile-input/nile-input.test.js +139 -0
  343. package/dist/src/nile-input/nile-input.test.js.map +1 -0
  344. package/dist/src/nile-link/nile-link.test.d.ts +1 -0
  345. package/dist/src/nile-link/nile-link.test.js +72 -0
  346. package/dist/src/nile-link/nile-link.test.js.map +1 -0
  347. package/dist/src/nile-list/index.d.ts +1 -0
  348. package/dist/src/nile-list/index.js +2 -0
  349. package/dist/src/nile-list/index.js.map +1 -0
  350. package/dist/src/nile-list/nile-list.css.d.ts +12 -0
  351. package/dist/src/nile-list/nile-list.css.js +20 -0
  352. package/dist/src/nile-list/nile-list.css.js.map +1 -0
  353. package/dist/src/nile-list/nile-list.d.ts +33 -0
  354. package/dist/src/nile-list/nile-list.js +47 -0
  355. package/dist/src/nile-list/nile-list.js.map +1 -0
  356. package/dist/src/nile-list-item/index.d.ts +1 -0
  357. package/dist/src/nile-list-item/index.js +2 -0
  358. package/dist/src/nile-list-item/index.js.map +1 -0
  359. package/dist/src/nile-list-item/nile-list-item.css.d.ts +12 -0
  360. package/dist/src/nile-list-item/nile-list-item.css.js +66 -0
  361. package/dist/src/nile-list-item/nile-list-item.css.js.map +1 -0
  362. package/dist/src/nile-list-item/nile-list-item.d.ts +38 -0
  363. package/dist/src/nile-list-item/nile-list-item.js +96 -0
  364. package/dist/src/nile-list-item/nile-list-item.js.map +1 -0
  365. package/dist/src/nile-loader/nile-loader.test.d.ts +1 -0
  366. package/dist/src/nile-loader/nile-loader.test.js +39 -0
  367. package/dist/src/nile-loader/nile-loader.test.js.map +1 -0
  368. package/dist/src/nile-menu/nile-menu.css.js +19 -5
  369. package/dist/src/nile-menu/nile-menu.css.js.map +1 -1
  370. package/dist/src/nile-menu/nile-menu.d.ts +1 -0
  371. package/dist/src/nile-menu/nile-menu.js +25 -13
  372. package/dist/src/nile-menu/nile-menu.js.map +1 -1
  373. package/dist/src/nile-menu-item/nile-menu-item.css.js +1 -1
  374. package/dist/src/nile-menu-item/nile-menu-item.css.js.map +1 -1
  375. package/dist/src/nile-menu-item/nile-menu-item.js +21 -20
  376. package/dist/src/nile-menu-item/nile-menu-item.js.map +1 -1
  377. package/dist/src/nile-popover/nile-popover.css.js +6 -4
  378. package/dist/src/nile-popover/nile-popover.css.js.map +1 -1
  379. package/dist/src/nile-popover/nile-popover.d.ts +1 -0
  380. package/dist/src/nile-popover/nile-popover.js +7 -6
  381. package/dist/src/nile-popover/nile-popover.js.map +1 -1
  382. package/dist/src/nile-popover/nile-popover.test.d.ts +1 -0
  383. package/dist/src/nile-popover/nile-popover.test.js +73 -0
  384. package/dist/src/nile-popover/nile-popover.test.js.map +1 -0
  385. package/dist/src/nile-popup/nile-popup.css.d.ts +5 -5
  386. package/dist/src/nile-popup/nile-popup.css.js +13 -9
  387. package/dist/src/nile-popup/nile-popup.css.js.map +1 -1
  388. package/dist/src/nile-progress-bar/nile-progress-bar.test.d.ts +1 -0
  389. package/dist/src/nile-progress-bar/nile-progress-bar.test.js +48 -0
  390. package/dist/src/nile-progress-bar/nile-progress-bar.test.js.map +1 -0
  391. package/dist/src/nile-radio/nile-radio.test.d.ts +1 -0
  392. package/dist/src/nile-radio/nile-radio.test.js +71 -0
  393. package/dist/src/nile-radio/nile-radio.test.js.map +1 -0
  394. package/dist/src/nile-select/nile-select.d.ts +1 -0
  395. package/dist/src/nile-select/nile-select.js +5 -1
  396. package/dist/src/nile-select/nile-select.js.map +1 -1
  397. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.d.ts +1 -0
  398. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js +54 -0
  399. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js.map +1 -0
  400. package/dist/src/nile-tab-group/nile-tab-group.css.js +2 -2
  401. package/dist/src/nile-tab-group/nile-tab-group.css.js.map +1 -1
  402. package/dist/src/nile-tab-group/nile-tab-group.js +3 -1
  403. package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
  404. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js +2 -1
  405. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js.map +1 -1
  406. package/dist/src/nile-table-header-item/nile-table-header-item.css.js +2 -5
  407. package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
  408. package/dist/src/nile-textarea/nile-textarea.test.d.ts +1 -0
  409. package/dist/src/nile-textarea/nile-textarea.test.js +87 -0
  410. package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -0
  411. package/dist/src/nile-tree/index.d.ts +1 -0
  412. package/dist/src/nile-tree/index.js +2 -0
  413. package/dist/src/nile-tree/index.js.map +1 -0
  414. package/dist/src/nile-tree/nile-tree.css.d.ts +12 -0
  415. package/dist/src/nile-tree/nile-tree.css.js +48 -0
  416. package/dist/src/nile-tree/nile-tree.css.js.map +1 -0
  417. package/dist/src/nile-tree/nile-tree.d.ts +69 -0
  418. package/dist/src/nile-tree/nile-tree.js +376 -0
  419. package/dist/src/nile-tree/nile-tree.js.map +1 -0
  420. package/dist/src/nile-tree-item/index.d.ts +1 -0
  421. package/dist/src/nile-tree-item/index.js +2 -0
  422. package/dist/src/nile-tree-item/index.js.map +1 -0
  423. package/dist/src/nile-tree-item/nile-tree-item.css.d.ts +12 -0
  424. package/dist/src/nile-tree-item/nile-tree-item.css.js +176 -0
  425. package/dist/src/nile-tree-item/nile-tree-item.css.js.map +1 -0
  426. package/dist/src/nile-tree-item/nile-tree-item.d.ts +96 -0
  427. package/dist/src/nile-tree-item/nile-tree-item.js +324 -0
  428. package/dist/src/nile-tree-item/nile-tree-item.js.map +1 -0
  429. package/dist/tsconfig.tsbuildinfo +1 -1
  430. package/package.json +71 -2
  431. package/plopfile.js +11 -0
  432. package/src/index.ts +6 -1
  433. package/src/nile-avatar/nile-avatar.css.ts +5 -6
  434. package/src/nile-avatar/nile-avatar.test.ts +65 -0
  435. package/src/nile-badge/nile-badge.css.ts +45 -45
  436. package/src/nile-badge/nile-badge.test.ts +48 -0
  437. package/src/nile-breadcrumb-item/nile-breadcrumb-item.css.ts +3 -4
  438. package/src/nile-button/nile-button.test.ts +117 -0
  439. package/src/nile-button-toggle-group/nile-button-toggle-group.test.ts +130 -0
  440. package/src/nile-calendar/nile-calendar.css.ts +122 -191
  441. package/src/nile-calendar/nile-calendar.ts +148 -213
  442. package/src/nile-card/nile-card.test.ts +74 -0
  443. package/src/nile-date-picker/nile-date-picker.ts +9 -7
  444. package/src/nile-dialog/nile-dialog.css.ts +4 -1
  445. package/src/nile-dialog/nile-dialog.ts +4 -4
  446. package/src/nile-divider/index.ts +1 -0
  447. package/src/nile-divider/nile-divider.css.ts +42 -0
  448. package/src/nile-divider/nile-divider.ts +56 -0
  449. package/src/nile-drawer/nile-drawer.test.ts +106 -0
  450. package/src/nile-error-message/nile-error-message.test.ts +69 -0
  451. package/src/nile-form-group/nile-form-group.test.ts +63 -0
  452. package/src/nile-icon/icons/svg/alert.ts +5 -0
  453. package/src/nile-icon/icons/svg/file-check-02.ts +5 -0
  454. package/src/nile-icon/icons/svg/headphones-01.ts +5 -0
  455. package/src/nile-icon/icons/svg/index.ts +7 -0
  456. package/src/nile-icon/icons/svg/keyboard-01.ts +5 -0
  457. package/src/nile-icon/icons/svg/monitor-01.ts +5 -0
  458. package/src/nile-icon/icons/svg/mouse.ts +5 -0
  459. package/src/nile-icon/icons/svg/printer.ts +5 -0
  460. package/src/nile-icon/nile-icon.test.ts +53 -0
  461. package/src/nile-input/nile-input.test.ts +160 -0
  462. package/src/nile-link/nile-link.test.ts +83 -0
  463. package/src/nile-list/index.ts +1 -0
  464. package/src/nile-list/nile-list.css.ts +22 -0
  465. package/src/nile-list/nile-list.ts +64 -0
  466. package/src/nile-list-item/index.ts +1 -0
  467. package/src/nile-list-item/nile-list-item.css.ts +68 -0
  468. package/src/nile-list-item/nile-list-item.ts +104 -0
  469. package/src/nile-loader/nile-loader.test.ts +45 -0
  470. package/src/nile-menu/nile-menu.css.ts +19 -5
  471. package/src/nile-menu/nile-menu.ts +28 -17
  472. package/src/nile-menu-item/nile-menu-item.css.ts +1 -1
  473. package/src/nile-menu-item/nile-menu-item.ts +22 -21
  474. package/src/nile-popover/nile-popover.css.ts +6 -4
  475. package/src/nile-popover/nile-popover.test.ts +86 -0
  476. package/src/nile-popover/nile-popover.ts +7 -10
  477. package/src/nile-popup/nile-popup.css.ts +14 -10
  478. package/src/nile-progress-bar/nile-progress-bar.test.ts +55 -0
  479. package/src/nile-radio/nile-radio.test.ts +81 -0
  480. package/src/nile-select/nile-select.ts +3 -1
  481. package/src/nile-slide-toggle/nile-slide-toggle.test.ts +61 -0
  482. package/src/nile-tab-group/nile-tab-group.css.ts +2 -2
  483. package/src/nile-tab-group/nile-tab-group.ts +2 -1
  484. package/src/nile-table-cell-item/nile-table-cell-item.css.ts +2 -1
  485. package/src/nile-table-header-item/nile-table-header-item.css.ts +2 -5
  486. package/src/nile-textarea/nile-textarea.test.ts +102 -0
  487. package/src/nile-tree/index.ts +1 -0
  488. package/src/nile-tree/nile-tree.css.ts +50 -0
  489. package/src/nile-tree/nile-tree.ts +433 -0
  490. package/src/nile-tree-item/index.ts +1 -0
  491. package/src/nile-tree-item/nile-tree-item.css.ts +178 -0
  492. package/src/nile-tree-item/nile-tree-item.ts +330 -0
  493. 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,34 +153,37 @@ let NileMenu = class NileMenu extends NileElement {
147
153
  }
148
154
  render() {
149
155
  return html `
150
- <div>
151
- ${this.searchEnabled
156
+ ${this.searchEnabled
152
157
  ? html `<div class="search__wrapper" part="search__wrapper">
153
- <nile-input
154
- size="medium"
155
- style=${this.searchWidth
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 part="menu__items-wrapper" class="menu__items-wrapper">
167
174
  ${this.showNoResults
168
175
  ? html ` <nile-menu-item>${this.noResultsMessage}</nile-menu-item> `
169
176
  : ''}
170
177
 
171
178
  <slot
172
179
  name="menu__header"
180
+ part="menu__header"
173
181
  @click=${(e) => {
174
182
  e.stopPropagation();
175
183
  }}
176
184
  ></slot>
177
185
  <slot
186
+ class="menu__item-wrapper"
178
187
  @slotchange=${this.handleSlotChange}
179
188
  @click=${this.handleClick}
180
189
  @keydown=${this.handleKeyDown}
@@ -194,6 +203,9 @@ __decorate([
194
203
  __decorate([
195
204
  property({ type: Boolean, reflect: true })
196
205
  ], NileMenu.prototype, "searchEnabled", void 0);
206
+ __decorate([
207
+ property({ type: Boolean, reflect: true })
208
+ ], NileMenu.prototype, "customSearch", void 0);
197
209
  __decorate([
198
210
  property({ type: Boolean })
199
211
  ], 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 part=\"menu__items-wrapper\" 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 part=\"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"]}
@@ -25,7 +25,6 @@ export const styles = css `
25
25
 
26
26
  :host {
27
27
  display: block;
28
- padding:1px 6px;
29
28
  }
30
29
 
31
30
  :host([inert]) {
@@ -59,6 +58,7 @@ export const styles = css `
59
58
  flex: 1 1 auto;
60
59
  margin: auto 0;
61
60
  display: inline-flex;
61
+ padding: 0 16px;
62
62
  }
63
63
 
64
64
  .menu-item .menu-item__prefix {
@@ -1 +1 @@
1
- {"version":3,"file":"nile-menu-item.css.js","sourceRoot":"","sources":["../../../src/nile-menu-item/nile-menu-item.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GxB,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 * MenuItem CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n display: block;\n padding:1px 6px;\n }\n\n :host([inert]) {\n display: none;\n }\n\n .menu-item {\n position: relative;\n display: flex;\n border-radius: 4px;\n align-items: stretch;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.8;\n letter-spacing: normal;\n color: hsl(240 5.3% 26.1%);\n min-height:40px;\n transition: 150ms fill;\n user-select: none;\n white-space: nowrap;\n cursor: pointer;\n }\n\n .menu-item.menu-item--disabled {\n outline: none;\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .menu-item .menu-item__label {\n flex: 1 1 auto;\n margin: auto 0;\n display: inline-flex;\n }\n\n .menu-item .menu-item__prefix {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n }\n\n .menu-item .menu-item__prefix::slotted(*) {\n margin-inline-end: 0.5rem;\n }\n\n .menu-item .menu-item__suffix {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n }\n\n .menu-item .menu-item__suffix::slotted(*) {\n margin-inline-start: 0.5rem;\n }\n\n :host(:focus-visible) {\n outline: none;\n }\n\n :host(:hover:not([aria-disabled='true'], :focus-visible)) .menu-item {\n background-color: #F9FAFB;\n color: hsl(0, 0%, 0%);\n }\n\n :host(:focus-visible) .menu-item {\n outline: none;\n background-color: hsl(200.4 98% 39.4%);\n color: hsl(0, 0%, 100%);\n opacity: 1;\n }\n\n .menu-item .menu-item__check,\n .menu-item .menu-item__chevron {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5em;\n visibility: hidden;\n }\n\n .menu-item--checked .menu-item__check,\n .menu-item--has-submenu .menu-item__chevron {\n visibility: visible;\n }\n\n @media (forced-colors: active) {\n :host(:hover:not([aria-disabled='true'])) .menu-item,\n :host(:focus-visible) .menu-item {\n outline: dashed 1px SelectedItem;\n outline-offset: -1px;\n }\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-menu-item.css.js","sourceRoot":"","sources":["../../../src/nile-menu-item/nile-menu-item.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GxB,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 * MenuItem CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n display: block;\n }\n\n :host([inert]) {\n display: none;\n }\n\n .menu-item {\n position: relative;\n display: flex;\n border-radius: 4px;\n align-items: stretch;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.8;\n letter-spacing: normal;\n color: hsl(240 5.3% 26.1%);\n min-height:40px;\n transition: 150ms fill;\n user-select: none;\n white-space: nowrap;\n cursor: pointer;\n }\n\n .menu-item.menu-item--disabled {\n outline: none;\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .menu-item .menu-item__label {\n flex: 1 1 auto;\n margin: auto 0;\n display: inline-flex;\n padding: 0 16px;\n }\n\n .menu-item .menu-item__prefix {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n }\n\n .menu-item .menu-item__prefix::slotted(*) {\n margin-inline-end: 0.5rem;\n }\n\n .menu-item .menu-item__suffix {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n }\n\n .menu-item .menu-item__suffix::slotted(*) {\n margin-inline-start: 0.5rem;\n }\n\n :host(:focus-visible) {\n outline: none;\n }\n\n :host(:hover:not([aria-disabled='true'], :focus-visible)) .menu-item {\n background-color: #F9FAFB;\n color: hsl(0, 0%, 0%);\n }\n\n :host(:focus-visible) .menu-item {\n outline: none;\n background-color: hsl(200.4 98% 39.4%);\n color: hsl(0, 0%, 100%);\n opacity: 1;\n }\n\n .menu-item .menu-item__check,\n .menu-item .menu-item__chevron {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5em;\n visibility: hidden;\n }\n\n .menu-item--checked .menu-item__check,\n .menu-item--has-submenu .menu-item__chevron {\n visibility: visible;\n }\n\n @media (forced-colors: active) {\n :host(:hover:not([aria-disabled='true'])) .menu-item,\n :host(:focus-visible) .menu-item {\n outline: dashed 1px SelectedItem;\n outline-offset: -1px;\n }\n }\n`;\n\nexport default [styles];\n"]}
@@ -126,20 +126,19 @@ let NileMenuItem = class NileMenuItem extends NileElement {
126
126
  'menu-item--has-submenu': this.hasSubMenu, // reserved for future use
127
127
  })}
128
128
  >
129
- <span part="checked-icon" class="menu-item__check">
130
- <nile-icon
131
- name="tick"
132
- library="system"
133
- aria-hidden="true"
134
- ></nile-icon>
135
- </span>
129
+ ${this.checked
130
+ ? html `
131
+ <span part="checked-icon" class="menu-item__check">
132
+ <nile-icon
133
+ name="tick"
134
+ library="system"
135
+ aria-hidden="true"
136
+ ></nile-icon>
137
+ </span>
138
+ `
139
+ : ``}
136
140
 
137
- <slot
138
- name="prefix"
139
- part="prefix"
140
- class="menu-item__prefix"
141
-
142
- ></slot>
141
+ <slot name="prefix" part="prefix" class="menu-item__prefix"></slot>
143
142
 
144
143
  <slot
145
144
  part="label"
@@ -149,13 +148,15 @@ let NileMenuItem = class NileMenuItem extends NileElement {
149
148
 
150
149
  <slot name="suffix" part="suffix" class="menu-item__suffix"></slot>
151
150
 
152
- <span part="submenu-icon" class="menu-item__chevron">
153
- <nile-icon
154
- name="arrowright"
155
- library="system"
156
- aria-hidden="true"
157
- ></nile-icon>
158
- </span>
151
+ ${this.hasSubMenu
152
+ ? html ` <span part="submenu-icon" class="menu-item__chevron">
153
+ <nile-icon
154
+ name="arrowright"
155
+ library="system"
156
+ aria-hidden="true"
157
+ ></nile-icon>
158
+ </span>`
159
+ : ``}
159
160
  </div>
160
161
  `;
161
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nile-menu-item.js","sourceRoot":"","sources":["../../../src/nile-menu-item/nile-menu-item.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 } from 'lit/decorators.js';\nimport { styles } from './nile-menu-item.css';\nimport '../nile-icon';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators.js';\nimport { getTextContent } from '../internal/slot';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup } from 'lit';\n/**\n * Nile icon component.\n *\n * @tag nile-menu-item\n *\n * @summary Menu items provide options for the user to pick from in a menu.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n *\n * @slot - The menu item's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart base - The component's base wrapper.\n * @csspart checked-icon - The checked icon, which is only visible when the menu item is checked.\n * @csspart prefix - The prefix container.\n * @csspart label - The menu item label.\n * @csspart suffix - The suffix container.\n * @csspart submenu-icon - The submenu icon, visible only when the menu item has a submenu (not yet implemented).\n */\n\n@customElement('nile-menu-item')\nexport class NileMenuItem extends NileElement {\n static styles: CSSResultGroup = styles;\n\n private cachedTextLabel: string;\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n\n @query('.menu-item') menuItem: HTMLElement;\n\n /** The type of menu item to render. To use `checked`, this value must be set to `checkbox`. */\n @property() type: 'normal' | 'checkbox' = 'normal';\n\n /** Draws the item in a checked state. */\n @property({ type: Boolean, reflect: true }) checked = false;\n\n /** A unique value to store in the menu item. This can be used as a way to identify menu items when selected. */\n @property() value = '';\n\n /** Draws the menu item in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Draws the item in a checked state. */\n @property({ type: Boolean, reflect: true }) hasSubMenu = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleHostClick = this.handleHostClick.bind(this);\n this.addEventListener('click', this.handleHostClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.handleHostClick);\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange', {\n bubbles: true,\n composed: false,\n cancelable: false,\n });\n }\n }\n\n private handleHostClick(event: MouseEvent) {\n // Prevent the click event from being emitted when the button is disabled or loading\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @watch('checked')\n handleCheckedChange() {\n // For proper accessibility, users have to use type=\"checkbox\" to use the checked attribute\n if (this.checked && this.type !== 'checkbox') {\n this.checked = false;\n console.error(\n 'The checked attribute can only be used on menu items with type=\"checkbox\"',\n this\n );\n return;\n }\n\n // Only checkbox types can receive the aria-checked attribute\n if (this.type === 'checkbox') {\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.removeAttribute('aria-checked');\n }\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('type')\n handleTypeChange() {\n if (this.type === 'checkbox') {\n this.setAttribute('role', 'menuitemcheckbox');\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.setAttribute('role', 'menuitem');\n this.removeAttribute('aria-checked');\n }\n }\n\n /** Returns a text label based on the contents of the menu item's default slot. */\n getTextLabel() {\n return getTextContent(this.defaultSlot);\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=${classMap({\n 'menu-item': true,\n 'menu-item--checked': this.checked,\n 'menu-item--disabled': this.disabled,\n 'menu-item--has-submenu': this.hasSubMenu, // reserved for future use\n })}\n >\n <span part=\"checked-icon\" class=\"menu-item__check\">\n <nile-icon\n name=\"tick\"\n library=\"system\"\n aria-hidden=\"true\"\n ></nile-icon>\n </span>\n\n <slot\n name=\"prefix\"\n part=\"prefix\"\n class=\"menu-item__prefix\"\n \n ></slot>\n\n <slot\n part=\"label\"\n class=\"menu-item__label\"\n @slotchange=${this.handleDefaultSlotChange}\n ></slot>\n\n <slot name=\"suffix\" part=\"suffix\" class=\"menu-item__suffix\"></slot>\n\n <span part=\"submenu-icon\" class=\"menu-item__chevron\">\n <nile-icon\n name=\"arrowright\"\n library=\"system\"\n aria-hidden=\"true\"\n ></nile-icon>\n </span>\n </div>\n `;\n }\n}\n\nexport default NileMenuItem;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-menu-item': NileMenuItem;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-menu-item.js","sourceRoot":"","sources":["../../../src/nile-menu-item/nile-menu-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAEL,IAAI,EACJ,QAAQ,GAGT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,WAAW;IAAtC;;QASL,+FAA+F;QACnF,SAAI,GAA0B,QAAQ,CAAC;QAEnD,yCAAyC;QACG,YAAO,GAAG,KAAK,CAAC;QAE5D,gHAAgH;QACpG,UAAK,GAAG,EAAE,CAAC;QAEvB,qEAAqE;QACzB,aAAQ,GAAG,KAAK,CAAC;QAE7D,yCAAyC;QACG,eAAU,GAAG,KAAK,CAAC;IA+HjE,CAAC;IA7HC,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC;IAEO,uBAAuB;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,yCAAyC;QACzC,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE;YAC/C,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,OAAO;SACR;QAED,4EAA4E;QAC5E,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE;YACtC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,eAAe,CAAC,KAAiB;QACvC,oFAAoF;QACpF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;SAClC;IACH,CAAC;IAGD,mBAAmB;QACjB,2FAA2F;QAC3F,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,KAAK,CACX,2EAA2E,EAC3E,IAAI,CACL,CAAC;YACF,OAAO;SACR;QAED,6DAA6D;QAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACpE;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SACtC;IACH,CAAC;IAGD,oBAAoB;QAClB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAGD,gBAAgB;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACpE;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SACtC;IACH,CAAC;IAED,kFAAkF;IAClF,YAAY;QACV,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;gBAGC,QAAQ,CAAC;YACf,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,IAAI,CAAC,OAAO;YAClC,qBAAqB,EAAE,IAAI,CAAC,QAAQ;YACpC,wBAAwB,EAAE,IAAI,CAAC,UAAU,EAAE,0BAA0B;SACtE,CAAC;;UAEA,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,IAAI,CAAA;;;;;;;;aAQH;YACH,CAAC,CAAC,EAAE;;;;;;;wBAOU,IAAI,CAAC,uBAAuB;;;;;UAK1C,IAAI,CAAC,UAAU;YACf,CAAC,CAAC,IAAI,CAAA;;;;;;oBAMI;YACV,CAAC,CAAC,EAAE;;KAET,CAAC;IACJ,CAAC;;AAnJM,mBAAM,GAAmB,MAAM,CAAC;AAIZ;IAA1B,KAAK,CAAC,kBAAkB,CAAC;iDAA8B;AAEnC;IAApB,KAAK,CAAC,YAAY,CAAC;8CAAuB;AAG/B;IAAX,QAAQ,EAAE;0CAAwC;AAGP;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAiB;AAGhD;IAAX,QAAQ,EAAE;2CAAY;AAGqB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAAkB;AAGjB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDAAoB;AA0C/D;IADC,KAAK,CAAC,SAAS,CAAC;uDAkBhB;AAGD;IADC,KAAK,CAAC,UAAU,CAAC;wDAGjB;AAGD;IADC,KAAK,CAAC,MAAM,CAAC;oDASb;AAjGU,YAAY;IADxB,aAAa,CAAC,gBAAgB,CAAC;GACnB,YAAY,CAqJxB;SArJY,YAAY;AAuJzB,eAAe,YAAY,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 {\n LitElement,\n html,\n property,\n CSSResultArray,\n TemplateResult,\n} from 'lit-element';\nimport { customElement } from 'lit/decorators.js';\nimport { styles } from './nile-menu-item.css';\nimport '../nile-icon';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query } from 'lit/decorators.js';\nimport { getTextContent } from '../internal/slot';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup } from 'lit';\n/**\n * Nile icon component.\n *\n * @tag nile-menu-item\n *\n * @summary Menu items provide options for the user to pick from in a menu.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n *\n * @slot - The menu item's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart base - The component's base wrapper.\n * @csspart checked-icon - The checked icon, which is only visible when the menu item is checked.\n * @csspart prefix - The prefix container.\n * @csspart label - The menu item label.\n * @csspart suffix - The suffix container.\n * @csspart submenu-icon - The submenu icon, visible only when the menu item has a submenu (not yet implemented).\n */\n\n@customElement('nile-menu-item')\nexport class NileMenuItem extends NileElement {\n static styles: CSSResultGroup = styles;\n\n private cachedTextLabel: string;\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n\n @query('.menu-item') menuItem: HTMLElement;\n\n /** The type of menu item to render. To use `checked`, this value must be set to `checkbox`. */\n @property() type: 'normal' | 'checkbox' = 'normal';\n\n /** Draws the item in a checked state. */\n @property({ type: Boolean, reflect: true }) checked = false;\n\n /** A unique value to store in the menu item. This can be used as a way to identify menu items when selected. */\n @property() value = '';\n\n /** Draws the menu item in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Draws the item in a checked state. */\n @property({ type: Boolean, reflect: true }) hasSubMenu = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleHostClick = this.handleHostClick.bind(this);\n this.addEventListener('click', this.handleHostClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.handleHostClick);\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange', {\n bubbles: true,\n composed: false,\n cancelable: false,\n });\n }\n }\n\n private handleHostClick(event: MouseEvent) {\n // Prevent the click event from being emitted when the button is disabled or loading\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n\n @watch('checked')\n handleCheckedChange() {\n // For proper accessibility, users have to use type=\"checkbox\" to use the checked attribute\n if (this.checked && this.type !== 'checkbox') {\n this.checked = false;\n console.error(\n 'The checked attribute can only be used on menu items with type=\"checkbox\"',\n this\n );\n return;\n }\n\n // Only checkbox types can receive the aria-checked attribute\n if (this.type === 'checkbox') {\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.removeAttribute('aria-checked');\n }\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('type')\n handleTypeChange() {\n if (this.type === 'checkbox') {\n this.setAttribute('role', 'menuitemcheckbox');\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n } else {\n this.setAttribute('role', 'menuitem');\n this.removeAttribute('aria-checked');\n }\n }\n\n /** Returns a text label based on the contents of the menu item's default slot. */\n getTextLabel() {\n return getTextContent(this.defaultSlot);\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=${classMap({\n 'menu-item': true,\n 'menu-item--checked': this.checked,\n 'menu-item--disabled': this.disabled,\n 'menu-item--has-submenu': this.hasSubMenu, // reserved for future use\n })}\n >\n ${this.checked\n ? html`\n <span part=\"checked-icon\" class=\"menu-item__check\">\n <nile-icon\n name=\"tick\"\n library=\"system\"\n aria-hidden=\"true\"\n ></nile-icon>\n </span>\n `\n : ``}\n\n <slot name=\"prefix\" part=\"prefix\" class=\"menu-item__prefix\"></slot>\n\n <slot\n part=\"label\"\n class=\"menu-item__label\"\n @slotchange=${this.handleDefaultSlotChange}\n ></slot>\n\n <slot name=\"suffix\" part=\"suffix\" class=\"menu-item__suffix\"></slot>\n\n ${this.hasSubMenu\n ? html` <span part=\"submenu-icon\" class=\"menu-item__chevron\">\n <nile-icon\n name=\"arrowright\"\n library=\"system\"\n aria-hidden=\"true\"\n ></nile-icon>\n </span>`\n : ``}\n </div>\n `;\n }\n}\n\nexport default NileMenuItem;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-menu-item': NileMenuItem;\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":"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","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';