@ukic/web-components 2.35.1 → 2.36.0

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 (273) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-badge.cjs.entry.js +23 -0
  3. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ic-card.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-dialog.cjs.entry.js +20 -5
  10. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-navigation-button.cjs.entry.js +2 -2
  16. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-radio-group.cjs.entry.js +2 -1
  20. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-select.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  23. package/dist/cjs/loader.cjs.js +1 -1
  24. package/dist/collection/collection-manifest.json +1 -1
  25. package/dist/collection/components/ic-back-to-top/ic-back-to-top.stories.js +4 -4
  26. package/dist/collection/components/ic-badge/ic-badge.js +39 -1
  27. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  28. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js +194 -0
  29. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js.map +1 -1
  30. package/dist/collection/components/ic-card/ic-card.css +5 -0
  31. package/dist/collection/components/ic-checkbox/ic-checkbox.css +24 -0
  32. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +27 -0
  33. package/dist/collection/components/ic-dialog/ic-dialog.css +0 -6
  34. package/dist/collection/components/ic-dialog/ic-dialog.js +20 -5
  35. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  36. package/dist/collection/components/ic-dialog/ic-dialog.stories.js +28 -12
  37. package/dist/collection/components/ic-link/ic-link.css +15 -16
  38. package/dist/collection/components/ic-menu/ic-menu.css +1 -0
  39. package/dist/collection/components/ic-navigation-button/ic-navigation-button.css +4 -0
  40. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +1 -1
  41. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  42. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +1 -1
  43. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  44. package/dist/collection/components/ic-radio-group/ic-radio-group.js +2 -1
  45. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  46. package/dist/collection/components/ic-select/ic-select.css +6 -0
  47. package/dist/collection/components/ic-tooltip/ic-tooltip.js +2 -5
  48. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  49. package/dist/collection/components/ic-top-navigation/ic-top-navigation.stories.js +8 -8
  50. package/dist/components/helpers.js +1 -1
  51. package/dist/components/ic-badge.js +25 -2
  52. package/dist/components/ic-badge.js.map +1 -1
  53. package/dist/components/ic-card.js +1 -1
  54. package/dist/components/ic-card.js.map +1 -1
  55. package/dist/components/ic-checkbox.js +1 -1
  56. package/dist/components/ic-checkbox.js.map +1 -1
  57. package/dist/components/ic-dialog.js +21 -6
  58. package/dist/components/ic-dialog.js.map +1 -1
  59. package/dist/components/ic-footer.js +1 -1
  60. package/dist/components/ic-horizontal-scroll2.js +1 -1
  61. package/dist/components/ic-link2.js +1 -1
  62. package/dist/components/ic-link2.js.map +1 -1
  63. package/dist/components/ic-menu2.js +1 -1
  64. package/dist/components/ic-menu2.js.map +1 -1
  65. package/dist/components/ic-navigation-button.js +2 -2
  66. package/dist/components/ic-navigation-button.js.map +1 -1
  67. package/dist/components/ic-popover-menu.js +2 -2
  68. package/dist/components/ic-popover-menu.js.map +1 -1
  69. package/dist/components/ic-radio-group.js +2 -1
  70. package/dist/components/ic-radio-group.js.map +1 -1
  71. package/dist/components/ic-select.js +1 -1
  72. package/dist/components/ic-select.js.map +1 -1
  73. package/dist/components/ic-side-navigation.js +1 -1
  74. package/dist/components/ic-tooltip2.js.map +1 -1
  75. package/dist/core/core.esm.js +1 -1
  76. package/dist/core/core.esm.js.map +1 -1
  77. package/dist/core/{p-6d8dc552.entry.js → p-049b00e3.entry.js} +2 -2
  78. package/dist/core/{p-4c6dc1b2.entry.js → p-079ded83.entry.js} +2 -2
  79. package/dist/core/{p-b21d5f94.entry.js → p-07c8903e.entry.js} +2 -2
  80. package/dist/core/{p-eae017ce.entry.js → p-14231fae.entry.js} +2 -2
  81. package/dist/core/{p-a32016ff.entry.js → p-17693afd.entry.js} +2 -2
  82. package/dist/core/{p-bfaa257c.entry.js → p-1f0af1c1.entry.js} +2 -2
  83. package/dist/core/{p-90433147.entry.js → p-210c7412.entry.js} +2 -2
  84. package/dist/core/{p-e668390c.entry.js → p-3016cf8b.entry.js} +2 -2
  85. package/dist/core/p-3016cf8b.entry.js.map +1 -0
  86. package/dist/core/{p-b62735aa.entry.js → p-34e2d5f8.entry.js} +2 -2
  87. package/dist/core/p-3d00dc57.entry.js +2 -0
  88. package/dist/core/{p-f404b35e.entry.js.map → p-3d00dc57.entry.js.map} +1 -1
  89. package/dist/core/{p-ba06cc95.entry.js → p-3d25e57f.entry.js} +2 -2
  90. package/dist/core/{p-ba06cc95.entry.js.map → p-3d25e57f.entry.js.map} +1 -1
  91. package/dist/core/{p-7b3a4b3f.entry.js → p-435e2cc1.entry.js} +2 -2
  92. package/dist/core/p-4bf75524.entry.js +2 -0
  93. package/dist/core/p-4bf75524.entry.js.map +1 -0
  94. package/dist/core/{p-a020afbd.entry.js → p-4db8f363.entry.js} +2 -2
  95. package/dist/core/{p-b262eaff.entry.js → p-4eaa91dc.entry.js} +2 -2
  96. package/dist/core/{p-08478a4c.entry.js → p-52f2fd7f.entry.js} +2 -2
  97. package/dist/core/{p-bdaff5c9.entry.js → p-5d560fbc.entry.js} +2 -2
  98. package/dist/core/p-64b91313.entry.js +2 -0
  99. package/dist/core/p-64b91313.entry.js.map +1 -0
  100. package/dist/core/p-6de03032.entry.js +2 -0
  101. package/dist/core/p-6de03032.entry.js.map +1 -0
  102. package/dist/core/{p-12bac804.entry.js → p-75ad7845.entry.js} +2 -2
  103. package/dist/core/{p-f39741be.entry.js → p-75ce6f9e.entry.js} +2 -2
  104. package/dist/core/{p-915e5888.entry.js → p-760c127e.entry.js} +2 -2
  105. package/dist/core/{p-72f292f2.entry.js → p-8e58a5d6.entry.js} +2 -2
  106. package/dist/core/p-91d23dbc.entry.js +2 -0
  107. package/dist/core/p-91d23dbc.entry.js.map +1 -0
  108. package/dist/core/{p-3ba915a5.entry.js → p-93033fd9.entry.js} +2 -2
  109. package/dist/core/{p-193fc7d0.entry.js → p-9d5fc6f3.entry.js} +2 -2
  110. package/dist/core/{p-d375858e.entry.js → p-9de0c38f.entry.js} +2 -2
  111. package/dist/core/{p-65dc77ba.entry.js → p-9e42ced7.entry.js} +2 -2
  112. package/dist/core/{p-f4382f1f.entry.js → p-9eb15234.entry.js} +2 -2
  113. package/dist/core/p-a37e084c.entry.js +2 -0
  114. package/dist/core/p-a37e084c.entry.js.map +1 -0
  115. package/dist/core/{p-1e4690f8.entry.js → p-a52be218.entry.js} +2 -2
  116. package/dist/core/{p-c939d07d.entry.js → p-a74b8236.entry.js} +2 -2
  117. package/dist/core/p-a8c3ca20.entry.js +2 -0
  118. package/dist/core/p-a8c3ca20.entry.js.map +1 -0
  119. package/dist/core/{p-3e8023ff.entry.js → p-a925887a.entry.js} +2 -2
  120. package/dist/core/{p-d3344518.entry.js → p-acc9809f.entry.js} +2 -2
  121. package/dist/core/{p-a9cea205.entry.js → p-b6fa4e29.entry.js} +2 -2
  122. package/dist/core/{p-7f1594d9.entry.js → p-bc19b7ec.entry.js} +2 -2
  123. package/dist/core/p-bc19b7ec.entry.js.map +1 -0
  124. package/dist/core/{p-6beed7db.entry.js → p-bc89defc.entry.js} +2 -2
  125. package/dist/core/{p-96e79d69.entry.js → p-bfe7b939.entry.js} +2 -2
  126. package/dist/core/{p-8dd2d3df.entry.js → p-c269ae71.entry.js} +2 -2
  127. package/dist/core/{p-ba884064.entry.js → p-c3526591.entry.js} +2 -2
  128. package/dist/core/{p-a438656d.entry.js → p-c5ab0e71.entry.js} +2 -2
  129. package/dist/core/{p-1f6d36d5.entry.js → p-cf7954a7.entry.js} +2 -2
  130. package/dist/core/{p-78f16b1a.entry.js → p-cff469b4.entry.js} +2 -2
  131. package/dist/core/{p-597c221c.entry.js → p-d06c9130.entry.js} +2 -2
  132. package/dist/core/p-d06c9130.entry.js.map +1 -0
  133. package/dist/core/{p-9ef08234.entry.js → p-d55d252b.entry.js} +2 -2
  134. package/dist/core/{p-5d3c6ea1.entry.js → p-d8f083ac.entry.js} +2 -2
  135. package/dist/core/p-d8f083ac.entry.js.map +1 -0
  136. package/dist/core/{p-91fab13d.entry.js → p-da06d732.entry.js} +2 -2
  137. package/dist/core/{p-51407872.entry.js → p-da683ff8.entry.js} +2 -2
  138. package/dist/core/{p-f3599009.entry.js → p-dc09ffe3.entry.js} +2 -2
  139. package/dist/core/{p-168a7440.entry.js → p-e21e50cf.entry.js} +2 -2
  140. package/dist/core/{p-a141ea39.entry.js → p-ee629759.entry.js} +2 -2
  141. package/dist/core/{p-d41c847e.js → p-fd85797a.js} +2 -2
  142. package/dist/esm/core.js +1 -1
  143. package/dist/esm/{helpers-003f27c9.js → helpers-c7b7c2d9.js} +2 -2
  144. package/dist/esm/{helpers-003f27c9.js.map → helpers-c7b7c2d9.js.map} +1 -1
  145. package/dist/esm/ic-accordion-group.entry.js +1 -1
  146. package/dist/esm/ic-accordion.entry.js +1 -1
  147. package/dist/esm/ic-alert.entry.js +1 -1
  148. package/dist/esm/ic-back-to-top.entry.js +1 -1
  149. package/dist/esm/ic-badge.entry.js +24 -1
  150. package/dist/esm/ic-badge.entry.js.map +1 -1
  151. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  152. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  153. package/dist/esm/ic-button_3.entry.js +1 -1
  154. package/dist/esm/ic-button_3.entry.js.map +1 -1
  155. package/dist/esm/ic-card.entry.js +2 -2
  156. package/dist/esm/ic-card.entry.js.map +1 -1
  157. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  158. package/dist/esm/ic-checkbox.entry.js +2 -2
  159. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  160. package/dist/esm/ic-chip.entry.js +1 -1
  161. package/dist/esm/ic-data-row.entry.js +1 -1
  162. package/dist/esm/ic-dialog.entry.js +21 -6
  163. package/dist/esm/ic-dialog.entry.js.map +1 -1
  164. package/dist/esm/ic-divider.entry.js +1 -1
  165. package/dist/esm/ic-empty-state.entry.js +1 -1
  166. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  167. package/dist/esm/ic-footer-link.entry.js +1 -1
  168. package/dist/esm/ic-footer.entry.js +1 -1
  169. package/dist/esm/ic-hero.entry.js +1 -1
  170. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  171. package/dist/esm/ic-input-component-container_3.entry.js +2 -2
  172. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  173. package/dist/esm/ic-input-label_2.entry.js +1 -1
  174. package/dist/esm/ic-link.entry.js +2 -2
  175. package/dist/esm/ic-link.entry.js.map +1 -1
  176. package/dist/esm/ic-menu-group.entry.js +1 -1
  177. package/dist/esm/ic-menu-item.entry.js +1 -1
  178. package/dist/esm/ic-navigation-button.entry.js +3 -3
  179. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  180. package/dist/esm/ic-navigation-group.entry.js +1 -1
  181. package/dist/esm/ic-navigation-item.entry.js +1 -1
  182. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  183. package/dist/esm/ic-page-header.entry.js +1 -1
  184. package/dist/esm/ic-pagination-item.entry.js +1 -1
  185. package/dist/esm/ic-pagination.entry.js +1 -1
  186. package/dist/esm/ic-popover-menu.entry.js +2 -2
  187. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  188. package/dist/esm/ic-radio-group.entry.js +3 -2
  189. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  190. package/dist/esm/ic-radio-option.entry.js +1 -1
  191. package/dist/esm/ic-search-bar.entry.js +1 -1
  192. package/dist/esm/ic-select.entry.js +2 -2
  193. package/dist/esm/ic-select.entry.js.map +1 -1
  194. package/dist/esm/ic-side-navigation.entry.js +1 -1
  195. package/dist/esm/ic-status-tag.entry.js +1 -1
  196. package/dist/esm/ic-step.entry.js +1 -1
  197. package/dist/esm/ic-stepper.entry.js +1 -1
  198. package/dist/esm/ic-switch.entry.js +1 -1
  199. package/dist/esm/ic-tab-group.entry.js +1 -1
  200. package/dist/esm/ic-tab.entry.js +1 -1
  201. package/dist/esm/ic-text-field.entry.js +1 -1
  202. package/dist/esm/ic-theme.entry.js +1 -1
  203. package/dist/esm/ic-toast.entry.js +1 -1
  204. package/dist/esm/ic-toggle-button-group.entry.js +1 -1
  205. package/dist/esm/ic-toggle-button.entry.js +1 -1
  206. package/dist/esm/ic-top-navigation.entry.js +1 -1
  207. package/dist/esm/ic-typography.entry.js +1 -1
  208. package/dist/esm/loader.js +1 -1
  209. package/dist/types/components/ic-badge/ic-badge.d.ts +5 -0
  210. package/dist/types/components/ic-dialog/ic-dialog.d.ts +1 -0
  211. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +1 -1
  212. package/dist/types/components.d.ts +7 -0
  213. package/hydrate/index.js +55 -16
  214. package/package.json +4 -3
  215. package/vscode-data.json +4 -0
  216. package/dist/core/p-13b2c3a2.entry.js +0 -2
  217. package/dist/core/p-13b2c3a2.entry.js.map +0 -1
  218. package/dist/core/p-2a11be1e.entry.js +0 -2
  219. package/dist/core/p-2a11be1e.entry.js.map +0 -1
  220. package/dist/core/p-405d89bb.entry.js +0 -2
  221. package/dist/core/p-405d89bb.entry.js.map +0 -1
  222. package/dist/core/p-597c221c.entry.js.map +0 -1
  223. package/dist/core/p-5d3c6ea1.entry.js.map +0 -1
  224. package/dist/core/p-7f1594d9.entry.js.map +0 -1
  225. package/dist/core/p-9a6790d8.entry.js +0 -2
  226. package/dist/core/p-9a6790d8.entry.js.map +0 -1
  227. package/dist/core/p-b60912a7.entry.js +0 -2
  228. package/dist/core/p-b60912a7.entry.js.map +0 -1
  229. package/dist/core/p-e1ab5945.entry.js +0 -2
  230. package/dist/core/p-e1ab5945.entry.js.map +0 -1
  231. package/dist/core/p-e668390c.entry.js.map +0 -1
  232. package/dist/core/p-f404b35e.entry.js +0 -2
  233. /package/dist/core/{p-6d8dc552.entry.js.map → p-049b00e3.entry.js.map} +0 -0
  234. /package/dist/core/{p-4c6dc1b2.entry.js.map → p-079ded83.entry.js.map} +0 -0
  235. /package/dist/core/{p-b21d5f94.entry.js.map → p-07c8903e.entry.js.map} +0 -0
  236. /package/dist/core/{p-eae017ce.entry.js.map → p-14231fae.entry.js.map} +0 -0
  237. /package/dist/core/{p-a32016ff.entry.js.map → p-17693afd.entry.js.map} +0 -0
  238. /package/dist/core/{p-bfaa257c.entry.js.map → p-1f0af1c1.entry.js.map} +0 -0
  239. /package/dist/core/{p-90433147.entry.js.map → p-210c7412.entry.js.map} +0 -0
  240. /package/dist/core/{p-b62735aa.entry.js.map → p-34e2d5f8.entry.js.map} +0 -0
  241. /package/dist/core/{p-7b3a4b3f.entry.js.map → p-435e2cc1.entry.js.map} +0 -0
  242. /package/dist/core/{p-a020afbd.entry.js.map → p-4db8f363.entry.js.map} +0 -0
  243. /package/dist/core/{p-b262eaff.entry.js.map → p-4eaa91dc.entry.js.map} +0 -0
  244. /package/dist/core/{p-08478a4c.entry.js.map → p-52f2fd7f.entry.js.map} +0 -0
  245. /package/dist/core/{p-bdaff5c9.entry.js.map → p-5d560fbc.entry.js.map} +0 -0
  246. /package/dist/core/{p-12bac804.entry.js.map → p-75ad7845.entry.js.map} +0 -0
  247. /package/dist/core/{p-f39741be.entry.js.map → p-75ce6f9e.entry.js.map} +0 -0
  248. /package/dist/core/{p-915e5888.entry.js.map → p-760c127e.entry.js.map} +0 -0
  249. /package/dist/core/{p-72f292f2.entry.js.map → p-8e58a5d6.entry.js.map} +0 -0
  250. /package/dist/core/{p-3ba915a5.entry.js.map → p-93033fd9.entry.js.map} +0 -0
  251. /package/dist/core/{p-193fc7d0.entry.js.map → p-9d5fc6f3.entry.js.map} +0 -0
  252. /package/dist/core/{p-d375858e.entry.js.map → p-9de0c38f.entry.js.map} +0 -0
  253. /package/dist/core/{p-65dc77ba.entry.js.map → p-9e42ced7.entry.js.map} +0 -0
  254. /package/dist/core/{p-f4382f1f.entry.js.map → p-9eb15234.entry.js.map} +0 -0
  255. /package/dist/core/{p-1e4690f8.entry.js.map → p-a52be218.entry.js.map} +0 -0
  256. /package/dist/core/{p-c939d07d.entry.js.map → p-a74b8236.entry.js.map} +0 -0
  257. /package/dist/core/{p-3e8023ff.entry.js.map → p-a925887a.entry.js.map} +0 -0
  258. /package/dist/core/{p-d3344518.entry.js.map → p-acc9809f.entry.js.map} +0 -0
  259. /package/dist/core/{p-a9cea205.entry.js.map → p-b6fa4e29.entry.js.map} +0 -0
  260. /package/dist/core/{p-6beed7db.entry.js.map → p-bc89defc.entry.js.map} +0 -0
  261. /package/dist/core/{p-96e79d69.entry.js.map → p-bfe7b939.entry.js.map} +0 -0
  262. /package/dist/core/{p-8dd2d3df.entry.js.map → p-c269ae71.entry.js.map} +0 -0
  263. /package/dist/core/{p-ba884064.entry.js.map → p-c3526591.entry.js.map} +0 -0
  264. /package/dist/core/{p-a438656d.entry.js.map → p-c5ab0e71.entry.js.map} +0 -0
  265. /package/dist/core/{p-1f6d36d5.entry.js.map → p-cf7954a7.entry.js.map} +0 -0
  266. /package/dist/core/{p-78f16b1a.entry.js.map → p-cff469b4.entry.js.map} +0 -0
  267. /package/dist/core/{p-9ef08234.entry.js.map → p-d55d252b.entry.js.map} +0 -0
  268. /package/dist/core/{p-91fab13d.entry.js.map → p-da06d732.entry.js.map} +0 -0
  269. /package/dist/core/{p-51407872.entry.js.map → p-da683ff8.entry.js.map} +0 -0
  270. /package/dist/core/{p-f3599009.entry.js.map → p-dc09ffe3.entry.js.map} +0 -0
  271. /package/dist/core/{p-168a7440.entry.js.map → p-e21e50cf.entry.js.map} +0 -0
  272. /package/dist/core/{p-a141ea39.entry.js.map → p-ee629759.entry.js.map} +0 -0
  273. /package/dist/core/{p-d41c847e.js.map → p-fd85797a.js.map} +0 -0
