@aquera/nile-elements 0.0.68 → 0.0.70

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 (341) hide show
  1. package/.nycrc +17 -0
  2. package/README.md +24 -0
  3. package/demo/filenames.txt +1 -1
  4. package/demo/variables.css +12 -6
  5. package/demo/variables_v2.css +9 -6
  6. package/dist/axe.min-1a358f34.cjs.js +12 -0
  7. package/dist/axe.min-1a358f34.cjs.js.map +1 -0
  8. package/dist/axe.min-c4141dd6.esm.js +12 -0
  9. package/dist/index.cjs.js +1 -1
  10. package/dist/index.esm.js +1 -1
  11. package/dist/index.iife.js +372 -206
  12. package/dist/nile-avatar/nile-avatar.cjs.js +1 -1
  13. package/dist/nile-avatar/nile-avatar.cjs.js.map +1 -1
  14. package/dist/nile-avatar/nile-avatar.css.cjs.js +1 -1
  15. package/dist/nile-avatar/nile-avatar.css.cjs.js.map +1 -1
  16. package/dist/nile-avatar/nile-avatar.css.esm.js +15 -7
  17. package/dist/nile-avatar/nile-avatar.esm.js +1 -1
  18. package/dist/nile-badge/index.cjs.js +1 -1
  19. package/dist/nile-badge/index.esm.js +1 -1
  20. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  21. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  22. package/dist/nile-badge/nile-badge.css.cjs.js +1 -1
  23. package/dist/nile-badge/nile-badge.css.cjs.js.map +1 -1
  24. package/dist/nile-badge/nile-badge.css.esm.js +7 -5
  25. package/dist/nile-badge/nile-badge.esm.js +1 -1
  26. package/dist/nile-button/index.cjs.js +1 -1
  27. package/dist/nile-button/index.esm.js +1 -1
  28. package/dist/nile-button/nile-button.cjs.js +1 -1
  29. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  30. package/dist/nile-button/nile-button.css.cjs.js +1 -1
  31. package/dist/nile-button/nile-button.css.cjs.js.map +1 -1
  32. package/dist/nile-button/nile-button.css.esm.js +13 -23
  33. package/dist/nile-button/nile-button.esm.js +1 -1
  34. package/dist/nile-button-toggle/nile-button-toggle.css.cjs.js +1 -1
  35. package/dist/nile-button-toggle/nile-button-toggle.css.cjs.js.map +1 -1
  36. package/dist/nile-button-toggle/nile-button-toggle.css.esm.js +11 -6
  37. package/dist/nile-button-toggle-group/nile-button-toggle-group.css.cjs.js +1 -1
  38. package/dist/nile-button-toggle-group/nile-button-toggle-group.css.cjs.js.map +1 -1
  39. package/dist/nile-button-toggle-group/nile-button-toggle-group.css.esm.js +5 -4
  40. package/dist/nile-card/nile-card.cjs.js +1 -1
  41. package/dist/nile-card/nile-card.cjs.js.map +1 -1
  42. package/dist/nile-card/nile-card.css.cjs.js +1 -1
  43. package/dist/nile-card/nile-card.css.cjs.js.map +1 -1
  44. package/dist/nile-card/nile-card.css.esm.js +23 -4
  45. package/dist/nile-card/nile-card.esm.js +13 -5
  46. package/dist/nile-checkbox/nile-checkbox.cjs.js +1 -1
  47. package/dist/nile-checkbox/nile-checkbox.cjs.js.map +1 -1
  48. package/dist/nile-checkbox/nile-checkbox.css.cjs.js +1 -1
  49. package/dist/nile-checkbox/nile-checkbox.css.cjs.js.map +1 -1
  50. package/dist/nile-checkbox/nile-checkbox.css.esm.js +24 -10
  51. package/dist/nile-checkbox/nile-checkbox.esm.js +4 -4
  52. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +395 -0
  53. package/dist/nile-checkbox/nile-checkbox.test.cjs.js.map +1 -0
  54. package/dist/nile-checkbox/nile-checkbox.test.esm.js +585 -0
  55. package/dist/nile-dialog/index.cjs.js +1 -1
  56. package/dist/nile-dialog/index.esm.js +1 -1
  57. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  58. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  59. package/dist/nile-dialog/nile-dialog.esm.js +1 -1
  60. package/dist/nile-drawer/index.cjs.js +1 -1
  61. package/dist/nile-drawer/index.esm.js +1 -1
  62. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  63. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  64. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  65. package/dist/nile-empty-state/index.cjs.js +1 -1
  66. package/dist/nile-empty-state/index.esm.js +1 -1
  67. package/dist/nile-empty-state/nile-empty-state.cjs.js +1 -1
  68. package/dist/nile-empty-state/nile-empty-state.cjs.js.map +1 -1
  69. package/dist/nile-empty-state/nile-empty-state.css.cjs.js +1 -1
  70. package/dist/nile-empty-state/nile-empty-state.css.cjs.js.map +1 -1
  71. package/dist/nile-empty-state/nile-empty-state.css.esm.js +63 -22
  72. package/dist/nile-empty-state/nile-empty-state.esm.js +21 -16
  73. package/dist/nile-format-date/index.cjs.js +2 -0
  74. package/dist/nile-format-date/index.cjs.js.map +1 -0
  75. package/dist/nile-format-date/index.esm.js +1 -0
  76. package/dist/nile-format-date/nile-format-date.cjs.js +2 -0
  77. package/dist/nile-format-date/nile-format-date.cjs.js.map +1 -0
  78. package/dist/nile-format-date/nile-format-date.css.cjs.js +2 -0
  79. package/dist/nile-format-date/nile-format-date.css.cjs.js.map +1 -0
  80. package/dist/nile-format-date/nile-format-date.css.esm.js +5 -0
  81. package/dist/nile-format-date/nile-format-date.esm.js +5 -0
  82. package/dist/nile-hero/index.cjs.js +1 -1
  83. package/dist/nile-hero/index.esm.js +1 -1
  84. package/dist/nile-hero/nile-hero.cjs.js +1 -1
  85. package/dist/nile-hero/nile-hero.cjs.js.map +1 -1
  86. package/dist/nile-hero/nile-hero.css.cjs.js +1 -1
  87. package/dist/nile-hero/nile-hero.css.cjs.js.map +1 -1
  88. package/dist/nile-hero/nile-hero.css.esm.js +14 -33
  89. package/dist/nile-hero/nile-hero.esm.js +6 -9
  90. package/dist/nile-hero-header/index.cjs.js +2 -0
  91. package/dist/nile-hero-header/index.cjs.js.map +1 -0
  92. package/dist/nile-hero-header/index.esm.js +1 -0
  93. package/dist/nile-hero-header/nile-hero-header.cjs.js +2 -0
  94. package/dist/nile-hero-header/nile-hero-header.cjs.js.map +1 -0
  95. package/dist/nile-hero-header/nile-hero-header.css.cjs.js +2 -0
  96. package/dist/nile-hero-header/nile-hero-header.css.cjs.js.map +1 -0
  97. package/dist/nile-hero-header/nile-hero-header.css.esm.js +28 -0
  98. package/dist/nile-hero-header/nile-hero-header.esm.js +6 -0
  99. package/dist/nile-icon/icons/svg/data-insight.cjs.js +2 -0
  100. package/dist/nile-icon/icons/svg/data-insight.cjs.js.map +1 -0
  101. package/dist/nile-icon/icons/svg/data-insight.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/info-circle.cjs.js +2 -0
  105. package/dist/nile-icon/icons/svg/info-circle.cjs.js.map +1 -0
  106. package/dist/nile-icon/icons/svg/info-circle.esm.js +1 -0
  107. package/dist/nile-icon/icons/svg/user-01.cjs.js +2 -0
  108. package/dist/nile-icon/icons/svg/user-01.cjs.js.map +1 -0
  109. package/dist/nile-icon/icons/svg/user-01.esm.js +1 -0
  110. package/dist/nile-icon/index.cjs.js +1 -1
  111. package/dist/nile-icon/index.cjs.js.map +1 -1
  112. package/dist/nile-icon/index.esm.js +3 -2
  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.css.cjs.js +1 -1
  123. package/dist/nile-input/nile-input.css.cjs.js.map +1 -1
  124. package/dist/nile-input/nile-input.css.esm.js +7 -13
  125. package/dist/nile-input/nile-input.esm.js +1 -1
  126. package/dist/nile-menu/nile-menu.css.cjs.js +1 -1
  127. package/dist/nile-menu/nile-menu.css.cjs.js.map +1 -1
  128. package/dist/nile-menu/nile-menu.css.esm.js +2 -1
  129. package/dist/nile-menu-item/index.cjs.js +1 -1
  130. package/dist/nile-menu-item/index.esm.js +1 -1
  131. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  132. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  133. package/dist/nile-menu-item/nile-menu-item.css.cjs.js +1 -1
  134. package/dist/nile-menu-item/nile-menu-item.css.cjs.js.map +1 -1
  135. package/dist/nile-menu-item/nile-menu-item.css.esm.js +7 -4
  136. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  137. package/dist/nile-option/index.cjs.js +1 -1
  138. package/dist/nile-option/index.esm.js +1 -1
  139. package/dist/nile-option/nile-option.cjs.js +1 -1
  140. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  141. package/dist/nile-option/nile-option.esm.js +1 -1
  142. package/dist/nile-select/index.cjs.js +1 -1
  143. package/dist/nile-select/index.esm.js +1 -1
  144. package/dist/nile-select/nile-select.cjs.js +1 -1
  145. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  146. package/dist/nile-select/nile-select.esm.js +1 -1
  147. package/dist/nile-slide-toggle/index.cjs.js +1 -1
  148. package/dist/nile-slide-toggle/index.esm.js +1 -1
  149. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js +1 -1
  150. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js.map +1 -1
  151. package/dist/nile-slide-toggle/nile-slide-toggle.css.cjs.js +1 -1
  152. package/dist/nile-slide-toggle/nile-slide-toggle.css.cjs.js.map +1 -1
  153. package/dist/nile-slide-toggle/nile-slide-toggle.css.esm.js +26 -2
  154. package/dist/nile-slide-toggle/nile-slide-toggle.esm.js +5 -3
  155. package/dist/nile-tab/index.cjs.js +1 -1
  156. package/dist/nile-tab/index.esm.js +1 -1
  157. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  158. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  159. package/dist/nile-tab/nile-tab.css.cjs.js +1 -1
  160. package/dist/nile-tab/nile-tab.css.cjs.js.map +1 -1
  161. package/dist/nile-tab/nile-tab.css.esm.js +17 -7
  162. package/dist/nile-tab/nile-tab.esm.js +1 -1
  163. package/dist/nile-tab-group/index.cjs.js +1 -1
  164. package/dist/nile-tab-group/index.esm.js +1 -1
  165. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  166. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  167. package/dist/nile-tab-group/nile-tab-group.css.cjs.js +1 -1
  168. package/dist/nile-tab-group/nile-tab-group.css.cjs.js.map +1 -1
  169. package/dist/nile-tab-group/nile-tab-group.css.esm.js +16 -2
  170. package/dist/nile-tab-group/nile-tab-group.esm.js +8 -5
  171. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
  172. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
  173. package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +4 -4
  174. package/dist/nile-tag/index.cjs.js +1 -1
  175. package/dist/nile-tag/index.esm.js +1 -1
  176. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  177. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  178. package/dist/nile-tag/nile-tag.esm.js +1 -1
  179. package/dist/nile-toast/index.cjs.js +1 -1
  180. package/dist/nile-toast/index.esm.js +1 -1
  181. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  182. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  183. package/dist/nile-toast/nile-toast.css.cjs.js +1 -1
  184. package/dist/nile-toast/nile-toast.css.cjs.js.map +1 -1
  185. package/dist/nile-toast/nile-toast.css.esm.js +17 -16
  186. package/dist/nile-toast/nile-toast.esm.js +5 -3
  187. package/dist/nile-tooltip/nile-tooltip.css.cjs.js +1 -1
  188. package/dist/nile-tooltip/nile-tooltip.css.cjs.js.map +1 -1
  189. package/dist/nile-tooltip/nile-tooltip.css.esm.js +6 -6
  190. package/dist/scopedElementsWrapper-2fa3aa8b.cjs.js +6 -0
  191. package/dist/scopedElementsWrapper-2fa3aa8b.cjs.js.map +1 -0
  192. package/dist/scopedElementsWrapper-4c29be11.esm.js +7 -0
  193. package/dist/src/index.d.ts +2 -0
  194. package/dist/src/index.js +2 -0
  195. package/dist/src/index.js.map +1 -1
  196. package/dist/src/nile-avatar/nile-avatar.css.js +15 -7
  197. package/dist/src/nile-avatar/nile-avatar.css.js.map +1 -1
  198. package/dist/src/nile-avatar/nile-avatar.d.ts +1 -1
  199. package/dist/src/nile-avatar/nile-avatar.js +1 -0
  200. package/dist/src/nile-avatar/nile-avatar.js.map +1 -1
  201. package/dist/src/nile-badge/nile-badge.css.js +7 -5
  202. package/dist/src/nile-badge/nile-badge.css.js.map +1 -1
  203. package/dist/src/nile-button/nile-button.css.js +13 -23
  204. package/dist/src/nile-button/nile-button.css.js.map +1 -1
  205. package/dist/src/nile-button-toggle/nile-button-toggle.css.js +11 -6
  206. package/dist/src/nile-button-toggle/nile-button-toggle.css.js.map +1 -1
  207. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.css.d.ts +5 -5
  208. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.css.js +8 -7
  209. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.css.js.map +1 -1
  210. package/dist/src/nile-card/nile-card.css.js +23 -4
  211. package/dist/src/nile-card/nile-card.css.js.map +1 -1
  212. package/dist/src/nile-card/nile-card.js +12 -4
  213. package/dist/src/nile-card/nile-card.js.map +1 -1
  214. package/dist/src/nile-checkbox/nile-checkbox.css.js +24 -10
  215. package/dist/src/nile-checkbox/nile-checkbox.css.js.map +1 -1
  216. package/dist/src/nile-checkbox/nile-checkbox.d.ts +2 -2
  217. package/dist/src/nile-checkbox/nile-checkbox.js +7 -6
  218. package/dist/src/nile-checkbox/nile-checkbox.js.map +1 -1
  219. package/dist/src/nile-checkbox/nile-checkbox.test.d.ts +1 -0
  220. package/dist/src/nile-checkbox/nile-checkbox.test.js +152 -0
  221. package/dist/src/nile-checkbox/nile-checkbox.test.js.map +1 -0
  222. package/dist/src/nile-empty-state/nile-empty-state.css.js +61 -20
  223. package/dist/src/nile-empty-state/nile-empty-state.css.js.map +1 -1
  224. package/dist/src/nile-empty-state/nile-empty-state.d.ts +1 -1
  225. package/dist/src/nile-empty-state/nile-empty-state.js +22 -22
  226. package/dist/src/nile-empty-state/nile-empty-state.js.map +1 -1
  227. package/dist/src/nile-format-date/index.d.ts +1 -0
  228. package/dist/src/nile-format-date/index.js +2 -0
  229. package/dist/src/nile-format-date/index.js.map +1 -0
  230. package/dist/src/nile-format-date/nile-format-date.css.d.ts +12 -0
  231. package/dist/src/nile-format-date/nile-format-date.css.js +17 -0
  232. package/dist/src/nile-format-date/nile-format-date.css.js.map +1 -0
  233. package/dist/src/nile-format-date/nile-format-date.d.ts +59 -0
  234. package/dist/src/nile-format-date/nile-format-date.js +129 -0
  235. package/dist/src/nile-format-date/nile-format-date.js.map +1 -0
  236. package/dist/src/nile-hero/nile-hero.css.js +13 -32
  237. package/dist/src/nile-hero/nile-hero.css.js.map +1 -1
  238. package/dist/src/nile-hero/nile-hero.d.ts +6 -0
  239. package/dist/src/nile-hero/nile-hero.js +45 -8
  240. package/dist/src/nile-hero/nile-hero.js.map +1 -1
  241. package/dist/src/nile-hero-header/index.d.ts +1 -0
  242. package/dist/src/nile-hero-header/index.js +2 -0
  243. package/dist/src/nile-hero-header/index.js.map +1 -0
  244. package/dist/src/nile-hero-header/nile-hero-header.css.d.ts +12 -0
  245. package/dist/src/nile-hero-header/nile-hero-header.css.js +40 -0
  246. package/dist/src/nile-hero-header/nile-hero-header.css.js.map +1 -0
  247. package/dist/src/nile-hero-header/nile-hero-header.d.ts +34 -0
  248. package/dist/src/nile-hero-header/nile-hero-header.js +58 -0
  249. package/dist/src/nile-hero-header/nile-hero-header.js.map +1 -0
  250. package/dist/src/nile-icon/icons/svg/data-insight.d.ts +5 -0
  251. package/dist/src/nile-icon/icons/svg/data-insight.js +5 -0
  252. package/dist/src/nile-icon/icons/svg/data-insight.js.map +1 -0
  253. package/dist/src/nile-icon/icons/svg/index.d.ts +3 -0
  254. package/dist/src/nile-icon/icons/svg/index.js +3 -0
  255. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  256. package/dist/src/nile-icon/icons/svg/info-circle.d.ts +5 -0
  257. package/dist/src/nile-icon/icons/svg/info-circle.js +5 -0
  258. package/dist/src/nile-icon/icons/svg/info-circle.js.map +1 -0
  259. package/dist/src/nile-icon/icons/svg/user-01.d.ts +5 -0
  260. package/dist/src/nile-icon/icons/svg/user-01.js +5 -0
  261. package/dist/src/nile-icon/icons/svg/user-01.js.map +1 -0
  262. package/dist/src/nile-icon/index.js +2 -1
  263. package/dist/src/nile-icon/index.js.map +1 -1
  264. package/dist/src/nile-input/nile-input.css.js +7 -13
  265. package/dist/src/nile-input/nile-input.css.js.map +1 -1
  266. package/dist/src/nile-menu/nile-menu.css.js +2 -1
  267. package/dist/src/nile-menu/nile-menu.css.js.map +1 -1
  268. package/dist/src/nile-menu-item/nile-menu-item.css.js +7 -4
  269. package/dist/src/nile-menu-item/nile-menu-item.css.js.map +1 -1
  270. package/dist/src/nile-slide-toggle/nile-slide-toggle.css.js +26 -2
  271. package/dist/src/nile-slide-toggle/nile-slide-toggle.css.js.map +1 -1
  272. package/dist/src/nile-slide-toggle/nile-slide-toggle.d.ts +1 -0
  273. package/dist/src/nile-slide-toggle/nile-slide-toggle.js +11 -1
  274. package/dist/src/nile-slide-toggle/nile-slide-toggle.js.map +1 -1
  275. package/dist/src/nile-tab/nile-tab.css.js +15 -5
  276. package/dist/src/nile-tab/nile-tab.css.js.map +1 -1
  277. package/dist/src/nile-tab-group/nile-tab-group.css.js +16 -2
  278. package/dist/src/nile-tab-group/nile-tab-group.css.js.map +1 -1
  279. package/dist/src/nile-tab-group/nile-tab-group.d.ts +2 -0
  280. package/dist/src/nile-tab-group/nile-tab-group.js +16 -5
  281. package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
  282. package/dist/src/nile-table-header-item/nile-table-header-item.css.js +2 -2
  283. package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
  284. package/dist/src/nile-toast/nile-toast.css.js +17 -16
  285. package/dist/src/nile-toast/nile-toast.css.js.map +1 -1
  286. package/dist/src/nile-toast/nile-toast.d.ts +1 -1
  287. package/dist/src/nile-toast/nile-toast.js +9 -7
  288. package/dist/src/nile-toast/nile-toast.js.map +1 -1
  289. package/dist/src/nile-tooltip/nile-tooltip.css.js +6 -6
  290. package/dist/src/nile-tooltip/nile-tooltip.css.js.map +1 -1
  291. package/dist/tsconfig.tsbuildinfo +1 -1
  292. package/package.json +3 -2
  293. package/plopfile.js +5 -0
  294. package/rollup.config.js +11 -6
  295. package/src/index.ts +3 -1
  296. package/src/nile-avatar/nile-avatar.css.ts +15 -7
  297. package/src/nile-avatar/nile-avatar.ts +2 -1
  298. package/src/nile-badge/nile-badge.css.ts +7 -5
  299. package/src/nile-button/nile-button.css.ts +13 -23
  300. package/src/nile-button-toggle/nile-button-toggle.css.ts +11 -6
  301. package/src/nile-button-toggle-group/nile-button-toggle-group.css.ts +9 -8
  302. package/src/nile-card/nile-card.css.ts +23 -4
  303. package/src/nile-card/nile-card.ts +19 -8
  304. package/src/nile-checkbox/nile-checkbox.css.ts +24 -10
  305. package/src/nile-checkbox/nile-checkbox.test.ts +188 -0
  306. package/src/nile-checkbox/nile-checkbox.ts +6 -8
  307. package/src/nile-empty-state/nile-empty-state.css.ts +61 -20
  308. package/src/nile-empty-state/nile-empty-state.ts +22 -28
  309. package/src/nile-format-date/index.ts +1 -0
  310. package/src/nile-format-date/nile-format-date.css.ts +19 -0
  311. package/src/nile-format-date/nile-format-date.ts +133 -0
  312. package/src/nile-hero/nile-hero.css.ts +13 -32
  313. package/src/nile-hero/nile-hero.ts +39 -13
  314. package/src/nile-hero-header/index.ts +1 -0
  315. package/src/nile-hero-header/nile-hero-header.css.ts +42 -0
  316. package/src/nile-hero-header/nile-hero-header.ts +59 -0
  317. package/src/nile-icon/icons/svg/data-insight.ts +5 -0
  318. package/src/nile-icon/icons/svg/index.ts +3 -0
  319. package/src/nile-icon/icons/svg/info-circle.ts +5 -0
  320. package/src/nile-icon/icons/svg/user-01.ts +5 -0
  321. package/src/nile-icon/index.ts +2 -1
  322. package/src/nile-input/nile-input.css.ts +7 -13
  323. package/src/nile-menu/nile-menu.css.ts +2 -1
  324. package/src/nile-menu-item/nile-menu-item.css.ts +7 -4
  325. package/src/nile-slide-toggle/nile-slide-toggle.css.ts +26 -2
  326. package/src/nile-slide-toggle/nile-slide-toggle.ts +9 -1
  327. package/src/nile-tab/nile-tab.css.ts +16 -6
  328. package/src/nile-tab-group/nile-tab-group.css.ts +16 -2
  329. package/src/nile-tab-group/nile-tab-group.ts +25 -15
  330. package/src/nile-table-header-item/nile-table-header-item.css.ts +2 -2
  331. package/src/nile-toast/nile-toast.css.ts +17 -16
  332. package/src/nile-toast/nile-toast.ts +9 -7
  333. package/src/nile-tooltip/nile-tooltip.css.ts +6 -6
  334. package/tsconfig.json +3 -1
  335. package/web-test-runner.config.mjs +27 -14
  336. package/dist/stories/icons.stories.d.ts +0 -29
  337. package/dist/stories/icons.stories.js +0 -27
  338. package/dist/stories/icons.stories.js.map +0 -1
  339. package/dist/stories/index.stories.d.ts +0 -33
  340. package/dist/stories/index.stories.js +0 -37
  341. package/dist/stories/index.stories.js.map +0 -1
