@aquera/nile-elements 0.0.80 → 0.0.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +12 -0
  2. package/demo/filenames.txt +1 -1
  3. package/demo/variables.css +54 -0
  4. package/demo/variables_v2.css +51 -0
  5. package/dist/fixture-1a9fb5f1.cjs.js +395 -0
  6. package/dist/fixture-1a9fb5f1.cjs.js.map +1 -0
  7. package/dist/fixture-81e5a936.esm.js +569 -0
  8. package/dist/index.cjs.js +1 -1
  9. package/dist/index.esm.js +1 -1
  10. package/dist/index.iife.js +976 -563
  11. package/dist/internal/animate.cjs.js +1 -1
  12. package/dist/internal/animate.cjs.js.map +1 -1
  13. package/dist/internal/animate.esm.js +1 -1
  14. package/dist/internal/drag.cjs.js +2 -0
  15. package/dist/internal/drag.cjs.js.map +1 -0
  16. package/dist/internal/drag.esm.js +1 -0
  17. package/dist/internal/math.cjs.js +2 -0
  18. package/dist/internal/math.cjs.js.map +1 -0
  19. package/dist/internal/math.esm.js +1 -0
  20. package/dist/nile-avatar/nile-avatar.css.cjs.js +1 -1
  21. package/dist/nile-avatar/nile-avatar.css.cjs.js.map +1 -1
  22. package/dist/nile-avatar/nile-avatar.css.esm.js +7 -8
  23. package/dist/nile-avatar/nile-avatar.test.cjs.js +2 -0
  24. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -0
  25. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -0
  26. package/dist/nile-badge/index.cjs.js +1 -1
  27. package/dist/nile-badge/index.esm.js +1 -1
  28. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  29. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  30. package/dist/nile-badge/nile-badge.css.cjs.js +1 -1
  31. package/dist/nile-badge/nile-badge.css.cjs.js.map +1 -1
  32. package/dist/nile-badge/nile-badge.css.esm.js +47 -47
  33. package/dist/nile-badge/nile-badge.esm.js +1 -1
  34. package/dist/nile-badge/nile-badge.test.cjs.js +2 -0
  35. package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -0
  36. package/dist/nile-badge/nile-badge.test.esm.js +1 -0
  37. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js +1 -1
  38. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js.map +1 -1
  39. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.esm.js +3 -4
  40. package/dist/nile-button/index.cjs.js +1 -1
  41. package/dist/nile-button/index.esm.js +1 -1
  42. package/dist/nile-button/nile-button.cjs.js +1 -1
  43. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  44. package/dist/nile-button/nile-button.esm.js +1 -1
  45. package/dist/nile-button/nile-button.test.cjs.js +2 -0
  46. package/dist/nile-button/nile-button.test.cjs.js.map +1 -0
  47. package/dist/nile-button/nile-button.test.esm.js +4 -0
  48. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +2 -0
  49. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js.map +1 -0
  50. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +49 -0
  51. package/dist/nile-calendar/index.cjs.js +1 -1
  52. package/dist/nile-calendar/index.esm.js +1 -1
  53. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  54. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  55. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  56. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  57. package/dist/nile-calendar/nile-calendar.css.esm.js +122 -191
  58. package/dist/nile-calendar/nile-calendar.esm.js +135 -135
  59. package/dist/nile-card/nile-card.test.cjs.js +2 -0
  60. package/dist/nile-card/nile-card.test.cjs.js.map +1 -0
  61. package/dist/nile-card/nile-card.test.esm.js +51 -0
  62. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -394
  63. package/dist/nile-checkbox/nile-checkbox.test.cjs.js.map +1 -1
  64. package/dist/nile-checkbox/nile-checkbox.test.esm.js +3 -571
  65. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  66. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  67. package/dist/nile-date-picker/nile-date-picker.esm.js +1 -1
  68. package/dist/nile-dialog/index.cjs.js +1 -1
  69. package/dist/nile-dialog/index.esm.js +1 -1
  70. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  71. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  72. package/dist/nile-dialog/nile-dialog.css.cjs.js +1 -1
  73. package/dist/nile-dialog/nile-dialog.css.cjs.js.map +1 -1
  74. package/dist/nile-dialog/nile-dialog.css.esm.js +4 -1
  75. package/dist/nile-dialog/nile-dialog.esm.js +5 -4
  76. package/dist/nile-drawer/index.cjs.js +1 -1
  77. package/dist/nile-drawer/index.esm.js +1 -1
  78. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  79. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  80. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  81. package/dist/nile-drawer/nile-drawer.test.cjs.js +2 -0
  82. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -0
  83. package/dist/nile-drawer/nile-drawer.test.esm.js +18 -0
  84. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +2 -0
  85. package/dist/nile-empty-state/nile-empty-state.test.cjs.js.map +1 -0
  86. package/dist/nile-empty-state/nile-empty-state.test.esm.js +9 -0
  87. package/dist/nile-error-message/nile-error-message.test.cjs.js +2 -0
  88. package/dist/nile-error-message/nile-error-message.test.cjs.js.map +1 -0
  89. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -0
  90. package/dist/nile-form-group/nile-form-group.test.cjs.js +2 -0
  91. package/dist/nile-form-group/nile-form-group.test.cjs.js.map +1 -0
  92. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -0
  93. package/dist/nile-hero/nile-hero.test.cjs.js +2 -0
  94. package/dist/nile-hero/nile-hero.test.cjs.js.map +1 -0
  95. package/dist/nile-hero/nile-hero.test.esm.js +14 -0
  96. package/dist/nile-icon/icons/svg/alert.cjs.js +2 -0
  97. package/dist/nile-icon/icons/svg/alert.cjs.js.map +1 -0
  98. package/dist/nile-icon/icons/svg/alert.esm.js +1 -0
  99. package/dist/nile-icon/icons/svg/file-check-02.cjs.js +2 -0
  100. package/dist/nile-icon/icons/svg/file-check-02.cjs.js.map +1 -0
  101. package/dist/nile-icon/icons/svg/file-check-02.esm.js +1 -0
  102. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  103. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  104. package/dist/nile-icon/icons/svg/monitor-01.cjs.js +2 -0
  105. package/dist/nile-icon/icons/svg/monitor-01.cjs.js.map +1 -0
  106. package/dist/nile-icon/icons/svg/monitor-01.esm.js +1 -0
  107. package/dist/nile-icon/index.cjs.js +1 -1
  108. package/dist/nile-icon/index.cjs.js.map +1 -1
  109. package/dist/nile-icon/index.esm.js +1 -1
  110. package/dist/nile-icon/nile-icon.test.cjs.js +2 -0
  111. package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -0
  112. package/dist/nile-icon/nile-icon.test.esm.js +1 -0
  113. package/dist/nile-icon-button/index.cjs.js +1 -1
  114. package/dist/nile-icon-button/index.esm.js +1 -1
  115. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  116. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  117. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  118. package/dist/nile-input/index.cjs.js +1 -1
  119. package/dist/nile-input/index.esm.js +1 -1
  120. package/dist/nile-input/nile-input.cjs.js +1 -1
  121. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  122. package/dist/nile-input/nile-input.esm.js +1 -1
  123. package/dist/nile-input/nile-input.test.cjs.js +2 -0
  124. package/dist/nile-input/nile-input.test.cjs.js.map +1 -0
  125. package/dist/nile-input/nile-input.test.esm.js +17 -0
  126. package/dist/nile-link/nile-link.test.cjs.js +2 -0
  127. package/dist/nile-link/nile-link.test.cjs.js.map +1 -0
  128. package/dist/nile-link/nile-link.test.esm.js +1 -0
  129. package/dist/nile-list/index.cjs.js +2 -0
  130. package/dist/nile-list/index.cjs.js.map +1 -0
  131. package/dist/nile-list/index.esm.js +1 -0
  132. package/dist/nile-list/nile-list.cjs.js +2 -0
  133. package/dist/nile-list/nile-list.cjs.js.map +1 -0
  134. package/dist/nile-list/nile-list.css.cjs.js +2 -0
  135. package/dist/nile-list/nile-list.css.cjs.js.map +1 -0
  136. package/dist/nile-list/nile-list.css.esm.js +8 -0
  137. package/dist/nile-list/nile-list.esm.js +3 -0
  138. package/dist/nile-list-item/index.cjs.js +2 -0
  139. package/dist/nile-list-item/index.cjs.js.map +1 -0
  140. package/dist/nile-list-item/index.esm.js +1 -0
  141. package/dist/nile-list-item/nile-list-item.cjs.js +2 -0
  142. package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -0
  143. package/dist/nile-list-item/nile-list-item.css.cjs.js +2 -0
  144. package/dist/nile-list-item/nile-list-item.css.cjs.js.map +1 -0
  145. package/dist/nile-list-item/nile-list-item.css.esm.js +54 -0
  146. package/dist/nile-list-item/nile-list-item.esm.js +21 -0
  147. package/dist/nile-loader/nile-loader.test.cjs.js +2 -0
  148. package/dist/nile-loader/nile-loader.test.cjs.js.map +1 -0
  149. package/dist/nile-loader/nile-loader.test.esm.js +1 -0
  150. package/dist/nile-menu/nile-menu.cjs.js +1 -1
  151. package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
  152. package/dist/nile-menu/nile-menu.css.cjs.js +1 -1
  153. package/dist/nile-menu/nile-menu.css.cjs.js.map +1 -1
  154. package/dist/nile-menu/nile-menu.css.esm.js +21 -7
  155. package/dist/nile-menu/nile-menu.esm.js +17 -15
  156. package/dist/nile-menu-item/index.cjs.js +1 -1
  157. package/dist/nile-menu-item/index.esm.js +1 -1
  158. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  159. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  160. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  161. package/dist/nile-option/index.cjs.js +1 -1
  162. package/dist/nile-option/index.esm.js +1 -1
  163. package/dist/nile-option/nile-option.cjs.js +1 -1
  164. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  165. package/dist/nile-option/nile-option.esm.js +1 -1
  166. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  167. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  168. package/dist/nile-popover/nile-popover.css.cjs.js +1 -1
  169. package/dist/nile-popover/nile-popover.css.cjs.js.map +1 -1
  170. package/dist/nile-popover/nile-popover.css.esm.js +6 -4
  171. package/dist/nile-popover/nile-popover.esm.js +4 -7
  172. package/dist/nile-popover/nile-popover.test.cjs.js +2 -0
  173. package/dist/nile-popover/nile-popover.test.cjs.js.map +1 -0
  174. package/dist/nile-popover/nile-popover.test.esm.js +21 -0
  175. package/dist/nile-popup/nile-popup.css.cjs.js +1 -1
  176. package/dist/nile-popup/nile-popup.css.cjs.js.map +1 -1
  177. package/dist/nile-popup/nile-popup.css.esm.js +8 -4
  178. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +2 -0
  179. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js.map +1 -0
  180. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -0
  181. package/dist/nile-radio/nile-radio.test.cjs.js +2 -0
  182. package/dist/nile-radio/nile-radio.test.cjs.js.map +1 -0
  183. package/dist/nile-radio/nile-radio.test.esm.js +1 -0
  184. package/dist/nile-select/index.cjs.js +1 -1
  185. package/dist/nile-select/index.esm.js +1 -1
  186. package/dist/nile-select/nile-select.cjs.js +1 -1
  187. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  188. package/dist/nile-select/nile-select.esm.js +3 -3
  189. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +2 -0
  190. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js.map +1 -0
  191. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -0
  192. package/dist/nile-split-panel/index.cjs.js +2 -0
  193. package/dist/nile-split-panel/index.cjs.js.map +1 -0
  194. package/dist/nile-split-panel/index.esm.js +1 -0
  195. package/dist/nile-split-panel/nile-split-panel.cjs.js +2 -0
  196. package/dist/nile-split-panel/nile-split-panel.cjs.js.map +1 -0
  197. package/dist/nile-split-panel/nile-split-panel.css.cjs.js +2 -0
  198. package/dist/nile-split-panel/nile-split-panel.css.cjs.js.map +1 -0
  199. package/dist/nile-split-panel/nile-split-panel.css.esm.js +87 -0
  200. package/dist/nile-split-panel/nile-split-panel.esm.js +21 -0
  201. package/dist/nile-stepper/nile-stepper.cjs.js +1 -1
  202. package/dist/nile-stepper/nile-stepper.cjs.js.map +1 -1
  203. package/dist/nile-stepper/nile-stepper.esm.js +1 -1
  204. package/dist/nile-stepper/nile-stepper.test.cjs.js +2 -0
  205. package/dist/nile-stepper/nile-stepper.test.cjs.js.map +1 -0
  206. package/dist/nile-stepper/nile-stepper.test.esm.js +1 -0
  207. package/dist/nile-tab/index.cjs.js +1 -1
  208. package/dist/nile-tab/index.esm.js +1 -1
  209. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  210. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  211. package/dist/nile-tab/nile-tab.esm.js +1 -1
  212. package/dist/nile-tab-group/index.cjs.js +1 -1
  213. package/dist/nile-tab-group/index.esm.js +1 -1
  214. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  215. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  216. package/dist/nile-tab-group/nile-tab-group.css.cjs.js +1 -1
  217. package/dist/nile-tab-group/nile-tab-group.css.cjs.js.map +1 -1
  218. package/dist/nile-tab-group/nile-tab-group.css.esm.js +2 -2
  219. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  220. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
  221. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
  222. package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +0 -4
  223. package/dist/nile-tag/index.cjs.js +1 -1
  224. package/dist/nile-tag/index.esm.js +1 -1
  225. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  226. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  227. package/dist/nile-tag/nile-tag.esm.js +1 -1
  228. package/dist/nile-textarea/nile-textarea.test.cjs.js +2 -0
  229. package/dist/nile-textarea/nile-textarea.test.cjs.js.map +1 -0
  230. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -0
  231. package/dist/nile-toast/index.cjs.js +1 -1
  232. package/dist/nile-toast/index.esm.js +1 -1
  233. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  234. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  235. package/dist/nile-toast/nile-toast.esm.js +1 -1
  236. package/dist/nile-tree/index.cjs.js +2 -0
  237. package/dist/nile-tree/index.cjs.js.map +1 -0
  238. package/dist/nile-tree/index.esm.js +1 -0
  239. package/dist/nile-tree/nile-tree.cjs.js +2 -0
  240. package/dist/nile-tree/nile-tree.cjs.js.map +1 -0
  241. package/dist/nile-tree/nile-tree.css.cjs.js +2 -0
  242. package/dist/nile-tree/nile-tree.css.cjs.js.map +1 -0
  243. package/dist/nile-tree/nile-tree.css.esm.js +36 -0
  244. package/dist/nile-tree/nile-tree.esm.js +13 -0
  245. package/dist/nile-tree-item/index.cjs.js +2 -0
  246. package/dist/nile-tree-item/index.cjs.js.map +1 -0
  247. package/dist/nile-tree-item/index.esm.js +1 -0
  248. package/dist/nile-tree-item/nile-tree-item.cjs.js +2 -0
  249. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -0
  250. package/dist/nile-tree-item/nile-tree-item.css.cjs.js +2 -0
  251. package/dist/nile-tree-item/nile-tree-item.css.cjs.js.map +1 -0
  252. package/dist/nile-tree-item/nile-tree-item.css.esm.js +164 -0
  253. package/dist/nile-tree-item/nile-tree-item.esm.js +63 -0
  254. package/dist/src/index.d.ts +5 -0
  255. package/dist/src/index.js +5 -0
  256. package/dist/src/index.js.map +1 -1
  257. package/dist/src/internal/drag.d.ts +15 -0
  258. package/dist/src/internal/drag.js +28 -0
  259. package/dist/src/internal/drag.js.map +1 -0
  260. package/dist/src/internal/math.d.ts +2 -0
  261. package/dist/src/internal/math.js +12 -0
  262. package/dist/src/internal/math.js.map +1 -0
  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 +164 -167
  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.js +1 -0
  290. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  291. package/dist/src/nile-dialog/nile-dialog.css.js +4 -1
  292. package/dist/src/nile-dialog/nile-dialog.css.js.map +1 -1
  293. package/dist/src/nile-dialog/nile-dialog.js +4 -3
  294. package/dist/src/nile-dialog/nile-dialog.js.map +1 -1
  295. package/dist/src/nile-drawer/nile-drawer.test.d.ts +1 -0
  296. package/dist/src/nile-drawer/nile-drawer.test.js +88 -0
  297. package/dist/src/nile-drawer/nile-drawer.test.js.map +1 -0
  298. package/dist/src/nile-empty-state/nile-empty-state.test.d.ts +1 -0
  299. package/dist/src/nile-empty-state/nile-empty-state.test.js +63 -0
  300. package/dist/src/nile-empty-state/nile-empty-state.test.js.map +1 -0
  301. package/dist/src/nile-error-message/nile-error-message.test.d.ts +1 -0
  302. package/dist/src/nile-error-message/nile-error-message.test.js +61 -0
  303. package/dist/src/nile-error-message/nile-error-message.test.js.map +1 -0
  304. package/dist/src/nile-form-group/nile-form-group.test.d.ts +1 -0
  305. package/dist/src/nile-form-group/nile-form-group.test.js +55 -0
  306. package/dist/src/nile-form-group/nile-form-group.test.js.map +1 -0
  307. package/dist/src/nile-hero/nile-hero.test.d.ts +1 -0
  308. package/dist/src/nile-hero/nile-hero.test.js +42 -0
  309. package/dist/src/nile-hero/nile-hero.test.js.map +1 -0
  310. package/dist/src/nile-icon/icons/svg/alert.d.ts +5 -0
  311. package/dist/src/nile-icon/icons/svg/alert.js +5 -0
  312. package/dist/src/nile-icon/icons/svg/alert.js.map +1 -0
  313. package/dist/src/nile-icon/icons/svg/file-check-02.d.ts +5 -0
  314. package/dist/src/nile-icon/icons/svg/file-check-02.js +5 -0
  315. package/dist/src/nile-icon/icons/svg/file-check-02.js.map +1 -0
  316. package/dist/src/nile-icon/icons/svg/index.d.ts +3 -0
  317. package/dist/src/nile-icon/icons/svg/index.js +3 -0
  318. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  319. package/dist/src/nile-icon/icons/svg/monitor-01.d.ts +5 -0
  320. package/dist/src/nile-icon/icons/svg/monitor-01.js +5 -0
  321. package/dist/src/nile-icon/icons/svg/monitor-01.js.map +1 -0
  322. package/dist/src/nile-icon/nile-icon.test.d.ts +1 -0
  323. package/dist/src/nile-icon/nile-icon.test.js +45 -0
  324. package/dist/src/nile-icon/nile-icon.test.js.map +1 -0
  325. package/dist/src/nile-input/nile-input.test.d.ts +1 -0
  326. package/dist/src/nile-input/nile-input.test.js +139 -0
  327. package/dist/src/nile-input/nile-input.test.js.map +1 -0
  328. package/dist/src/nile-link/nile-link.test.d.ts +1 -0
  329. package/dist/src/nile-link/nile-link.test.js +72 -0
  330. package/dist/src/nile-link/nile-link.test.js.map +1 -0
  331. package/dist/src/nile-list/index.d.ts +1 -0
  332. package/dist/src/nile-list/index.js +2 -0
  333. package/dist/src/nile-list/index.js.map +1 -0
  334. package/dist/src/nile-list/nile-list.css.d.ts +12 -0
  335. package/dist/src/nile-list/nile-list.css.js +20 -0
  336. package/dist/src/nile-list/nile-list.css.js.map +1 -0
  337. package/dist/src/nile-list/nile-list.d.ts +33 -0
  338. package/dist/src/nile-list/nile-list.js +47 -0
  339. package/dist/src/nile-list/nile-list.js.map +1 -0
  340. package/dist/src/nile-list-item/index.d.ts +1 -0
  341. package/dist/src/nile-list-item/index.js +2 -0
  342. package/dist/src/nile-list-item/index.js.map +1 -0
  343. package/dist/src/nile-list-item/nile-list-item.css.d.ts +12 -0
  344. package/dist/src/nile-list-item/nile-list-item.css.js +66 -0
  345. package/dist/src/nile-list-item/nile-list-item.css.js.map +1 -0
  346. package/dist/src/nile-list-item/nile-list-item.d.ts +38 -0
  347. package/dist/src/nile-list-item/nile-list-item.js +96 -0
  348. package/dist/src/nile-list-item/nile-list-item.js.map +1 -0
  349. package/dist/src/nile-loader/nile-loader.test.d.ts +1 -0
  350. package/dist/src/nile-loader/nile-loader.test.js +39 -0
  351. package/dist/src/nile-loader/nile-loader.test.js.map +1 -0
  352. package/dist/src/nile-menu/nile-menu.css.js +19 -5
  353. package/dist/src/nile-menu/nile-menu.css.js.map +1 -1
  354. package/dist/src/nile-menu/nile-menu.d.ts +1 -0
  355. package/dist/src/nile-menu/nile-menu.js +25 -14
  356. package/dist/src/nile-menu/nile-menu.js.map +1 -1
  357. package/dist/src/nile-popover/nile-popover.css.js +6 -4
  358. package/dist/src/nile-popover/nile-popover.css.js.map +1 -1
  359. package/dist/src/nile-popover/nile-popover.d.ts +1 -0
  360. package/dist/src/nile-popover/nile-popover.js +7 -6
  361. package/dist/src/nile-popover/nile-popover.js.map +1 -1
  362. package/dist/src/nile-popover/nile-popover.test.d.ts +1 -0
  363. package/dist/src/nile-popover/nile-popover.test.js +73 -0
  364. package/dist/src/nile-popover/nile-popover.test.js.map +1 -0
  365. package/dist/src/nile-popup/nile-popup.css.d.ts +5 -5
  366. package/dist/src/nile-popup/nile-popup.css.js +13 -9
  367. package/dist/src/nile-popup/nile-popup.css.js.map +1 -1
  368. package/dist/src/nile-progress-bar/nile-progress-bar.test.d.ts +1 -0
  369. package/dist/src/nile-progress-bar/nile-progress-bar.test.js +48 -0
  370. package/dist/src/nile-progress-bar/nile-progress-bar.test.js.map +1 -0
  371. package/dist/src/nile-radio/nile-radio.test.d.ts +1 -0
  372. package/dist/src/nile-radio/nile-radio.test.js +71 -0
  373. package/dist/src/nile-radio/nile-radio.test.js.map +1 -0
  374. package/dist/src/nile-select/nile-select.d.ts +1 -0
  375. package/dist/src/nile-select/nile-select.js +5 -1
  376. package/dist/src/nile-select/nile-select.js.map +1 -1
  377. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.d.ts +1 -0
  378. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js +54 -0
  379. package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js.map +1 -0
  380. package/dist/src/nile-split-panel/index.d.ts +1 -0
  381. package/dist/src/nile-split-panel/index.js +2 -0
  382. package/dist/src/nile-split-panel/index.js.map +1 -0
  383. package/dist/src/nile-split-panel/nile-split-panel.css.d.ts +12 -0
  384. package/dist/src/nile-split-panel/nile-split-panel.css.js +99 -0
  385. package/dist/src/nile-split-panel/nile-split-panel.css.js.map +1 -0
  386. package/dist/src/nile-split-panel/nile-split-panel.d.ts +78 -0
  387. package/dist/src/nile-split-panel/nile-split-panel.js +251 -0
  388. package/dist/src/nile-split-panel/nile-split-panel.js.map +1 -0
  389. package/dist/src/nile-stepper/nile-stepper.js +1 -1
  390. package/dist/src/nile-stepper/nile-stepper.js.map +1 -1
  391. package/dist/src/nile-stepper/nile-stepper.test.d.ts +0 -0
  392. package/dist/src/nile-stepper/nile-stepper.test.js +165 -0
  393. package/dist/src/nile-stepper/nile-stepper.test.js.map +1 -0
  394. package/dist/src/nile-tab-group/nile-tab-group.css.js +2 -2
  395. package/dist/src/nile-tab-group/nile-tab-group.css.js.map +1 -1
  396. package/dist/src/nile-tab-group/nile-tab-group.js +16 -15
  397. package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
  398. package/dist/src/nile-table-header-item/nile-table-header-item.css.js +0 -4
  399. package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
  400. package/dist/src/nile-textarea/nile-textarea.test.d.ts +1 -0
  401. package/dist/src/nile-textarea/nile-textarea.test.js +87 -0
  402. package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -0
  403. package/dist/src/nile-tree/index.d.ts +1 -0
  404. package/dist/src/nile-tree/index.js +2 -0
  405. package/dist/src/nile-tree/index.js.map +1 -0
  406. package/dist/src/nile-tree/nile-tree.css.d.ts +12 -0
  407. package/dist/src/nile-tree/nile-tree.css.js +48 -0
  408. package/dist/src/nile-tree/nile-tree.css.js.map +1 -0
  409. package/dist/src/nile-tree/nile-tree.d.ts +69 -0
  410. package/dist/src/nile-tree/nile-tree.js +376 -0
  411. package/dist/src/nile-tree/nile-tree.js.map +1 -0
  412. package/dist/src/nile-tree-item/index.d.ts +1 -0
  413. package/dist/src/nile-tree-item/index.js +2 -0
  414. package/dist/src/nile-tree-item/index.js.map +1 -0
  415. package/dist/src/nile-tree-item/nile-tree-item.css.d.ts +12 -0
  416. package/dist/src/nile-tree-item/nile-tree-item.css.js +176 -0
  417. package/dist/src/nile-tree-item/nile-tree-item.css.js.map +1 -0
  418. package/dist/src/nile-tree-item/nile-tree-item.d.ts +96 -0
  419. package/dist/src/nile-tree-item/nile-tree-item.js +324 -0
  420. package/dist/src/nile-tree-item/nile-tree-item.js.map +1 -0
  421. package/dist/tsconfig.tsbuildinfo +1 -1
  422. package/package.json +71 -2
  423. package/plopfile.js +11 -0
  424. package/src/index.ts +6 -1
  425. package/src/internal/drag.ts +45 -0
  426. package/src/internal/math.ts +14 -0
  427. package/src/nile-avatar/nile-avatar.css.ts +5 -6
  428. package/src/nile-avatar/nile-avatar.test.ts +65 -0
  429. package/src/nile-badge/nile-badge.css.ts +45 -45
  430. package/src/nile-badge/nile-badge.test.ts +48 -0
  431. package/src/nile-breadcrumb-item/nile-breadcrumb-item.css.ts +3 -4
  432. package/src/nile-button/nile-button.test.ts +117 -0
  433. package/src/nile-button-toggle-group/nile-button-toggle-group.test.ts +130 -0
  434. package/src/nile-calendar/nile-calendar.css.ts +122 -191
  435. package/src/nile-calendar/nile-calendar.ts +170 -213
  436. package/src/nile-card/nile-card.test.ts +74 -0
  437. package/src/nile-date-picker/nile-date-picker.ts +5 -6
  438. package/src/nile-dialog/nile-dialog.css.ts +4 -1
  439. package/src/nile-dialog/nile-dialog.ts +4 -4
  440. package/src/nile-drawer/nile-drawer.test.ts +106 -0
  441. package/src/nile-empty-state/nile-empty-state.test.ts +69 -0
  442. package/src/nile-error-message/nile-error-message.test.ts +69 -0
  443. package/src/nile-form-group/nile-form-group.test.ts +63 -0
  444. package/src/nile-hero/nile-hero.test.ts +45 -0
  445. package/src/nile-icon/icons/svg/alert.ts +5 -0
  446. package/src/nile-icon/icons/svg/file-check-02.ts +5 -0
  447. package/src/nile-icon/icons/svg/index.ts +3 -0
  448. package/src/nile-icon/icons/svg/monitor-01.ts +5 -0
  449. package/src/nile-icon/nile-icon.test.ts +53 -0
  450. package/src/nile-input/nile-input.test.ts +160 -0
  451. package/src/nile-link/nile-link.test.ts +83 -0
  452. package/src/nile-list/index.ts +1 -0
  453. package/src/nile-list/nile-list.css.ts +22 -0
  454. package/src/nile-list/nile-list.ts +64 -0
  455. package/src/nile-list-item/index.ts +1 -0
  456. package/src/nile-list-item/nile-list-item.css.ts +68 -0
  457. package/src/nile-list-item/nile-list-item.ts +104 -0
  458. package/src/nile-loader/nile-loader.test.ts +45 -0
  459. package/src/nile-menu/nile-menu.css.ts +19 -5
  460. package/src/nile-menu/nile-menu.ts +27 -17
  461. package/src/nile-popover/nile-popover.css.ts +6 -4
  462. package/src/nile-popover/nile-popover.test.ts +86 -0
  463. package/src/nile-popover/nile-popover.ts +7 -10
  464. package/src/nile-popup/nile-popup.css.ts +14 -10
  465. package/src/nile-progress-bar/nile-progress-bar.test.ts +55 -0
  466. package/src/nile-radio/nile-radio.test.ts +81 -0
  467. package/src/nile-select/nile-select.ts +3 -1
  468. package/src/nile-slide-toggle/nile-slide-toggle.test.ts +61 -0
  469. package/src/nile-split-panel/index.ts +1 -0
  470. package/src/nile-split-panel/nile-split-panel.css.ts +101 -0
  471. package/src/nile-split-panel/nile-split-panel.ts +285 -0
  472. package/src/nile-stepper/nile-stepper.test.ts +174 -0
  473. package/src/nile-stepper/nile-stepper.ts +2 -2
  474. package/src/nile-tab-group/nile-tab-group.css.ts +2 -2
  475. package/src/nile-tab-group/nile-tab-group.ts +2 -1
  476. package/src/nile-table-header-item/nile-table-header-item.css.ts +0 -4
  477. package/src/nile-textarea/nile-textarea.test.ts +102 -0
  478. package/src/nile-tree/index.ts +1 -0
  479. package/src/nile-tree/nile-tree.css.ts +50 -0
  480. package/src/nile-tree/nile-tree.ts +433 -0
  481. package/src/nile-tree-item/index.ts +1 -0
  482. package/src/nile-tree-item/nile-tree-item.css.ts +178 -0
  483. package/src/nile-tree-item/nile-tree-item.ts +330 -0