@@ -1,5 +1,7 @@
1
1
  import { Host, h, } from "@stencil/core";
2
2
  import { convertToRGBA, getCssProperty, getThemeForegroundColor, hexToRgba, isPropDefined, onComponentRequiredPropUndefined, rgbaStrToObj, } from "../../utils/helpers";
3
+ const NAVIGATION_BUTTON = "IC-NAVIGATION-BUTTON";
4
+ const TOP_NAVIGATION = "IC-TOP-NAVIGATION";
3
5
  /**
4
6
  * @slot badge-icon - Icon will be rendered inside the badge if type is set to icon.
5
7
  */
@@ -59,6 +61,18 @@ export class Badge {
59
61
  }
60
62
  }
61
63
  };
64
+ this.setPositionInTopNavigation = () => {
65
+ const parentTopNavEl = this.el.parentElement.parentElement;
66
+ parentTopNavEl.classList.contains("mobile-mode")
67
+ ? (this.position = "inline")
68
+ : (this.position = "near");
69
+ };
70
+ this.isInTopNav = () => {
71
+ const parentEl = this.el.parentElement;
72
+ const grandparentEl = parentEl.parentElement;
73
+ return (parentEl.tagName === NAVIGATION_BUTTON &&
74
+ grandparentEl.tagName === TOP_NAVIGATION);
75
+ };
62
76
  this.isAccessibleLabelDefined = () => isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;