@@ -0,0 +1,188 @@
1
+ import { fixture, html, expect, oneEvent } from '@open-wc/testing';
2
+ import './nile-checkbox';
3
+ import { NileCheckbox } from './nile-checkbox';
4
+
5
+ describe('NileCheckbox', () => {
6
+ it('renders correctly with default properties', async () => {
7
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox></nile-checkbox>`);
8
+ expect(el).shadowDom.to.equalSnapshot();
9
+ });
10
+
11
+ it('toggles checked state on click', async () => {
12
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox></nile-checkbox>`);
13
+ const input = el.shadowRoot!.querySelector('input[type="checkbox"]')! as HTMLInputElement;
14
+
15
+ input.click();
16
+ expect(el.checked).to.be.true;
17
+ input.click();
18
+ expect(el.checked).to.be.false;
19
+ });
20
+
21
+ it('emits nile-change event on click', async () => {
22
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox></nile-checkbox>`);
23
+ const input = el.shadowRoot!.querySelector('input[type="checkbox"]')! as HTMLInputElement;
24
+
25
+ setTimeout(() => input.click());
26
+ const event = await oneEvent(el, 'valueChange');
27
+ expect(event.detail.checked).to.be.true;
28
+ });
29
+
30
+ it('handles focus and blur events', async () => {
31
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox></nile-checkbox>`);
32
+ const input = el.shadowRoot!.querySelector('input[type="checkbox"]')! as HTMLInputElement;
33
+
34
+ // Focus the input and wait for the focus event
35
+ setTimeout(() => input.focus());
36
+ const focusEvent = await oneEvent(el, 'focus');
37
+ expect(focusEvent).to.exist;
38
+
39
+ // Blur the input and wait for the blur event
40
+ setTimeout(() => input.blur());
41
+ const blurEvent = await oneEvent(el, 'blur');
42
+ expect(blurEvent).to.exist;
43
+ });
44
+
45
+ it('handles indeterminate state', async () => {
46
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox indeterminate></nile-checkbox>`);
47
+ const input = el.shadowRoot!.querySelector('input[type="checkbox"]')! as HTMLInputElement;
48
+
49
+ expect(input.indeterminate).to.be.true;
50
+
51
+ el.checked = true;
52
+ el.indeterminate = false;
53
+ await el.updateComplete;
54
+ expect(input.indeterminate).to.be.false;
55
+ expect(input.checked).to.be.true;
56
+ });
57
+
58
+ it('reflects properties to attributes', async () => {
59
+ const el = await fixture<NileCheckbox>(html`
60
+ <nile-checkbox
61
+ name="test-name"
62
+ title="test-title"
63
+ disabled
64
+ required
65
+ label="test-label"
66
+ sub-label="test-sublabel"
67
+ help-text="test-help"
68
+ error-message="test-error"
69
+ ></nile-checkbox>
70
+ `);
71
+
72
+ expect(el.getAttribute('name')).to.equal('test-name');
73
+ expect(el.getAttribute('title')).to.equal('test-title');
74
+ expect(el.getAttribute('disabled')).to.equal('');
75
+ expect(el.getAttribute('required')).to.equal('');
76
+ expect(el.getAttribute('label')).to.equal('test-label');
77
+ expect(el.getAttribute('sub-label')).to.equal('test-sublabel');
78
+ expect(el.getAttribute('help-text')).to.equal('test-help');
79
+ expect(el.getAttribute('error-message')).to.equal('test-error');
80
+ });
81
+
82
+ it('displays help text when showHelpText is true', async () => {
83
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox help-text="test-help"></nile-checkbox>`);
84
+ el.showHelpText = true;
85
+ await el.updateComplete;
86
+
87
+ const helpTextIcon = el.shadowRoot!.querySelector('.checkbox__helptext-icon');
88
+ expect(helpTextIcon).to.exist;
89
+ });
90
+
91
+ it('updates host class based on helpText', async () => {
92
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox></nile-checkbox>`);
93
+ el.helpText = 'test-help';
94
+ await el.updateComplete;
95
+
96
+ expect(el.classList.contains('full-width')).to.be.true;
97
+
98
+ el.helpText = '';
99
+ await el.updateComplete;
100
+
101
+ expect(el.classList.contains('full-width')).to.be.false;
102
+ });
103
+
104
+ it('emits custom events on connected and disconnected', async () => {
105
+ const el = document.createElement('nile-checkbox');
106
+
107
+ // Wait for the connected event
108
+ const initEventPromise = oneEvent(el, 'nile-init');
109
+ document.body.appendChild(el);
110
+ const initEvent = await initEventPromise;
111
+ expect(initEvent).to.exist;
112
+
113
+ // Wait for the disconnected event
114
+ const destroyEventPromise = oneEvent(el, 'nile-destroy');
115
+ document.body.removeChild(el);
116
+ const destroyEvent = await destroyEventPromise;
117
+ expect(destroyEvent).to.exist;
118
+ });
119
+
120
+ it('handles required attribute', async () => {
121
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox required></nile-checkbox>`);
122
+ const input = el.shadowRoot!.querySelector('input[type="checkbox"]')! as HTMLInputElement;
123
+
124
+ expect(input.required).to.be.true;
125
+ });
126
+
127
+ it('simulates click using click method', async () => {
128
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox></nile-checkbox>`);
129
+ el.click();
130
+ expect(el.checked).to.be.true;
131
+ });
132
+
133
+ it('sets and removes focus using focus and blur methods', async () => {
134
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox></nile-checkbox>`);
135
+
136
+ // Call the focus method and wait for the focus event
137
+ setTimeout(() => el.focus());
138
+ const focusEvent = await oneEvent(el, 'focus');
139
+ expect(focusEvent).to.exist;
140
+
141
+ // Call the blur method and wait for the blur event
142
+ setTimeout(() => el.blur());
143
+ const blurEvent = await oneEvent(el, 'blur');
144
+ expect(blurEvent).to.exist;
145
+ });
146
+
147
+ it('reflects checked attribute to property', async () => {
148
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox checked></nile-checkbox>`);
149
+ expect(el.checked).to.be.true;
150
+ });
151
+
152
+ it('reflects indeterminate attribute to property', async () => {
153
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox indeterminate></nile-checkbox>`);
154
+ expect(el.indeterminate).to.be.true;
155
+ });
156
+
157
+ it('associates form using form attribute', async () => {
158
+ const el = await fixture(html`
159
+ <div>
160
+ <form id="test-form"></form>
161
+ <nile-checkbox form="test-form"></nile-checkbox>
162
+ </div>
163
+ `);
164
+ const checkbox = el.querySelector('nile-checkbox') as NileCheckbox;
165
+ expect(checkbox).to.not.be.null;
166
+ expect(checkbox.getAttribute('form')).to.equal('test-form');
167
+ });
168
+
169
+ it('displays and hides help text correctly', async () => {
170
+ const el = await fixture<NileCheckbox>(html`<nile-checkbox help-text="test-help"></nile-checkbox>`);
171
+
172
+ // Initially, help text should not be shown
173
+ expect(el.showHelpText).to.be.false;
174
+
175
+ // Show the help text
176
+ el.showHelpText = true;
177
+ await el.updateComplete;
178
+ let helpTextIcon = el.shadowRoot!.querySelector('.checkbox__helptext-icon');
179
+ expect(helpTextIcon).to.exist;
180
+
181
+ // Hide the help text
182
+ el.showHelpText = false;
183
+ await el.updateComplete;
184
+ helpTextIcon = el.shadowRoot!.querySelector('.checkbox__helptext-icon');
185
+ expect(helpTextIcon).to.be.exist;
186
+ });
187
+ });
188
+
@@ -35,7 +35,6 @@ import type { CSSResultGroup } from 'lit';
35
35
  * @event nile-change - Emitted when the checked state changes.