@@ -1,19 +1,17 @@
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
- import {css} from 'lit-element';
8
+ import { css } from 'lit-element';
9
9
 
10
10
  /**
11
11
  * Popup CSS
12
12
  */
13
13
  export const styles = css`
14
-
15
-
16
- :host {
14
+ :host {
17
15
  --arrow-color: hsl(240 4.8% 95.9%);
18
16
  --arrow-size: 6px;
19
17
 
@@ -22,7 +20,9 @@ export const styles = css`
22
20
  * 0.7071 is derived from sin(45), which is the diagonal size of the arrow's container after rotating.
23
21
  */
24
22
  --arrow-size-diagonal: calc(var(--arrow-size) * 0.7071);
25
- --arrow-padding-offset: calc(var(--arrow-size-diagonal) - var(--arrow-size));
23
+ --arrow-padding-offset: calc(
24
+ var(--arrow-size-diagonal) - var(--arrow-size)
25
+ );
26
26
 
27
27
  display: contents;
28
28
  }
@@ -50,6 +50,10 @@ export const styles = css`
50
50
  rotate: 45deg;
51
51
  background: var(--arrow-color);
52
52
  z-index: -1;
53
+ /* Added border and box-shadow to arrow */
54
+ border: solid 1px hsl(240 5.9% 90%);
55
+ box-shadow: 0px 20px 24px -4px rgba(16, 24, 40, 0.08),
56
+ 0px 8px 8px -4px rgba(16, 24, 40, 0.03);
53
57
  }
54
58
  `;