63
77
  this.accessibleLabel = undefined;
64
78
  this.customColor = null;
@@ -95,6 +109,15 @@ export class Badge {
95
109
  this.type === "text" &&
96
110
  onComponentRequiredPropUndefined([{ prop: this.textLabel, propName: "text-label" }], "Badge");
97
111
  }
112
+ componentWillRender() {
113
+ this.isInTopNav() && this.setPositionInTopNavigation();
114
+ }
115
+ navBarMenuOpenHandler() {
116
+ this.isInTopNav() && (this.position = "inline");
117
+ }
118
+ navBarMenuCloseHandler() {
119
+ this.isInTopNav() && (this.position = "near");
120
+ }
98
121
  /**
99
122
  * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.
100
123
  */
@@ -193,7 +216,7 @@ export class Badge {
193
216
  },
194
217
  "position": {
195
218
  "type": "string",
196
- "mutable": false,
219
+ "mutable": true,
197
220
  "complexType": {
198
221
  "original": "IcBadgePositions",
199
222
  "resolved": "\"far\" | \"inline\" | \"near\"",
@@ -384,5 +407,20 @@ export class Badge {
384
407
  "methodName": "visibleHandler"
385
408
  }];
386
409
  }
410
+ static get listeners() {
411
+ return [{
412
+ "name": "icNavigationMenuOpened",
413
+ "method": "navBarMenuOpenHandler",
414
+ "target": "document",
415
+ "capture": false,
416
+ "passive": false
417
+ }, {
418
+ "name": "icNavigationMenuClosed",
419
+ "method": "navBarMenuCloseHandler",
420
+ "target": "document",
421
+ "capture": false,
422
+ "passive": false
423
+ }];
424
+ }
387
425
  }