36
36
  * @event nile-focus - Emitted when the checkbox gains focus.
37
37
  * @event nile-input - Emitted when the checkbox receives input.
38
- * @event nile-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.
39
38
  *
40
39
  * @csspart base - The component's base wrapper.
41
40
  * @csspart control - The square container that wraps the checkbox's checked state.
@@ -84,6 +83,10 @@ export class NileCheckbox extends NileElement {
84
83
  /** Label, declared this property for backward compatibility of old component */
85
84
  @property({ type: String, reflect: true }) label = '';
86
85
 
86
+ /** Sublabel, declared this property for backward compatibility of old component */
87
+ @property({ type: String, reflect: true, attribute: 'sub-label' }) subLabel =
88
+ '';
89
+
87
90
  /**
88
91
  * Draws the checkbox in an indeterminate state. This is usually applied to checkboxes that represents a "select
89
92
  * all/none" behavior when associated checkboxes have a mix of checked and unchecked states.
@@ -99,7 +102,6 @@ export class NileCheckbox extends NileElement {
99
102
 
100
103
  @property({ type: Boolean }) showHelpText = false;
101
104
 
102
-
103
105
  /**
104
106
  * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you
105
107
  * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in
@@ -110,10 +112,6 @@ export class NileCheckbox extends NileElement {
110
112
  /** Makes the checkbox a required field. */
111
113
  @property({ type: Boolean, reflect: true }) required = false;
112
114
 
113
- private toggleHelpText() {
114
- this.showHelpText = !this.showHelpText;
115
- }
116
-
117
115
  private handleClick() {
118
116
  this.checked = !this.checked;
119
117
  this.indeterminate = false;
@@ -259,7 +257,8 @@ export class NileCheckbox extends NileElement {
259
257
  </span>
260
258
 
261
259
  <div part="label" class="checkbox__label">
262
- ${typeof this.label === 'boolean' ? '' : this.label}
260
+ ${this.label ? html`<span class="checkbox__label__text">${this.label}</span>` : ``}
261
+ ${this.label && this.subLabel ? html`<span class="checkbox__sublabel__text">${this.subLabel}</span>` : ``}
263
262
  <slot></slot>
264
263
  </div>
265
264
  </label>
@@ -274,7 +273,6 @@ export class NileCheckbox extends NileElement {
274
273
  </nile-tooltip>
275
274
  `
276
275
  : ``}
277
-
278
276
  ${hasErrorMessage
279
277
  ? html`
280
278
  <nile-form-error-message
@@ -13,57 +13,95 @@ import { css } from 'lit-element';
13
13
  export const styles = css`
14
14
  :host {
15
15
  display:inline-flex;
16
- min-width:300px;
17
- max-width:512px;
16
+ min-width:var(--nile-empty-state-max-width);
17
+ max-width:var(--nile-empty-state-min-width);
18
18
  width:100%;
19
19
  }
20
20
 
21
21
  .empty-state--sm {
22
22
  --nile-es-text-size:16px;
23
+ --nile-es-text-line-height:24px;
23
24
  --nile-es-subtext-size:14px;
25
+ --nile-es-subtext-line-height:20px;
26
+
24
27
  --nile-es-icon-size:48px;
25
- --es-flat-option-border-radius:5px;
28
+ --nile-es-flat-option-border-radius:5px;
26
29
  --nile-es-img-height:118px;
30
+ --nile-es-img-width:152px;
31
+
32
+ --nile-es-gap:var(--nile-spacing-spacing-3xl);
33
+ --nile-es-body-gap:var(--nile-spacing-spacing-xl);
34
+ --nile-es-text-gap:0px;
27
35
  }
28
36
 
29
37
  .empty-state--md {
30
38
  --nile-es-text-size:18px;
39
+ --nile-es-text-line-height:28px;
31
40
  --nile-es-subtext-size:14px;
41
+ --nile-es-subtext-line-height:20px;
42
+
32
43
  --nile-es-icon-size:48px;
33
- --es-flat-option-border-radius:5px;
44
+ --nile-es-flat-option-border-radius:5px;
34
45
  --nile-es-img-height:128px;
46
+ --nile-es-img-width:172px;
47
+
48
+ --nile-es-gap:var(--nile-spacing-spacing-4xl);
49
+ --nile-es-body-gap:var(--nile-spacing-spacing-2xl);
50
+ --nile-es-text-gap:var(--nile-spacing-spacing-md);
35
51
  }
36
52
 
37
53
  .empty-state--lg {
38
54
  --nile-es-text-size:20px;
55
+ --nile-es-text-line-height:30px;
39
56
  --nile-es-subtext-size:16px;
57
+ --nile-es-subtext-line-height:24px;
58
+
40
59
  --nile-es-icon-size:56px;
41
- --es-flat-option-border-radius:10px;
60
+ --nile-es-flat-option-border-radius:10px;
42
61
  --nile-es-img-height:160px;
62
+ --nile-es-img-width:220px;
63
+
64
+ --nile-es-gap:var(--nile-spacing-spacing-4xl);
65
+ --nile-es-body-gap:var(--nile-spacing-spacing-3xl);
66
+ --nile-es-text-gap:var(--nile-spacing-spacing-md)
43
67
  }
44
68
 
45
69
  .empty-state {
46
- padding:1rem;
47
70
  min-width:300px;
48
71
  max-width:512px;
49
72
  width:100%;
50
73
  height:max-content;
51
74
  display:flex;
52
75
  flex-direction:column;
53
- row-gap:2rem;
76
+ row-gap:var(--nile-es-gap);
54
77
  }
55
78
 
56
79
  .empty-state__body {
57
- row-gap:5px;
58
80
  display:flex;
59
81
  flex-direction:column;
60
82
  justify-content:space-between;
61
83
  align-items:center;
84
+ row-gap:var(--nile-es-body-gap)
62
85
  }
63
86
 
64
87
  .empty-state__body--content {
65
88
  position:relative;
66
89
  }
90
+ .empty-state__image {
91
+ background:var(--nile-empty-state-image);
92
+ background-size: var(--nile-es-img-width) var(--nile-es-img-height);
93
+ height: var(--nile-es-img-height);
94
+ width: var(--nile-es-img-width);
95
+ max-width: 100%;
96
+ }
97
+
98
+ .empty-state__image--grayscale {
99
+ -webkit-filter: grayscale(100%);
100
+ -moz-filter: grayscale(100%);
101
+ -o-filter: grayscale(100%);
102
+ -ms-filter: grayscale(100%);
103
+ filter: grayscale(100%);
104
+ }
67
105
 
68
106
  .empty-state__img__icon {
69
107
  height: var(--nile-es-icon-size);
@@ -72,19 +110,15 @@ export const styles = css`
72
110
  display: grid;
73
111
  place-items: center;
74
112
  background: #34405466;
75
- }
76
-
77
- .empty-state__img__icon--abs {
78
113
  position:absolute;
79
114
  left: calc(50% - calc(var(--nile-es-icon-size) / 2));
80
- top:calc(50% - calc(var(--nile-es-icon-size) / 2));
115
+ top:calc(62.5% - calc(var(--nile-es-icon-size) / 2));
81
116
  }
82
117
 
83
118
  .empty-state__body--tonal {
84
119
  background: linear-gradient(180deg, #F9FAFB 0%, #EDF0F3 100%);
85
- width: 100px;
86
- height: 100px;
87
- padding: 1rem;
120
+ width: 104px;
121
+ height: 104px;
88
122
  border-radius: 50%;
89
123
  display:flex;
90
124
  justify-content:center;
@@ -92,13 +126,12 @@ export const styles = css`
92
126
  }
93
127
 
94
128
  .empty-state__body--flat {
95
- margin:2rem;
96
129
  }
97
130
 
98
131
  .nile-flat-type-icon {
99
132
  height:var(--nile-es-icon-size);
100
133
  aspect-ratio:1 / 1;
101
- border-radius: var(--es-flat-option-border-radius);
134
+ border-radius: var(--nile-es-flat-option-border-radius);
102
135
 
103
136
  background-color: white;
104
137
  display: grid;
@@ -106,25 +139,33 @@ export const styles = css`
106
139
  border: 1px solid #EAECF0;
107
140
  }
108
141
 
142
+ .empty__state__text-section {
143
+ display:flex;
144
+ flex-direction:column;
145
+ gap:var(--nile-es-text-gap);
146
+ max-width:80%;
147
+ }
148
+
109
149
  .empty-state__text {
110
150
  font-size: var(--nile-es-text-size);
111
151
  font-weight: 600;
112
- line-height: 28px;
152
+ line-height: var(--nile-es-text-line-height);
113
153
  text-align: center;
154
+ font-style: normal;
114
155
  }
115
156
 
116
157
  .empty-state__subtext {
117
158
  font-size: var(--nile-es-subtext-size);
118
159
  font-weight: 400;
119
- line-height: 20px;
160
+ line-height: var(--nile-es-subtext-line-height);
120
161
  text-align: center;
121
162
  color:#475467;
163
+ font-style: normal;
122
164
  }
123
165
 
124
166
  .empty-state-actions {
125
167
  display:flex;
126
168
  justify-content:center;
127
- gap:1rem;
128
169
  }
129
170
  `;
130
171
 
@@ -9,7 +9,6 @@ import { state, html, nothing, property, CSSResultArray, TemplateResult } from '
9
9
  import { customElement } from 'lit/decorators.js';
10
10
  import { classMap } from 'lit/directives/class-map.js';
11
11
  import { styles } from './nile-empty-state.css';
12
- import { HasSlotController } from '../internal/slot';
13
12
  import NileElement from '../internal/nile-element';
14
13
 
15
14
  /**
@@ -28,10 +27,6 @@ export class NileEmptyState extends NileElement {
28
27
  public static get styles(): CSSResultArray {
29
28
  return [styles];
30
29
  }
31
- private readonly hasSlotController = new HasSlotController(
32
- this,
33
- 'actions'
34
- );
35
30
 
36
31
  @property() size: 'sm' | 'md' | 'lg' = 'md';
37
32
 
@@ -41,6 +36,7 @@ export class NileEmptyState extends NileElement {
41
36
  | 'tonal' = 'tonal';
42
37
 
43
38
  @property() icon: string = 'error';
39
+ @property({type:Boolean}) grayscale: boolean = false;
44
40
 
45
41
  @property() text: String = 'Empty State';
46
42
  @property() subText: String = 'No Data';
@@ -55,7 +51,6 @@ export class NileEmptyState extends NileElement {
55
51
  * @slot This is a slot test
56
52
  */
57
53
  public render(): TemplateResult {
58
- const hasContentSlot = this.hasSlotController.test('content');
59
54
  return html`
60
55
  <div class="${classMap({
61
56
  'empty-state': true,
@@ -63,39 +58,38 @@ export class NileEmptyState extends NileElement {
63
58
  'empty-state--md': this.size == 'md',
64
59
  'empty-state--lg': this.size == 'lg'
65
60
  })}">
66
- <div class="${classMap({
67
- 'empty-state__body': true,
68
- })}">
69
- ${this.variant == 'content' ? html`
70
- <div class="empty-state__body--content">
71
- <slot name="content"></slot>
72
- ${!this.icon ? nothing :
73
- html`
74
- <div class="${classMap({
75
- 'empty-state__img__icon': true,
76
- 'empty-state__img__icon--abs': hasContentSlot
77
- })}">
78
- <nile-icon name="${this.icon}" color="white" size="${this.size == 'sm' ? 24 : this.size == 'md' ? 24 : 28}"></nile-icon>
79
- </div>`
61
+ <div class="${classMap({ 'empty-state__body': true })}">
62
+
63
+ ${this.variant == 'content' ? html`
64
+ <div class="empty-state__body--content">
65
+
66
+ <div src="" class="${classMap({ 'empty-state__image': true, 'empty-state__image--grayscale':this.grayscale })}"></div>
67
+ ${!this.icon ? nothing : html`
68
+ <div class="empty-state__img__icon">
69
+ <nile-icon name="${this.icon}" color="white" size="${this.size == 'sm' ? 24 : this.size == 'md' ? 24 : 28}"></nile-icon>
70
+ </div>`
71
+ }
72
+ </div>`: nothing
80
73
  }
81
- </div>`: nothing
82
- }
83
74
 