55
59
 
@@ -0,0 +1,55 @@
1
+ import { fixture, html, expect } from '@open-wc/testing';
2
+ import './nile-progress-bar'; // Make sure to import the component to be tested
3
+ import { NileProgressBar } from './nile-progress-bar';
4
+
5
+ describe('NileProgressBar', () => {
6
+ it('should have a default value of 0', async () => {
7
+ const el = await fixture<NileProgressBar>(html`<nile-progress-bar></nile-progress-bar>`);
8
+ expect(el.value).to.equal(0);
9
+ const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;
10
+ expect(span.style.width).to.equal('0%');
11
+ });
12
+
13
+ it('should set and display the provided value', async () => {
14
+ const el = await fixture<NileProgressBar>(html`<nile-progress-bar value="50"></nile-progress-bar>`);
15
+ expect(el.value).to.equal(50);
16
+ const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;
17
+ expect(span.style.width).to.equal('50%');
18
+ });
19
+
20
+ it('should handle boundary value 0%', async () => {
21
+ const el = await fixture<NileProgressBar>(html`<nile-progress-bar value="0"></nile-progress-bar>`);
22
+ expect(el.value).to.equal(0);
23
+ const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;
24
+ expect(span.style.width).to.equal('0%');
25
+ });
26
+
27
+ it('should handle boundary value 100%', async () => {
28
+ const el = await fixture<NileProgressBar>(html`<nile-progress-bar value="100"></nile-progress-bar>`);
29
+ expect(el.value).to.equal(100);
30
+ const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;
31
+ expect(span.style.width).to.equal('100%');
32
+ });
33
+
34
+ it('should handle values greater than 100', async () => {
35
+ const el = await fixture<NileProgressBar>(html`<nile-progress-bar value="150"></nile-progress-bar>`);
36
+ expect(el.value).to.equal(150);
37
+ const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;
38
+ expect(span.style.width).to.equal('150%');
39
+ });
40
+
41
+ it('should handle negative values', async () => {
42
+ const el = await fixture<NileProgressBar>(html`<nile-progress-bar value="-50"></nile-progress-bar>`);
43
+ expect(el.value).to.equal(-50);
44
+ const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;
45
+ expect(span.style.width).to.equal('');
46
+ });
47
+
48
+ it('should update the value dynamically', async () => {
49
+ const el = await fixture<NileProgressBar>(html`<nile-progress-bar value="20"></nile-progress-bar>`);
50
+ el.value = 80;
51
+ await el.updateComplete;
52
+ const span = el.shadowRoot!.querySelector('span') ?? {} as HTMLSpanElement;
53
+ expect(span.style.width).to.equal('80%');
54
+ });
55
+ });
@@ -0,0 +1,81 @@
1
+ import { html, fixture, expect, elementUpdated } from '@open-wc/testing';
2
+ import './nile-radio';
3
+ import { NileRadio } from './nile-radio';
4
+
5
+ describe('NileRadio', () => {
6
+ it('should have the correct default properties', async () => {
7
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
8
+ expect(el.checked).to.be.false;
9
+ expect(el.disabled).to.be.false;
10
+ expect(el.size).to.equal('medium');
11
+ });
12
+
13
+ it('should reflect the disabled attribute', async () => {
14
+ const el = await fixture<NileRadio>(html`<nile-radio disabled></nile-radio>`);
15
+ expect(el.disabled).to.be.true;
16
+ expect(el.hasAttribute('aria-disabled')).to.be.true;
17
+ });
18
+
19
+ it('should update aria-checked when checked changes', async () => {
20
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
21
+ el.checked = true;
22
+ await el.updateComplete;
23
+ expect(el.getAttribute('aria-checked')).to.equal('true');
24
+ });
25
+
26
+ it('should toggle checked state on click when not disabled', async () => {
27
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
28
+ el.click();
29
+ await elementUpdated(el);
30
+ expect(el.checked).to.be.true;
31
+ });
32
+
33
+ it('should not toggle checked state on click when disabled', async () => {
34
+ const el = await fixture<NileRadio>(html`<nile-radio disabled></nile-radio>`);
35
+ el.click();
36
+ await elementUpdated(el);
37
+ expect(el.checked).to.be.false;
38
+ });
39
+
40
+ it('should emit nile-blur event on blur', async () => {
41
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
42
+ const blurEvent = new Promise(resolve => el.addEventListener('nile-blur', resolve));
43
+ el.dispatchEvent(new Event('blur'));
44
+ const event = await blurEvent;
45
+ expect(event).to.exist;
46
+ });
47
+
48
+ it('should emit nile-focus event on focus', async () => {
49
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
50
+ const focusEvent = new Promise(resolve => el.addEventListener('nile-focus', resolve));
51
+ el.dispatchEvent(new Event('focus'));
52
+ const event = await focusEvent;
53
+ expect(event).to.exist;
54
+ });
55
+
56
+ it('should apply the correct classes based on state', async () => {
57
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
58
+ el.checked = true;
59
+ el.disabled = true;
60
+ el.size = 'medium';
61
+ await el.updateComplete;
62
+ const base = el.shadowRoot!.querySelector('[part="base"]');
63
+ expect(base!.classList.contains('radio--checked')).to.be.true;
64
+ expect(base!.classList.contains('radio--disabled')).to.be.true;
65
+ expect(base!.classList.contains('radio--medium')).to.be.true;
66
+ });
67
+
68
+ it('should update aria-disabled when disabled changes', async () => {
69
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
70
+ el.disabled = true;
71
+ await elementUpdated(el);
72
+ expect(el.getAttribute('aria-disabled')).to.equal('true');
73
+ });
74
+
75
+ it('should set initial attributes correctly', async () => {
76
+ const el = await fixture<NileRadio>(html`<nile-radio></nile-radio>`);
77
+ expect(el.getAttribute('role')).to.equal('radio');
78
+ expect(el.getAttribute('tabindex')).to.equal('-1');
79
+ expect(el.getAttribute('aria-disabled')).to.equal('false');
80
+ });
81
+ });
@@ -149,6 +149,8 @@ export class NileSelect extends NileElement implements NileFormControl {
149
149
 
150
150
  @property({ type: Boolean, reflect: true }) searchEnabled = false;
151
151
 
152
+ @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';
153
+
152
154
  @property({ type: Boolean, reflect: true }) blockValueChange = false;
153
155
 
154
156
  @property({ type: Boolean, reflect: true }) disableLocalSearch = false;
@@ -1248,7 +1250,7 @@ export class NileSelect extends NileElement implements NileFormControl {
1248
1250
  size="small"
1249
1251
  clearable
1250
1252
  .value=${this.searchValue}
1251
- placeholder="Search..."
1253
+ placeholder="${this.internalSearchPlaceHolder}"
1252
1254
  @nile-input=${this.handleSearchChange}
1253
1255
  @nile-focus=${this.handleSearchFocus}
1254
1256
  @nile-change="${this.onInputChange}"
@@ -0,0 +1,61 @@
1
+ import { fixture, expect } from '@open-wc/testing';
2
+ import { html } from 'lit/static-html.js';
3
+ import './nile-slide-toggle';
4
+ import { NileSlideToggle } from './nile-slide-toggle';
5
+
6
+ describe('NileSlideToggle', () => {
7
+ it('should default to unchecked', async () => {
8
+ const el: NileSlideToggle = await fixture(html`<nile-slide-toggle></nile-slide-toggle>`);
9
+ expect(el.isChecked).to.be.false;
10
+ });
11
+
12
+ it('should toggle isChecked property when clicked', async () => {
13
+ const el: NileSlideToggle = await fixture(html`<nile-slide-toggle></nile-slide-toggle>`);
14
+ const input = el.shadowRoot!.querySelector('input')!;
15
+ input.click();
16
+ expect(el.isChecked).to.be.true;
17
+ input.click();
18
+ expect(el.isChecked).to.be.false;
19
+ });
20
+
21
+ it('should display the label and sublabel', async () => {
22
+ const el: NileSlideToggle = await fixture(html`<nile-slide-toggle label="Test Label" sublabel="Test Sublabel"></nile-slide-toggle>`);
23
+ const label = el.shadowRoot!.querySelector('.nile-slide-toggle__label span')!;
24
+ const sublabel = el.shadowRoot!.querySelector('.nile-slide-toggle__sublabel')!;
25
+ expect(label.textContent).to.equal('Test Label');
26
+ expect(sublabel.textContent).to.equal('Test Sublabel');
27
+ });
28
+
29
+ it('should apply disabled class when disabled', async () => {
30
+ const el: NileSlideToggle = await fixture(html`<nile-slide-toggle disabled></nile-slide-toggle>`);
31
+ const toggleContainer = el.shadowRoot!.querySelector('.nile-slide-toggle')!;
32
+ expect(toggleContainer.classList.contains('nile-slide--disabled')).to.be.true;
33
+ });
34
+
35
+ it('should emit a change event with correct detail when toggled', async () => {
36
+ const el: NileSlideToggle = await fixture(html`<nile-slide-toggle></nile-slide-toggle>`);
37
+ let changeDetail = null;
38
+ el.addEventListener('change', (e: Event) => {
39
+ changeDetail = (e as CustomEvent).detail;
40
+ });
41
+ const input = el.shadowRoot!.querySelector('input')!;
42
+ input.click();
43
+ expect(changeDetail).to.deep.equal({ checked: true });
44
+ input.click();
45
+ expect(changeDetail).to.deep.equal({ checked: false });
46
+ });
47
+
48
+ it('should show help text when provided', async () => {
49
+ const el: NileSlideToggle = await fixture(html`<nile-slide-toggle help-text="Help text here"></nile-slide-toggle>`);
50
+ const helpText = el.shadowRoot!.querySelector('nile-form-help-text');
51
+ expect(helpText).to.exist;
52
+ expect(helpText?.textContent).to.equal('Help text here');
53
+ });
54
+
55
+ it('should show error message when provided', async () => {
56
+ const el: NileSlideToggle = await fixture(html`<nile-slide-toggle error-message="Error message here"></nile-slide-toggle>`);
57
+ const errorMessage = el.shadowRoot!.querySelector('nile-form-error-message');
58
+ expect(errorMessage).to.exist;
59
+ expect(errorMessage?.textContent).to.equal('Error message here');
60
+ });
61
+ })
@@ -0,0 +1 @@
1
+ export { NileSplitPanel } from './nile-split-panel';
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import {css} from 'lit-element';
9
+
10
+ /**
11
+ * SplitPanel CSS
12
+ */
13
+ export const styles = css`
14
+ :host *,
15
+ :host *::before,
16
+ :host *::after {
17
+ box-sizing: inherit;
18
+ }
19
+
20
+ [hidden] {
21
+ display: none !important;
22
+ }
23
+
24
+ :host {
25
+ box-sizing: border-box;
26
+ --divider-width: 4px;
27
+ --divider-hit-area: 12px;
28
+ --min: 0%;
29
+ --max: 100%;
30
+
31
+ display: grid;
32
+ }
33
+
34
+ .start,
35
+ .end {
36
+ overflow: hidden;
37
+ }
38
+
39
+ .divider {
40
+ flex: 0 0 var(--divider-width);
41
+ display: flex;
42
+ position: relative;
43
+ align-items: center;
44
+ justify-content: center;
45
+ background-color: var(--nile-colors-neutral-100);
46
+ color: var(--nile-colors-dark-900);
47
+ z-index: 1;
48
+ }
49
+
50
+ .divider:focus {
51
+ outline: none;
52
+ }
53
+
54
+ :host(:not([disabled])) .divider:focus-visible {
55
+ background-color: var(--nile-colors-blue-500);
56
+ color: var(--nile-colors-white-base);
57
+ }
58
+
59
+ :host([disabled]) .divider {
60
+ cursor: not-allowed;
61
+ }
62
+
63
+ /* Horizontal */
64
+ :host(:not([vertical], [disabled])) .divider {
65
+ cursor: col-resize;
66
+ }
67
+
68
+ :host(:not([vertical])) .divider::after {
69
+ display: flex;
70
+ content: '';
71
+ position: absolute;
72
+ height: 100%;
73
+ left: calc(var(--divider-hit-area) / -2 + var(--divider-width) / 2);
74
+ width: var(--divider-hit-area);
75
+ }
76
+
77
+ /* Vertical */
78
+ :host([vertical]) {
79
+ flex-direction: column;
80
+ }
81
+
82
+ :host([vertical]:not([disabled])) .divider {
83
+ cursor: row-resize;
84
+ }
85
+
86
+ :host([vertical]) .divider::after {
87
+ content: '';
88
+ position: absolute;
89
+ width: 100%;
90
+ top: calc(var(--divider-hit-area) / -2 + var(--divider-width) / 2);
91
+ height: var(--divider-hit-area);
92
+ }
93
+
94
+ @media (forced-colors: active) {
95
+ .divider {
96
+ outline: solid 1px transparent;
97
+ }
98
+ }
99
+ `;
100
+
101
+ export default [styles];
@@ -0,0 +1,285 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import {LitElement, CSSResultArray, TemplateResult} from 'lit-element';
9
+ import {styles} from './nile-split-panel.css';
10
+ import NileElement from '../internal/nile-element';
11
+
12
+
13
+ import { clamp } from '../internal/math';
14
+ import { customElement, property, query } from 'lit/decorators.js';
15
+ import { drag } from '../internal/drag';
16
+ import { html } from 'lit';
17
+ import { ifDefined } from 'lit/directives/if-defined.js';
18
+ import { watch } from '../internal/watch';
19
+ import type { CSSResultGroup } from 'lit';
20
+
21
+ /**
22
+ * @summary Split panels display two adjacent panels, allowing the user to reposition them.
23
+ *
24
+ * @event nile-reposition - Emitted when the divider's position changes.
25
+ *
26
+ * @slot start - Content to place in the start panel.
27
+ * @slot end - Content to place in the end panel.
28
+ * @slot divider - The divider. Useful for slotting in a custom icon that renders as a handle.
29
+ *
30
+ * @csspart start - The start panel.
31
+ * @csspart end - The end panel.
32
+ * @csspart panel - Targets both the start and end panels.
33
+ * @csspart divider - The divider that separates the start and end panels.
34
+ *
35
+ * @cssproperty [--divider-width=4px] - The width of the visible divider.
36
+ * @cssproperty [--divider-hit-area=12px] - The invisible region around the divider where dragging can occur. This is
37
+ * usually wider than the divider to facilitate easier dragging.
38
+ * @cssproperty [--min=0] - The minimum allowed size of the primary panel.
39
+ * @cssproperty [--max=100%] - The maximum allowed size of the primary panel.
40
+ */
41
+ @customElement('nile-split-panel')
42
+ export class NileSplitPanel extends NileElement {
43
+
44
+ static styles: CSSResultGroup = styles;
45
+
46
+ private cachedPositionInPixels: number;
47
+ private resizeObserver: ResizeObserver;
48
+ private size: number;
49
+
50
+ @query('.divider') divider: HTMLElement;
51
+
52
+ /**
53
+ * The current position of the divider from the primary panel's edge as a percentage 0-100. Defaults to 50% of the
54
+ * container's initial size.
55
+ */
56
+ @property({ type: Number, reflect: true }) position = 50;
57
+
58
+ /** The current position of the divider from the primary panel's edge in pixels. */
59
+ @property({ attribute: 'position-in-pixels', type: Number }) positionInPixels: number;
60
+
61
+ /** Draws the split panel in a vertical orientation with the start and end panels stacked. */
62
+ @property({ type: Boolean, reflect: true }) vertical = false;
63
+
64
+ /** Disables resizing. Note that the position may still change as a result of resizing the host element. */
65
+ @property({ type: Boolean, reflect: true }) disabled = false;
66
+
67
+ /**
68
+ * If no primary panel is designated, both panels will resize proportionally when the host element is resized. If a
69
+ * primary panel is designated, it will maintain its size and the other panel will grow or shrink as needed when the
70
+ * host element is resized.
71
+ */
72
+ @property() primary?: 'start' | 'end';
73
+
74
+ /**
75
+ * One or more space-separated values at which the divider should snap. Values can be in pixels or percentages, e.g.
76
+ * `"100px 50%"`.
77
+ */
78
+ @property() snap?: string;
79
+
80
+ /** How close the divider must be to a snap point until snapping occurs. */
81
+ @property({ type: Number, attribute: 'snap-threshold' }) snapThreshold = 12;
82
+
83
+ connectedCallback() {
84
+ super.connectedCallback();
85
+ this.resizeObserver = new ResizeObserver(entries => this.handleResize(entries));
86
+ this.updateComplete.then(() => this.resizeObserver.observe(this));
87
+
88
+ this.detectSize();
89
+ this.cachedPositionInPixels = this.percentageToPixels(this.position);
90
+ }
91
+
92
+ disconnectedCallback() {
93
+ super.disconnectedCallback();
94
+ this.resizeObserver.unobserve(this);
95
+ }
96
+
97
+ private detectSize() {
98
+ const { width, height } = this.getBoundingClientRect();
99
+ this.size = this.vertical ? height : width;
100
+ }
101
+
102
+ private percentageToPixels(value: number) {
103
+ return this.size * (value / 100);
104
+ }
105
+
106
+ private pixelsToPercentage(value: number) {
107
+ return (value / this.size) * 100;
108
+ }
109
+
110
+ private handleDrag(event: PointerEvent) {
111
+ const isRtl = false;
112
+
113
+ if (this.disabled) {
114
+ return;
115
+ }
116
+
117
+ // Prevent text selection when dragging
118
+ if (event.cancelable) {
119
+ event.preventDefault();
120
+ }
121
+
122
+ drag(this, {
123
+ onMove: (x, y) => {
124
+ let newPositionInPixels = this.vertical ? y : x;
125
+
126
+ // Flip for end panels
127
+ if (this.primary === 'end') {
128
+ newPositionInPixels = this.size - newPositionInPixels;
129
+ }
130
+
131
+ // Check snap points
132
+ if (this.snap) {
133
+ const snaps = this.snap.split(' ');
134
+
135
+ snaps.forEach(value => {
136
+ let snapPoint: number;
137
+
138
+ if (value.endsWith('%')) {
139
+ snapPoint = this.size * (parseFloat(value) / 100);
140
+ } else {
141
+ snapPoint = parseFloat(value);
142
+ }
143
+
144
+ if (isRtl && !this.vertical) {
145
+ snapPoint = this.size - snapPoint;
146
+ }
147
+
148
+ if (
149
+ newPositionInPixels >= snapPoint - this.snapThreshold &&
150
+ newPositionInPixels <= snapPoint + this.snapThreshold
151
+ ) {
152
+ newPositionInPixels = snapPoint;
153
+ }
154
+ });
155
+ }
156
+
157
+ this.position = clamp(this.pixelsToPercentage(newPositionInPixels), 0, 100);
158
+ },
159
+ initialEvent: event
160
+ });
161
+ }
162
+
163
+ private handleKeyDown(event: KeyboardEvent) {
164
+ if (this.disabled) {
165
+ return;
166
+ }
167
+
168
+ if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {
169
+ let newPosition = this.position;
170
+ const incr = (event.shiftKey ? 10 : 1) * (this.primary === 'end' ? -1 : 1);
171
+
172
+ event.preventDefault();
173
+
174
+ if ((event.key === 'ArrowLeft' && !this.vertical) || (event.key === 'ArrowUp' && this.vertical)) {
175
+ newPosition -= incr;
176
+ }
177
+
178
+ if ((event.key === 'ArrowRight' && !this.vertical) || (event.key === 'ArrowDown' && this.vertical)) {
179
+ newPosition += incr;
180
+ }
181
+
182
+ if (event.key === 'Home') {
183
+ newPosition = this.primary === 'end' ? 100 : 0;
184
+ }
185
+
186
+ if (event.key === 'End') {
187
+ newPosition = this.primary === 'end' ? 0 : 100;
188
+ }
189
+
190
+ this.position = clamp(newPosition, 0, 100);
191
+ }
192
+ }
193
+
194
+ private handleResize(entries: ResizeObserverEntry[]) {
195
+ const { width, height } = entries[0].contentRect;
196
+ this.size = this.vertical ? height : width;
197
+
198
+ // Resize when a primary panel is set
199
+ if (this.primary) {
200
+ this.position = this.pixelsToPercentage(this.cachedPositionInPixels);
201
+ }
202
+ }
203
+
204
+ @watch('position')
205
+ handlePositionChange() {
206
+ this.cachedPositionInPixels = this.percentageToPixels(this.position);
207
+ this.positionInPixels = this.percentageToPixels(this.position);
208
+ this.emit('nile-reposition');
209
+ }
210
+
211
+ @watch('positionInPixels')
212
+ handlePositionInPixelsChange() {
213
+ this.position = this.pixelsToPercentage(this.positionInPixels);
214
+ }
215
+
216
+ @watch('vertical')
217
+ handleVerticalChange() {
218
+ this.detectSize();
219
+ }
220
+
221
+ render() {
222
+ const gridTemplate = this.vertical ? 'gridTemplateRows' : 'gridTemplateColumns';
223
+ const gridTemplateAlt = this.vertical ? 'gridTemplateColumns' : 'gridTemplateRows';
224
+ const isRtl = false;
225
+ const primary = `
226
+ clamp(
227
+ 0%,
228
+ clamp(
229
+ var(--min),
230
+ ${this.position}% - var(--divider-width) / 2,
231
+ var(--max)
232
+ ),
233
+ calc(100% - var(--divider-width))
234
+ )
235
+ `;
236
+ const secondary = 'auto';
237
+
238
+ if (this.primary === 'end') {
239
+ if (isRtl && !this.vertical) {
240
+ this.style[gridTemplate] = `${primary} var(--divider-width) ${secondary}`;
241
+ } else {
242
+ this.style[gridTemplate] = `${secondary} var(--divider-width) ${primary}`;
243
+ }
244
+ } else {
245
+ if (isRtl && !this.vertical) {
246
+ this.style[gridTemplate] = `${secondary} var(--divider-width) ${primary}`;
247
+ } else {
248
+ this.style[gridTemplate] = `${primary} var(--divider-width) ${secondary}`;
249
+ }
250
+ }
251
+
252
+ // Unset the alt grid template property
253
+ this.style[gridTemplateAlt] = '';
254
+
255
+ return html`
256
+ <slot name="start" part="panel start" class="start"></slot>
257
+
258
+ <div
259
+ part="divider"
260
+ class="divider"
261
+ tabindex=${ifDefined(this.disabled ? undefined : '0')}
262
+ role="separator"
263
+ aria-valuenow=${this.position}
264
+ aria-valuemin="0"
265
+ aria-valuemax="100"
266
+ aria-label="resize"
267
+ @keydown=${this.handleKeyDown}
268
+ @mousedown=${this.handleDrag}
269
+ @touchstart=${this.handleDrag}
270
+ >
271
+ <slot name="divider"></slot>
272
+ </div>
273
+
274
+ <slot name="end" part="panel end" class="end"></slot>
275
+ `;
276
+ }
277
+ }
278
+
279
+ export default NileSplitPanel;
280
+
281
+ declare global {
282
+ interface HTMLElementTagNameMap {
283
+ 'nile-split-panel': NileSplitPanel;
284
+ }
285
+ }