388
426
  //# sourceMappingURL=ic-badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ic-badge.js","sourceRoot":"","sources":["../../../src/components/ic-badge/ic-badge.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n Method,\n Prop,\n Watch,\n h,\n} from \"@stencil/core\";\nimport {\n IcBadgePositions,\n IcBadgeTypes,\n IcBadgeVariants,\n} from \"./ic-badge.types\";\nimport {\n IcColorRGBA,\n IcSizes,\n IcThemeForeground,\n IcColor,\n} from \"../../utils/types\";\nimport {\n convertToRGBA,\n getCssProperty,\n getThemeForegroundColor,\n hexToRgba,\n isPropDefined,\n onComponentRequiredPropUndefined,\n rgbaStrToObj,\n} from \"../../utils/helpers\";\n\n/**\n * @slot badge-icon - Icon will be rendered inside the badge if type is set to icon.\n */\n@Component({\n tag: \"ic-badge\",\n styleUrl: \"ic-badge.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Badge {\n private ariaLabel: string = null;\n private customColorRGBA: IcColorRGBA;\n private foregroundColour: IcThemeForeground;\n private parentAriaLabel: string;\n\n @Element() el: HTMLIcBadgeElement;\n\n /**\n * The accessible label of the badge component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string;\n\n @Watch(\"accessibleLabel\")\n accessibleLabelHandler(): void {\n this.setAccessibleLabel();\n }\n\n /**\n * The custom badge colour. This will only style the badge component if variant=\"custom\".\n * Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() customColor?: IcColor = null;\n\n @Watch(\"customColor\")\n customColorHandler(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n }\n\n /**\n * The maximum number shown on the badge appended with a +.\n * This will only be displayed if type=\"text\" and textLabel is not empty.\n */\n @Prop() maxNumber?: number;\n\n /**\n * The positioning of the badge in reference to the parent element.\n */\n @Prop() position?: IcBadgePositions = \"far\";\n\n /**\n * The size of the badge to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The text displayed in the badge. This will only be displayed if type=\"text\".\n */\n @Prop() textLabel?: string;\n\n /**\n * The type of badge to be displayed.\n */\n @Prop() type?: IcBadgeTypes = \"text\";\n\n /**\n * The variant of the badge to be displayed.\n */\n @Prop() variant?: IcBadgeVariants = \"neutral\";\n\n @Watch(\"variant\")\n variantHandler(): void {\n this.getBadgeForeground();\n }\n\n /**\n * If `true`, the badge will be displayed.\n */\n @Prop({ mutable: true }) visible: boolean = true;\n\n @Watch(\"visible\")\n visibleHandler(): void {\n this.setAccessibleLabel();\n }\n\n componentWillLoad(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n\n this.getBadgeForeground();\n\n const ariaLabel = this.el.parentElement?.ariaLabel;\n if (ariaLabel) this.parentAriaLabel = ariaLabel;\n this.setAccessibleLabel();\n }\n\n componentDidLoad(): void {\n this.type === \"text\" &&\n onComponentRequiredPropUndefined(\n [{ prop: this.textLabel, propName: \"text-label\" }],\n \"Badge\"\n );\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async showBadge(): Promise<void> {\n this.visible = true;\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async hideBadge(): Promise<void> {\n this.visible = false;\n }\n\n private setBadgeColour = () => {\n const colorRGBA = convertToRGBA(this.customColor);\n\n if (colorRGBA) {\n this.customColorRGBA = colorRGBA;\n const { r, g, b, a } = colorRGBA;\n this.el.style.backgroundColor = `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n };\n\n private getBadgeRGB = () => {\n switch (this.variant) {\n case \"custom\":\n return this.customColorRGBA;\n case \"error\":\n case \"success\":\n case \"warning\":\n case \"info\": {\n return rgbaStrToObj(getCssProperty(`--ic-status-${this.variant}`));\n }\n case \"neutral\":\n case \"light\":\n return hexToRgba(\n getCssProperty(\n `--ic-architectural-${this.variant === \"neutral\" ? 500 : 40}`\n )\n );\n }\n };\n\n private getBadgeForeground = () => {\n const { r, g, b } = this.getBadgeRGB();\n this.foregroundColour = getThemeForegroundColor(\n (r * 299 + g * 587 + b * 114) / 1000\n );\n };\n\n private getTextLabel = () =>\n this.maxNumber && Number(this.textLabel) > this.maxNumber\n ? `${this.maxNumber}+`\n : this.textLabel;\n\n // Set aria-label on badge and / or parent element\n // Aria-describedby seems to not work, probably due to shadow DOM\n private setAccessibleLabel = () => {\n const parentEl = this.el.parentElement;\n const defaultAriaLabel = this.isAccessibleLabelDefined()\n ? this.accessibleLabel\n : this.textLabel || \"with badge being displayed\";\n\n if (parentEl) {\n const { tagName } = parentEl;\n if (\n tagName !== \"IC-CARD\" &&\n (tagName !== \"IC-TAB\" || (tagName === \"IC-TAB\" && this.parentAriaLabel))\n ) {\n const ariaLabelPrefix = this.parentAriaLabel\n ? `${this.parentAriaLabel} ,`\n : \"\";\n parentEl.ariaLabel = this.visible\n ? `${ariaLabelPrefix} ${defaultAriaLabel}`\n : undefined;\n } else {\n this.ariaLabel = `, ${defaultAriaLabel}`;\n }\n }\n };\n\n private isAccessibleLabelDefined = () =>\n isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;\n\n render() {\n const {\n ariaLabel,\n el,\n foregroundColour,\n getTextLabel,\n position,\n size,\n textLabel,\n type,\n variant,\n visible,\n } = this;\n\n return (\n <Host\n class={{\n [`${position}`]: true,\n [`${size}`]: true,\n [`${variant}`]: true,\n [`${type}`]: true,\n [`foreground-${foregroundColour}`]: foregroundColour !== null,\n [`${visible ? \"show\" : \"hide\"}`]: true,\n }}\n id={el.id || null}\n aria-label={ariaLabel}\n role=\"status\"\n >\n {type === \"icon\" && <slot name=\"badge-icon\"></slot>}\n {type === \"text\" && textLabel && (\n <ic-typography variant={size === \"small\" ? \"badge-small\" : \"badge\"}>\n {getTextLabel()}\n </ic-typography>\n )}\n {type === \"dot\" && <span class=\"sr-only\">badge</span>}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-badge.js","sourceRoot":"","sources":["../../../src/components/ic-badge/ic-badge.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n Method,\n Prop,\n Watch,\n h,\n Listen,\n} from \"@stencil/core\";\nimport {\n IcBadgePositions,\n IcBadgeTypes,\n IcBadgeVariants,\n} from \"./ic-badge.types\";\nimport {\n IcColorRGBA,\n IcSizes,\n IcThemeForeground,\n IcColor,\n} from \"../../utils/types\";\nimport {\n convertToRGBA,\n getCssProperty,\n getThemeForegroundColor,\n hexToRgba,\n isPropDefined,\n onComponentRequiredPropUndefined,\n rgbaStrToObj,\n} from \"../../utils/helpers\";\n\nconst NAVIGATION_BUTTON = \"IC-NAVIGATION-BUTTON\";\nconst TOP_NAVIGATION = \"IC-TOP-NAVIGATION\";\n\n/**\n * @slot badge-icon - Icon will be rendered inside the badge if type is set to icon.\n */\n@Component({\n tag: \"ic-badge\",\n styleUrl: \"ic-badge.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Badge {\n private ariaLabel: string = null;\n private customColorRGBA: IcColorRGBA;\n private foregroundColour: IcThemeForeground;\n private parentAriaLabel: string;\n\n @Element() el: HTMLIcBadgeElement;\n\n /**\n * The accessible label of the badge component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string;\n\n @Watch(\"accessibleLabel\")\n accessibleLabelHandler(): void {\n this.setAccessibleLabel();\n }\n\n /**\n * The custom badge colour. This will only style the badge component if variant=\"custom\".\n * Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() customColor?: IcColor = null;\n\n @Watch(\"customColor\")\n customColorHandler(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n }\n\n /**\n * The maximum number shown on the badge appended with a +.\n * This will only be displayed if type=\"text\" and textLabel is not empty.\n */\n @Prop() maxNumber?: number;\n\n /**\n * The positioning of the badge in reference to the parent element.\n */\n @Prop({ mutable: true }) position?: IcBadgePositions = \"far\";\n\n /**\n * The size of the badge to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The text displayed in the badge. This will only be displayed if type=\"text\".\n */\n @Prop() textLabel?: string;\n\n /**\n * The type of badge to be displayed.\n */\n @Prop() type?: IcBadgeTypes = \"text\";\n\n /**\n * The variant of the badge to be displayed.\n */\n @Prop() variant?: IcBadgeVariants = \"neutral\";\n\n @Watch(\"variant\")\n variantHandler(): void {\n this.getBadgeForeground();\n }\n\n /**\n * If `true`, the badge will be displayed.\n */\n @Prop({ mutable: true }) visible: boolean = true;\n\n @Watch(\"visible\")\n visibleHandler(): void {\n this.setAccessibleLabel();\n }\n\n componentWillLoad(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n\n this.getBadgeForeground();\n\n const ariaLabel = this.el.parentElement?.ariaLabel;\n if (ariaLabel) this.parentAriaLabel = ariaLabel;\n this.setAccessibleLabel();\n }\n\n componentDidLoad(): void {\n this.type === \"text\" &&\n onComponentRequiredPropUndefined(\n [{ prop: this.textLabel, propName: \"text-label\" }],\n \"Badge\"\n );\n }\n\n componentWillRender(): void {\n this.isInTopNav() && this.setPositionInTopNavigation();\n }\n\n @Listen(\"icNavigationMenuOpened\", { target: \"document\" })\n navBarMenuOpenHandler(): void {\n this.isInTopNav() && (this.position = \"inline\");\n }\n\n @Listen(\"icNavigationMenuClosed\", { target: \"document\" })\n navBarMenuCloseHandler(): void {\n this.isInTopNav() && (this.position = \"near\");\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async showBadge(): Promise<void> {\n this.visible = true;\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async hideBadge(): Promise<void> {\n this.visible = false;\n }\n\n private setBadgeColour = () => {\n const colorRGBA = convertToRGBA(this.customColor);\n\n if (colorRGBA) {\n this.customColorRGBA = colorRGBA;\n const { r, g, b, a } = colorRGBA;\n this.el.style.backgroundColor = `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n };\n\n private getBadgeRGB = () => {\n switch (this.variant) {\n case \"custom\":\n return this.customColorRGBA;\n case \"error\":\n case \"success\":\n case \"warning\":\n case \"info\": {\n return rgbaStrToObj(getCssProperty(`--ic-status-${this.variant}`));\n }\n case \"neutral\":\n case \"light\":\n return hexToRgba(\n getCssProperty(\n `--ic-architectural-${this.variant === \"neutral\" ? 500 : 40}`\n )\n );\n }\n };\n\n private getBadgeForeground = () => {\n const { r, g, b } = this.getBadgeRGB();\n this.foregroundColour = getThemeForegroundColor(\n (r * 299 + g * 587 + b * 114) / 1000\n );\n };\n\n private getTextLabel = () =>\n this.maxNumber && Number(this.textLabel) > this.maxNumber\n ? `${this.maxNumber}+`\n : this.textLabel;\n\n // Set aria-label on badge and / or parent element\n // Aria-describedby seems to not work, probably due to shadow DOM\n private setAccessibleLabel = () => {\n const parentEl = this.el.parentElement;\n const defaultAriaLabel = this.isAccessibleLabelDefined()\n ? this.accessibleLabel\n : this.textLabel || \"with badge being displayed\";\n\n if (parentEl) {\n const { tagName } = parentEl;\n if (\n tagName !== \"IC-CARD\" &&\n (tagName !== \"IC-TAB\" || (tagName === \"IC-TAB\" && this.parentAriaLabel))\n ) {\n const ariaLabelPrefix = this.parentAriaLabel\n ? `${this.parentAriaLabel} ,`\n : \"\";\n parentEl.ariaLabel = this.visible\n ? `${ariaLabelPrefix} ${defaultAriaLabel}`\n : undefined;\n } else {\n this.ariaLabel = `, ${defaultAriaLabel}`;\n }\n }\n };\n\n private setPositionInTopNavigation = () => {\n const parentTopNavEl = this.el.parentElement.parentElement;\n parentTopNavEl.classList.contains(\"mobile-mode\")\n ? (this.position = \"inline\")\n : (this.position = \"near\");\n };\n\n private isInTopNav = (): boolean => {\n const parentEl = this.el.parentElement;\n const grandparentEl = parentEl.parentElement;\n return (\n parentEl.tagName === NAVIGATION_BUTTON &&\n grandparentEl.tagName === TOP_NAVIGATION\n );\n };\n\n private isAccessibleLabelDefined = () =>\n isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;\n\n render() {\n const {\n ariaLabel,\n el,\n foregroundColour,\n getTextLabel,\n position,\n size,\n textLabel,\n type,\n variant,\n visible,\n } = this;\n\n return (\n <Host\n class={{\n [`${position}`]: true,\n [`${size}`]: true,\n [`${variant}`]: true,\n [`${type}`]: true,\n [`foreground-${foregroundColour}`]: foregroundColour !== null,\n [`${visible ? \"show\" : \"hide\"}`]: true,\n }}\n id={el.id || null}\n aria-label={ariaLabel}\n role=\"status\"\n >\n {type === \"icon\" && <slot name=\"badge-icon\"></slot>}\n {type === \"text\" && textLabel && (\n <ic-typography variant={size === \"small\" ? \"badge-small\" : \"badge\"}>\n {getTextLabel()}\n </ic-typography>\n )}\n {type === \"dot\" && <span class=\"sr-only\">badge</span>}\n </Host>\n );\n }\n}\n"]}