84
- ${this.variant == 'tonal' ? html`
75
+ ${this.variant == 'tonal' ? html`
85
76
  <div class="empty-state__body--tonal">
86
77
  <nile-icon name="${this.icon}" size="40"></nile-icon>
87
78
  </div>`: nothing
88
- }
79
+ }
89
80
 
90
- ${this.variant == 'flat' ? html`
81
+ ${this.variant == 'flat' ? html`
91
82
  <div class="empty-state__body--flat">
92
83
  <span class="nile-flat-type-icon">
93
84
  <nile-icon name="${this.icon}" size="${this.size == 'sm' ? 24 : this.size == 'md' ? 24 : 28}" variant="secondary"></nile-icon>
94
85
  </span>
95
86
  </div>`: nothing
96
- }
97
- <div class="empty-state__text">${this.text}</div>
98
- <div class="empty-state__subtext">${this.subText}</div>
87
+ }
88
+
89
+ <div class="empty__state__text-section">
90
+ <div class="empty-state__text">${this.text}</div>
91
+ <div class="empty-state__subtext">${this.subText}</div>
92
+ </div>
99
93
  </div>
100
94
 
101
95
  <div class="empty-state-actions">
@@ -0,0 +1 @@
1
+ export { NileFormatDate } from './nile-format-date';
@@ -0,0 +1,19 @@
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
+ * FormatDate CSS
12
+ */
13
+ export const styles = css`
14
+ :host {
15
+
16
+ }
17
+ `;
18
+
19
+ export default [styles];
@@ -0,0 +1,133 @@
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, html, property, CSSResultArray, TemplateResult} from 'lit-element';
9
+ import { customElement } from 'lit/decorators.js';
10
+ import {styles} from './nile-format-date.css';
11
+ import NileElement from '../internal/nile-element';
12
+
13
+
14
+ /**
15
+ * Nile format-date component.
16
+ *
17
+ * @tag nile-format-date
18
+ *
19
+ */
20
+ @customElement('nile-format-date')
21
+ export class NileFormatDate extends NileElement {
22
+ /**
23
+ * The styles for nile-format-date
24
+ * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
25
+ */
26
+ public static get styles(): CSSResultArray {
27
+ return [styles];
28
+ }
29
+
30
+ /**
31
+ * The date/time to format. If not set, the current date and time will be used. When passing a string, it's strongly
32
+ * recommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert a date to this format
33
+ * in JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).
34
+ */
35
+ @property() date: Date | string = new Date();
36
+
37
+ /** The format for displaying the weekday. */
38
+ @property() weekday: 'narrow' | 'short' | 'long';
39
+
40
+ /** The format for displaying the era. */
41
+ @property() era: 'narrow' | 'short' | 'long';
42
+
43
+ /** The format for displaying the year. */
44
+ @property() year: 'numeric' | '2-digit';
45
+
46
+ /** The format for displaying the month. */
47
+ @property() month: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long';
48
+
49
+ /** The format for displaying the day. */
50
+ @property() day: 'numeric' | '2-digit';
51
+
52
+ /** The format for displaying the hour. */
53
+ @property() hour: 'numeric' | '2-digit';
54
+
55
+ /** The format for displaying the minute. */
56
+ @property() minute: 'numeric' | '2-digit';
57
+
58
+ /** The format for displaying the second. */
59
+ @property() second: 'numeric' | '2-digit';
60
+
61
+ /** The format for displaying the time. */
62
+ @property({ attribute: 'time-zone-name' }) timeZoneName: 'short' | 'long';
63
+
64
+ /** The time zone to express the time in. */
65
+ @property({ attribute: 'time-zone' }) timeZone: string;
66
+
67
+ /** The format for displaying the hour. */
68
+ @property({ attribute: 'hour-format' }) hourFormat: 'auto' | '12' | '24' =
69
+ 'auto';
70
+
71
+ /** The separator for the date format. */
72
+ @property({ attribute: 'date-separator' }) dateSeparator: '-' | '/' = '-';
73
+
74
+ formatDate(dateToFormat: Date | string, options?: Intl.DateTimeFormatOptions): string {
75
+ dateToFormat = new Date(dateToFormat);
76
+ const formatter = new Intl.DateTimeFormat('en-GB', options);
77
+ const parts = formatter.formatToParts(dateToFormat);
78
+ const formattedDate = parts.map(({ type, value }) => {
79
+ if (type === 'day' || type === 'month' || type === 'year') {
80
+ return value;
81
+ }
82
+ if (type === 'literal' && value === '/') {
83
+ return this.dateSeparator;
84
+ }
85
+ return value;
86
+ }).join('');
87
+ return formattedDate;
88
+ }
89
+
90
+ // formatDate(dateToFormat: Date | string, options?: Intl.DateTimeFormatOptions): string {
91
+ // dateToFormat = new Date(dateToFormat);
92
+ // return new Intl.DateTimeFormat('en-GB', options).format(dateToFormat);
93
+ // }
94
+
95
+
96
+ render() {
97
+ const date = new Date(this.date);
98
+ const hour12 =
99
+ this.hourFormat === 'auto' ? undefined : this.hourFormat === '12';
100
+
101
+ // Check for an invalid date
102
+ if (isNaN(date.getMilliseconds())) {
103
+ return undefined;
104
+ }
105
+
106
+ return html`
107
+ <time datetime=${date.toISOString()}>
108
+ ${this.formatDate(date, {
109
+ weekday: this.weekday,
110
+ era: this.era,
111
+ year: this.year,
112
+ month: this.month,
113
+ day: this.day,
114
+ hour: this.hour,
115
+ minute: this.minute,
116
+ second: this.second,
117
+ timeZoneName: this.timeZoneName,
118
+ timeZone: this.timeZone,
119
+ hour12: hour12,
120
+ })}
121
+ </time>
122
+ `;
123
+ }
124
+ }
125
+ /* #endregion */
126
+
127
+ export default NileFormatDate;
128
+
129
+ declare global {
130
+ interface HTMLElementTagNameMap {
131
+ 'nile-format-date': NileFormatDate;
132
+ }
133
+ }