@@ -6,6 +6,7 @@ import { Tab } from "../../../ic-tab/ic-tab";
6
6
  import { Card } from "../../../ic-card/ic-card";
7
7
  import { NavigationButton } from "../../../ic-navigation-button/ic-navigation-button";
8
8
  import { NavigationItem } from "../../../ic-navigation-item/ic-navigation-item";
9
+ import { TopNavigation } from "../../../ic-top-navigation/ic-top-navigation";
9
10
  describe("ic-badge", () => {
10
11
  it("should render with text slotted in a button", async () => {
11
12
  const page = await newSpecPage({
@@ -171,6 +172,99 @@ describe("ic-badge", () => {
171
172
  });
172
173
  expect(page.root).toMatchSnapshot("should render slotted in a navigation button");
173
174
  });
175
+ it("should render slotted in a top navigation", async () => {
176
+ const page = await newSpecPage({
177
+ components: [TopNavigation, NavigationItem, Badge],
178
+ html: `<ic-top-navigation
179
+ app-title="Application Name"
180
+ status="alpha"
181
+ version="v0.0.7"
182
+ >
183
+ <svg
184
+ slot="app-icon"
185
+ xmlns="http://www.w3.org/2000/svg"
186
+ height="24px"
187
+ viewBox="0 0 24 24"
188
+ width="24px"
189
+ fill="#000000"
190
+ >
191
+ <path d="M0 0h24v24H0V0z" fill="none" />
192
+ <path
193
+ d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z"
194
+ />
195
+ </svg>
196
+ <ic-search-bar
197
+ slot="search"
198
+ placeholder="Search"
199
+ label="Search"
200
+ ></ic-search-bar>
201
+ <ic-navigation-button
202
+ label="Button One"
203
+ slot="buttons"
204
+ href="https://www.google.com"
205
+ target="_blank"
206
+ title="Google 1"
207
+ >
208
+ <svg
209
+ slot="icon"
210
+ xmlns="http://www.w3.org/2000/svg"
211
+ height="24px"
212
+ viewBox="0 0 24 24"
213
+ width="24px"
214
+ fill="#000000"
215
+ >
216
+ <path d="M0 0h24v24H0V0z" fill="none" />
217
+ <path
218
+ d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z"
219
+ />
220
+ </svg>
221
+ <ic-badge label="1" slot="badge"></ic-badge>
222
+ </ic-navigation-button>
223
+ <ic-navigation-button
224
+ label="Button Two"
225
+ slot="buttons"
226
+ href="https://www.google.com"
227
+ target="_blank"
228
+ title="Google 2"
229
+ >
230
+ <svg
231
+ slot="icon"
232
+ xmlns="http://www.w3.org/2000/svg"
233
+ height="24px"
234
+ viewBox="0 0 24 24"
235
+ width="24px"
236
+ fill="#000000"
237
+ >
238
+ <path d="M0 0h24v24H0z" fill="none" />
239
+ <path
240
+ d="M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z"
241
+ />
242
+ </svg>
243
+ <ic-badge slot="badge" type="dot"></ic-badge>
244
+ </ic-navigation-button>
245
+ <ic-navigation-button
246
+ label="Button Three"
247
+ slot="buttons"
248
+ onclick="alert('test')"
249
+ >
250
+ <svg
251
+ slot="icon"
252
+ xmlns="http://www.w3.org/2000/svg"
253
+ height="24px"
254
+ viewBox="0 0 24 24"
255
+ width="24px"
256
+ fill="#000000"
257
+ >
258
+ <path d="M0 0h24v24H0V0z" fill="none" />
259
+ <path
260
+ d="M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"
261
+ />
262
+ </svg>
263
+ </ic-navigation-button>
264
+ </ic-top-navigation>`,
265
+ });
266
+ expect(page.root).toMatchSnapshot("should render slotted in a top navigation");
267
+ });
174
268
  it("should render slotted in a navigation item", async () => {
175
269
  const page = await newSpecPage({
176
270
  components: [NavigationItem, Badge],
@@ -262,5 +356,105 @@ describe("ic-badge", () => {
262
356
  });
263
357
  expect(page.root).toMatchSnapshot("should render with id");
264
358
  });
359
+ it("should set the correct variant when navigation menu is opened and closed", async () => {
360
+ const page = await newSpecPage({
361
+ components: [Badge, NavigationButton],
362
+ html: `<ic-top-navigation
363
+ app-title="Application Name"
364
+ status="alpha"
365
+ version="v0.0.7"
366
+ >
367
+ <svg
368
+ slot="app-icon"
369
+ xmlns="http://www.w3.org/2000/svg"
370
+ height="24px"
371
+ viewBox="0 0 24 24"
372
+ width="24px"
373
+ fill="#000000"
374
+ >
375
+ <path d="M0 0h24v24H0V0z" fill="none" />
376
+ <path
377
+ d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z"
378
+ />
379
+ </svg>
380
+ <ic-search-bar
381
+ slot="search"
382
+ placeholder="Search"
383
+ label="Search"
384
+ ></ic-search-bar>
385
+ <ic-navigation-button
386
+ label="Button One"
387
+ slot="buttons"
388
+ href="https://www.google.com"
389
+ target="_blank"
390
+ title="Google 1"
391
+ >
392
+ <svg
393
+ slot="icon"
394
+ xmlns="http://www.w3.org/2000/svg"
395
+ height="24px"
396
+ viewBox="0 0 24 24"
397
+ width="24px"
398
+ fill="#000000"
399
+ >
400
+ <path d="M0 0h24v24H0V0z" fill="none" />
401
+ <path
402
+ d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z"
403
+ />
404
+ </svg>
405
+ <ic-badge label="1" slot="badge"></ic-badge>
406
+ </ic-navigation-button>
407
+ <ic-navigation-button
408
+ label="Button Two"
409
+ slot="buttons"
410
+ href="https://www.google.com"
411
+ target="_blank"
412
+ title="Google 2"
413
+ >
414
+ <svg
415
+ slot="icon"
416
+ xmlns="http://www.w3.org/2000/svg"
417
+ height="24px"
418
+ viewBox="0 0 24 24"
419
+ width="24px"
420
+ fill="#000000"
421
+ >
422
+ <path d="M0 0h24v24H0z" fill="none" />
423
+ <path
424
+ d="M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z"
425
+ />
426
+ </svg>
427
+ <ic-badge slot="badge" type="dot"></ic-badge>
428
+ </ic-navigation-button>
429
+ <ic-navigation-button
430
+ label="Button Three"
431
+ slot="buttons"
432
+ onclick="alert('test')"
433
+ >
434
+ <svg
435
+ slot="icon"
436
+ xmlns="http://www.w3.org/2000/svg"
437
+ height="24px"
438
+ viewBox="0 0 24 24"
439
+ width="24px"
440
+ fill="#000000"
441
+ >
442
+ <path d="M0 0h24v24H0V0z" fill="none" />
443
+ <path
444
+ d="M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"
445
+ />
446
+ </svg>
447
+ </ic-navigation-button>
448
+ </ic-top-navigation>`,
449
+ });
450
+ const badge = document.querySelector("ic-badge");
451
+ expect(page.rootInstance.mode).toBe("navbar");
452
+ document.dispatchEvent(new CustomEvent("icNavigationMenuOpened"));
453
+ expect(page.rootInstance.mode).toBe("menu");
454
+ expect(badge.position).toBe("inline");
455
+ document.dispatchEvent(new CustomEvent("icNavigationMenuClosed"));
456
+ expect(page.rootInstance.mode).toBe("navbar");
457
+ expect(badge.position).toBe("near");
458
+ });
265
459
  });
266
460
  //# sourceMappingURL=ic-badge.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ic-badge.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-badge/test/basic/ic-badge.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAEhF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,sEAAsE;SAC7E,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAC/B,6CAA6C,CAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,sFAAsF;SAC7F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,sFAAsF;SAC7F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,wFAAwF;SAC/F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,+BAA+B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,wFAAwF;SAC/F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,+BAA+B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,qFAAqF;SAC5F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,8GAA8G;SACrH,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAC/B,wDAAwD,CACzD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,uHAAuH;SAC9H,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAC/B,wDAAwD,CACzD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,uFAAuF;SAC9F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,wCAAwC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,8GAA8G;SACrH,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,qCAAqC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,qFAAqF;SAC5F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,qFAAqF;SAC5F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,kEAAkE;SACzE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE;;;;;oCAKwB;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,sFAAsF;SAC7F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,kCAAkC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;YACzB,IAAI,EAAE,0FAA0F;SACjG,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;YACxB,IAAI,EAAE,+EAA+E;SACtF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;YACzB,IAAI,EAAE,4FAA4F;SACnG,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC;YACrC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;4BA0BgB;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAC/B,8CAA8C,CAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC;YACnC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;0BAoBc;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAC/B,4CAA4C,CAC7C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,sEAAsE;SAC7E,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9C,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,sEAAsE;SAC7E,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,8GAA8G;SACrH,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QAEzC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;YAChD,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,GAAG;SACP,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,8GAA8G;SACrH,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAE7C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,uFAAuF;SAC9F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;YAC3B,IAAI,EAAE,mFAAmF;SAC1F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Badge } from \"../../ic-badge\";\nimport { Button } from \"../../../ic-button/ic-button\";\nimport { Chip } from \"../../../ic-chip/ic-chip\";\nimport { Tab } from \"../../../ic-tab/ic-tab\";\nimport { Card } from \"../../../ic-card/ic-card\";\nimport { NavigationButton } from \"../../../ic-navigation-button/ic-navigation-button\";\nimport { NavigationItem } from \"../../../ic-navigation-item/ic-navigation-item\";\n\ndescribe(\"ic-badge\", () => {\n it(\"should render with text slotted in a button\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render with text slotted in a button\"\n );\n });\n\n it(\"should render light variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"light\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render light variant\");\n });\n\n it(\"should render error variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"error\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render error variant\");\n });\n\n it(\"should render success variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"success\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render success variant\");\n });\n\n it(\"should render warning variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"warning\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render warning variant\");\n });\n it(\"should render info variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"info\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render info variant\");\n });\n\n it(\"should render custom variant with custom colour in hex\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"#F8C8DC\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render custom variant with custom colour in hex\"\n );\n });\n\n it(\"should render custom variant with custom colour in rgb\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"rgb(248,200,220)\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render custom variant with custom colour in rgb\"\n );\n });\n\n it(\"should render with max number prop set\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" max-number=\"9\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with max number prop set\");\n });\n\n it(\"should render with accessible label\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\" accessible-label=\"1 notification found\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with accessible label\");\n });\n\n it(\"should render size small\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" size=\"small\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render size small\");\n });\n\n it(\"should render size large\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" size=\"large\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render size large\");\n });\n\n it(\"should render type dot\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" type=\"dot\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render type dot\");\n });\n\n it(\"should render type icon\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" type=\"icon\">\n <svg slot='badge-icon' xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z\"/>\n </svg>\n </ic-badge></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render type icon\");\n });\n\n it(\"should render with visible false\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" visible=\"false\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with visible false\");\n });\n\n it(\"should render slotted in a chip\", async () => {\n const page = await newSpecPage({\n components: [Chip, Badge],\n html: `<ic-chip label=\"Badge\"><ic-badge slot=\"badge\" text-label=\"1\" position=\"near\"/></ic-chip>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render slotted in a chip\");\n });\n\n it(\"should render slotted in a tab with aria-label set on badge\", async () => {\n const page = await newSpecPage({\n components: [Tab, Badge],\n html: `<ic-tab>Tab<ic-badge slot=\"badge\" text-label=\"1\" position=\"inline\"/></ic-tab>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render slotted in a tab\");\n });\n\n it(\"should render slotted in a card with aria-label set on badge\", async () => {\n const page = await newSpecPage({\n components: [Card, Badge],\n html: `<ic-card heading=\"Badge\"><ic-badge slot=\"badge\" text-label=\"1\" position=\"near\"/></ic-card>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render slotted in a card\");\n });\n\n it(\"should render slotted in a navigation button\", async () => {\n const page = await newSpecPage({\n components: [NavigationButton, Badge],\n html: `<ic-navigation-button\n label=\"Button One\"\n slot=\"buttons\"\n href=\"https://www.google.com\"\n target=\"_blank\"\n title=\"Google 1\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z\"\n />\n </svg>\n <ic-badge\n text-label=\"1\"\n slot=\"badge\"\n position=\"near\"\n variant=\"light\"\n ></ic-badge>\n </ic-navigation-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render slotted in a navigation button\"\n );\n });\n\n it(\"should render slotted in a navigation item\", async () => {\n const page = await newSpecPage({\n components: [NavigationItem, Badge],\n html: `<ic-navigation-item label=\"Navigation\" href=\"/\">\n <ic-badge\n text-label=\"1\"\n slot=\"badge\"\n variant=\"light\"\n position=\"far\"\n ></ic-badge>\n <svg\n slot=\"icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M23 8C23 9.1 22.1 10 21 10C20.82 10 20.65 9.98 20.49 9.93L16.93 13.48C16.98 13.64 17 13.82 17 14C17 15.1 16.1 16 15 16C13.9 16 13 15.1 13 14C13 13.82 13.02 13.64 13.07 13.48L10.52 10.93C10.36 10.98 10.18 11 10 11C9.82 11 9.64 10.98 9.48 10.93L4.93 15.49C4.98 15.65 5 15.82 5 16C5 17.1 4.1 18 3 18C1.9 18 1 17.1 1 16C1 14.9 1.9 14 3 14C3.18 14 3.35 14.02 3.51 14.07L8.07 9.52C8.02 9.36 8 9.18 8 9C8 7.9 8.9 7 10 7C11.1 7 12 7.9 12 9C12 9.18 11.98 9.36 11.93 9.52L14.48 12.07C14.64 12.02 14.82 12 15 12C15.18 12 15.36 12.02 15.52 12.07L19.07 8.51C19.02 8.35 19 8.18 19 8C19 6.9 19.9 6 21 6C22.1 6 23 6.9 23 8Z\"\n fill=\"currentColor\"\n />\n </svg>\n </ic-navigation-item>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render slotted in a navigation item\"\n );\n });\n\n it(\"should hide and show the badge using visible prop\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\"/></ic-button>`,\n });\n\n const badge = document.querySelector(\"ic-badge\");\n\n expect(page.rootInstance.visible).toBe(true);\n\n badge.visible = false;\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(false);\n\n badge.visible = true;\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(true);\n });\n\n //To be removed when we remove show and hide methods\n it(\"should hide and show the badge using methods\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\"/></ic-button>`,\n });\n\n const badge = document.querySelector(\"ic-badge\");\n\n expect(page.rootInstance.visible).toBe(true);\n\n await badge.hideBadge();\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(false);\n\n await badge.showBadge();\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(true);\n });\n\n it(\"should set the correct badge colour\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"#F8C8DC\"/></ic-button>`,\n });\n\n await page.rootInstance.setBadgeColour();\n\n expect(page.rootInstance.customColorRGBA).toEqual({\n a: 1,\n b: 220,\n g: 200,\n r: 248,\n });\n });\n\n it(\"should set the correct foreground colour\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"#F8C8DC\"/></ic-button>`,\n });\n\n await page.rootInstance.getBadgeForeground();\n\n expect(page.rootInstance.foregroundColour).toBe(\"dark\");\n });\n\n it(\"should set the correct text label when max number is set\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" max-number=\"9\"/></ic-button>`,\n });\n\n expect(page.rootInstance.getTextLabel()).toBe(\"9+\");\n });\n\n it(\"should render with id set\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" id=\"badge-1\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with id\");\n });\n});\n"]}
1
+ {"version":3,"file":"ic-badge.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-badge/test/basic/ic-badge.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Badge } from \"../../ic-badge\";\nimport { Button } from \"../../../ic-button/ic-button\";\nimport { Chip } from \"../../../ic-chip/ic-chip\";\nimport { Tab } from \"../../../ic-tab/ic-tab\";\nimport { Card } from \"../../../ic-card/ic-card\";\nimport { NavigationButton } from \"../../../ic-navigation-button/ic-navigation-button\";\nimport { NavigationItem } from \"../../../ic-navigation-item/ic-navigation-item\";\nimport { TopNavigation } from \"../../../ic-top-navigation/ic-top-navigation\";\n\ndescribe(\"ic-badge\", () => {\n it(\"should render with text slotted in a button\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render with text slotted in a button\"\n );\n });\n\n it(\"should render light variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"light\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render light variant\");\n });\n\n it(\"should render error variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"error\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render error variant\");\n });\n\n it(\"should render success variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"success\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render success variant\");\n });\n\n it(\"should render warning variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"warning\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render warning variant\");\n });\n\n it(\"should render info variant\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"info\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render info variant\");\n });\n\n it(\"should render custom variant with custom colour in hex\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"#F8C8DC\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render custom variant with custom colour in hex\"\n );\n });\n\n it(\"should render custom variant with custom colour in rgb\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"rgb(248,200,220)\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render custom variant with custom colour in rgb\"\n );\n });\n\n it(\"should render with max number prop set\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" max-number=\"9\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with max number prop set\");\n });\n\n it(\"should render with accessible label\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\" accessible-label=\"1 notification found\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with accessible label\");\n });\n\n it(\"should render size small\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" size=\"small\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render size small\");\n });\n\n it(\"should render size large\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" size=\"large\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render size large\");\n });\n\n it(\"should render type dot\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" type=\"dot\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render type dot\");\n });\n\n it(\"should render type icon\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" type=\"icon\">\n <svg slot='badge-icon' xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\">\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z\"/>\n </svg>\n </ic-badge></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render type icon\");\n });\n\n it(\"should render with visible false\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" visible=\"false\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with visible false\");\n });\n\n it(\"should render slotted in a chip\", async () => {\n const page = await newSpecPage({\n components: [Chip, Badge],\n html: `<ic-chip label=\"Badge\"><ic-badge slot=\"badge\" text-label=\"1\" position=\"near\"/></ic-chip>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render slotted in a chip\");\n });\n\n it(\"should render slotted in a tab with aria-label set on badge\", async () => {\n const page = await newSpecPage({\n components: [Tab, Badge],\n html: `<ic-tab>Tab<ic-badge slot=\"badge\" text-label=\"1\" position=\"inline\"/></ic-tab>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render slotted in a tab\");\n });\n\n it(\"should render slotted in a card with aria-label set on badge\", async () => {\n const page = await newSpecPage({\n components: [Card, Badge],\n html: `<ic-card heading=\"Badge\"><ic-badge slot=\"badge\" text-label=\"1\" position=\"near\"/></ic-card>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render slotted in a card\");\n });\n\n it(\"should render slotted in a navigation button\", async () => {\n const page = await newSpecPage({\n components: [NavigationButton, Badge],\n html: `<ic-navigation-button\n label=\"Button One\"\n slot=\"buttons\"\n href=\"https://www.google.com\"\n target=\"_blank\"\n title=\"Google 1\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z\"\n />\n </svg>\n <ic-badge\n text-label=\"1\"\n slot=\"badge\"\n position=\"near\"\n variant=\"light\"\n ></ic-badge>\n </ic-navigation-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render slotted in a navigation button\"\n );\n });\n\n it(\"should render slotted in a top navigation\", async () => {\n const page = await newSpecPage({\n components: [TopNavigation, NavigationItem, Badge],\n html: `<ic-top-navigation\n app-title=\"Application Name\"\n status=\"alpha\"\n version=\"v0.0.7\"\n >\n <svg\n slot=\"app-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z\"\n />\n </svg>\n <ic-search-bar\n slot=\"search\"\n placeholder=\"Search\"\n label=\"Search\"\n ></ic-search-bar>\n <ic-navigation-button\n label=\"Button One\"\n slot=\"buttons\"\n href=\"https://www.google.com\"\n target=\"_blank\"\n title=\"Google 1\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z\"\n />\n </svg>\n <ic-badge label=\"1\" slot=\"badge\"></ic-badge>\n </ic-navigation-button>\n <ic-navigation-button\n label=\"Button Two\"\n slot=\"buttons\"\n href=\"https://www.google.com\"\n target=\"_blank\"\n title=\"Google 2\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z\"\n />\n </svg>\n <ic-badge slot=\"badge\" type=\"dot\"></ic-badge>\n </ic-navigation-button>\n <ic-navigation-button\n label=\"Button Three\"\n slot=\"buttons\"\n onclick=\"alert('test')\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z\"\n />\n </svg>\n </ic-navigation-button>\n </ic-top-navigation>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render slotted in a top navigation\"\n );\n });\n\n it(\"should render slotted in a navigation item\", async () => {\n const page = await newSpecPage({\n components: [NavigationItem, Badge],\n html: `<ic-navigation-item label=\"Navigation\" href=\"/\">\n <ic-badge\n text-label=\"1\"\n slot=\"badge\"\n variant=\"light\"\n position=\"far\"\n ></ic-badge>\n <svg\n slot=\"icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M23 8C23 9.1 22.1 10 21 10C20.82 10 20.65 9.98 20.49 9.93L16.93 13.48C16.98 13.64 17 13.82 17 14C17 15.1 16.1 16 15 16C13.9 16 13 15.1 13 14C13 13.82 13.02 13.64 13.07 13.48L10.52 10.93C10.36 10.98 10.18 11 10 11C9.82 11 9.64 10.98 9.48 10.93L4.93 15.49C4.98 15.65 5 15.82 5 16C5 17.1 4.1 18 3 18C1.9 18 1 17.1 1 16C1 14.9 1.9 14 3 14C3.18 14 3.35 14.02 3.51 14.07L8.07 9.52C8.02 9.36 8 9.18 8 9C8 7.9 8.9 7 10 7C11.1 7 12 7.9 12 9C12 9.18 11.98 9.36 11.93 9.52L14.48 12.07C14.64 12.02 14.82 12 15 12C15.18 12 15.36 12.02 15.52 12.07L19.07 8.51C19.02 8.35 19 8.18 19 8C19 6.9 19.9 6 21 6C22.1 6 23 6.9 23 8Z\"\n fill=\"currentColor\"\n />\n </svg>\n </ic-navigation-item>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render slotted in a navigation item\"\n );\n });\n\n it(\"should hide and show the badge using visible prop\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\"/></ic-button>`,\n });\n\n const badge = document.querySelector(\"ic-badge\");\n\n expect(page.rootInstance.visible).toBe(true);\n\n badge.visible = false;\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(false);\n\n badge.visible = true;\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(true);\n });\n\n //To be removed when we remove show and hide methods\n it(\"should hide and show the badge using methods\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"1\"/></ic-button>`,\n });\n\n const badge = document.querySelector(\"ic-badge\");\n\n expect(page.rootInstance.visible).toBe(true);\n\n await badge.hideBadge();\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(false);\n\n await badge.showBadge();\n await page.waitForChanges();\n\n expect(page.rootInstance.visible).toBe(true);\n });\n\n it(\"should set the correct badge colour\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"#F8C8DC\"/></ic-button>`,\n });\n\n await page.rootInstance.setBadgeColour();\n\n expect(page.rootInstance.customColorRGBA).toEqual({\n a: 1,\n b: 220,\n g: 200,\n r: 248,\n });\n });\n\n it(\"should set the correct foreground colour\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" variant=\"custom\" text-label=\"1\" custom-color=\"#F8C8DC\"/></ic-button>`,\n });\n\n await page.rootInstance.getBadgeForeground();\n\n expect(page.rootInstance.foregroundColour).toBe(\"dark\");\n });\n\n it(\"should set the correct text label when max number is set\", async () => {\n const page = await newSpecPage({\n components: [Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" text-label=\"100\" max-number=\"9\"/></ic-button>`,\n });\n\n expect(page.rootInstance.getTextLabel()).toBe(\"9+\");\n });\n\n it(\"should render with id set\", async () => {\n const page = await newSpecPage({\n components: [Button, Badge],\n html: `<ic-button>Button<ic-badge slot=\"badge\" id=\"badge-1\" text-label=\"1\"/></ic-button>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with id\");\n });\n\n it(\"should set the correct variant when navigation menu is opened and closed\", async () => {\n const page = await newSpecPage({\n components: [Badge, NavigationButton],\n html: `<ic-top-navigation\n app-title=\"Application Name\"\n status=\"alpha\"\n version=\"v0.0.7\"\n >\n <svg\n slot=\"app-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z\"\n />\n </svg>\n <ic-search-bar\n slot=\"search\"\n placeholder=\"Search\"\n label=\"Search\"\n ></ic-search-bar>\n <ic-navigation-button\n label=\"Button One\"\n slot=\"buttons\"\n href=\"https://www.google.com\"\n target=\"_blank\"\n title=\"Google 1\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z\"\n />\n </svg>\n <ic-badge label=\"1\" slot=\"badge\"></ic-badge>\n </ic-navigation-button>\n <ic-navigation-button\n label=\"Button Two\"\n slot=\"buttons\"\n href=\"https://www.google.com\"\n target=\"_blank\"\n title=\"Google 2\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z\"\n />\n </svg>\n <ic-badge slot=\"badge\" type=\"dot\"></ic-badge>\n </ic-navigation-button>\n <ic-navigation-button\n label=\"Button Three\"\n slot=\"buttons\"\n onclick=\"alert('test')\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z\"\n />\n </svg>\n </ic-navigation-button>\n </ic-top-navigation>`,\n });\n\n const badge = document.querySelector(\"ic-badge\");\n\n expect(page.rootInstance.mode).toBe(\"navbar\");\n\n document.dispatchEvent(new CustomEvent(\"icNavigationMenuOpened\"));\n expect(page.rootInstance.mode).toBe(\"menu\");\n expect(badge.position).toBe(\"inline\");\n\n document.dispatchEvent(new CustomEvent(\"icNavigationMenuClosed\"));\n expect(page.rootInstance.mode).toBe(\"navbar\");\n expect(badge.position).toBe(\"near\");\n });\n});\n"]}
@@ -689,6 +689,11 @@ button {
689
689
  .card.disabled .card-title {
690
690
  color: GrayText;
691
691
  }
692
+
693
+ .toggle-button:focus,
694
+ .toggle-button:hover {
695
+ outline-color: Highlight;
696
+ }
692
697
  }
693
698
 
694
699
  /* Add back in after storybook has the `color-scheme: light dark` code */
@@ -678,3 +678,27 @@ video {
678
678
  display: none;
679
679
  }
680
680
  }
681
+
682
+ /* Right to left */
683
+ .checkmark:dir(rtl) {
684
+ right: 0;
685
+ }
686
+
687
+ .checkbox-label:dir(rtl) {
688
+ padding-right: var(--ic-space-sm);
689
+ padding-left: 0;
690
+ }
691
+
692
+ .indeterminate-symbol:dir(rtl) {
693
+ right: 0.288rem;
694
+ }
695
+
696
+ .branch-corner:dir(rtl) {
697
+ border-radius: 0 0 0.188rem 0;
698
+ border-right: 0.125rem solid var(--ic-action-default);
699
+ border-left: none;
700
+ }
701
+
702
+ .dynamic-container:dir(rtl) {
703
+ margin: var(--ic-space-xxxs) var(--ic-space-sm) var(--ic-space-xxs) 0;
704
+ }
@@ -612,6 +612,33 @@ export const TextFieldValueChange = {
612
612
  name: "TextField value change",
613
613
  };
614
614
 
615
+ export const RTL = {
616
+ render: (args) => html`
617
+ <ic-checkbox-group label="This is a label" name="group1" dir="rtl">
618
+ <ic-checkbox
619
+ value="valueName1"
620
+ label="Indeterminate"
621
+ indeterminate="true"
622
+ ></ic-checkbox>
623
+ <ic-checkbox value="valueName2" label="Selected" checked></ic-checkbox>
624
+ <ic-checkbox value="valueName3" label="Disabled" disabled></ic-checkbox>
625
+ <ic-checkbox
626
+ additional-field-display="dynamic"
627
+ value="valueName4"
628
+ label="Conditional dynamic"
629
+ >
630
+ <ic-text-field
631
+ slot="additional-field"
632
+ placeholder="Placeholder"
633
+ label="What's your favourite type of coffee?"
634
+ ></ic-text-field>
635
+ </ic-checkbox>
636
+ </ic-checkbox-group>
637
+ `,
638
+
639
+ name: "RTL",
640
+ };
641
+
615
642
  export const Playground = {
616
643
  render: (args) => {
617
644
  const [{ checked }, updateArgs] = useArgs();
@@ -544,17 +544,11 @@ video {
544
544
  }
545
545
 
546
546
  .content-area {
547
- -ms-overflow-style: none;
548
- scrollbar-width: none;
549
547
  padding: 0 var(--ic-space-md);
550
548
  margin: 0;
551
549
  overflow-y: auto;
552
550
  }
553
551
 
554
- .content-area::-webkit-scrollbar {
555
- display: none;
556
- }
557
-
558
552
  #dialog-content {
559
553
  margin-bottom: var(--ic-space-sm);
560
554
  }
@@ -1,6 +1,6 @@
1
1
  import { Host, h, } from "@stencil/core";
2
2
  import closeIcon from "../../assets/close-icon.svg";
3
- import { isSlotUsed, checkResizeObserver, isPropDefined, onComponentRequiredPropUndefined, } from "../../utils/helpers";
3
+ import { isSlotUsed, checkResizeObserver, isPropDefined, onComponentRequiredPropUndefined, getSlotElements, } from "../../utils/helpers";
4
4
  /**
5
5
  * @slot dialog-controls - Content will be place at the bottom of the dialog.
6
6
  * @slot heading - Content will be placed at the top of the dialog.
@@ -9,6 +9,7 @@ import { isSlotUsed, checkResizeObserver, isPropDefined, onComponentRequiredProp
9
9
  */
10
10
  export class Dialog {
11
11
  constructor() {
12
+ this.contentAreaMutationObserver = null;
12
13
  this.DATA_GETS_FOCUS = "data-gets-focus";
13
14
  this.DATA_GETS_FOCUS_SELECTOR = "[data-gets-focus]";
14
15
  this.DIALOG_CONTROLS = "dialog-controls";
@@ -63,12 +64,26 @@ export class Dialog {
63
64
  }
64
65
  };
65
66
  this.refreshInteractiveElementsOnSlotChange = () => {
66
- this.contentArea = this.el.shadowRoot.querySelector("#dialog-content slot");
67
+ const contentWrapper = this.el.shadowRoot.querySelector("#dialog-content");
68
+ this.contentArea = contentWrapper.querySelector("slot");
69
+ // Detect changes to slotted elements
67
70
  this.contentArea.addEventListener("slotchange", this.getInteractiveElements);
71
+ this.contentAreaMutationObserver = new MutationObserver(() => {
72
+ this.getInteractiveElements();
73
+ });
74
+ // Detect changes to children of slotted elements
75
+ getSlotElements(contentWrapper).forEach((el) => {
76
+ this.contentAreaMutationObserver.observe(el, {
77
+ childList: true,
78
+ subtree: true,
79
+ });
80
+ });
68
81
  };
69
82
  this.removeSlotChangeListener = () => {
83
+ var _a;
70
84
  if (this.contentArea) {
71
85
  this.contentArea.removeEventListener("slotchange", this.getInteractiveElements);
86
+ (_a = this.contentAreaMutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
72
87
  }
73
88
  };
74
89
  this.setInitialFocus = () => {
@@ -117,9 +132,9 @@ export class Dialog {
117
132
  };
118
133
  this.getInteractiveElements = () => {
119
134
  this.interactiveElementList = Array.from(this.el.shadowRoot.querySelectorAll("ic-button"));
120
- const slottedInteractiveElements = Array.from(this.el.querySelectorAll(`a[href], button, input:not(.ic-input), textarea, select, details, [tabindex]:not([tabindex="-1"]),
121
- ic-button, ic-checkbox, ic-select, ic-search-bar, ic-tab-group, ic-radio-group,
122
- ic-back-to-top, ic-breadcrumb, ic-chip[dismissible="true"], ic-footer-link, ic-link, ic-navigation-button,
135
+ const slottedInteractiveElements = Array.from(this.el.querySelectorAll(`a[href], button, input:not(.ic-input), textarea, select, details, [tabindex]:not([tabindex="-1"]),
136
+ ic-button, ic-checkbox, ic-select, ic-search-bar, ic-tab-group, ic-radio-group,
137
+ ic-back-to-top, ic-breadcrumb, ic-chip[dismissible="true"], ic-footer-link, ic-link, ic-navigation-button,
123
138
  ic-navigation-item, ic-switch, ic-text-field, ic-accordion-group, ic-accordion, ic-date-input, ic-date-picker`));
124
139
  if (slottedInteractiveElements.length > 0) {
125
140
  if (slottedInteractiveElements[0].slot !== this.DIALOG_CONTROLS) {