@govtechsg/sgds-web-component 3.2.0-rc.1 → 3.2.0-rc.3

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 (453) hide show
  1. package/components/Badge/badge.js +1 -1
  2. package/components/Badge/index.umd.js +4532 -197
  3. package/components/Badge/index.umd.js.map +1 -1
  4. package/components/Badge/sgds-badge.js +70 -30
  5. package/components/Badge/sgds-badge.js.map +1 -1
  6. package/components/ComboBox/index.umd.js +1320 -173
  7. package/components/ComboBox/index.umd.js.map +1 -1
  8. package/components/Datepicker/index.umd.js +33 -6
  9. package/components/Datepicker/index.umd.js.map +1 -1
  10. package/components/DescriptionList/index.umd.js.map +1 -1
  11. package/components/Input/index.umd.js +33 -6
  12. package/components/Input/index.umd.js.map +1 -1
  13. package/components/Input/input.js +1 -1
  14. package/components/Input/sgds-input.js +32 -5
  15. package/components/Input/sgds-input.js.map +1 -1
  16. package/components/Modal/index.umd.js.map +1 -1
  17. package/components/QuantityToggle/index.umd.js +33 -6
  18. package/components/QuantityToggle/index.umd.js.map +1 -1
  19. package/components/Switch/index.umd.js.map +1 -1
  20. package/components/Table/index.umd.js.map +1 -1
  21. package/components/Tooltip/index.umd.js +1 -1
  22. package/components/Tooltip/tooltip.js +1 -1
  23. package/components/index.umd.js +19005 -18923
  24. package/components/index.umd.js.map +1 -1
  25. package/index.umd.js +18841 -18759
  26. package/index.umd.js.map +1 -1
  27. package/package.json +1 -1
  28. package/react/components/Badge/badge.cjs.js +1 -1
  29. package/react/components/Badge/badge.js +1 -1
  30. package/react/components/Badge/sgds-badge.cjs.js +69 -29
  31. package/react/components/Badge/sgds-badge.cjs.js.map +1 -1
  32. package/react/components/Badge/sgds-badge.js +70 -30
  33. package/react/components/Badge/sgds-badge.js.map +1 -1
  34. package/react/components/Input/input.cjs.js +1 -1
  35. package/react/components/Input/input.js +1 -1
  36. package/react/components/Input/sgds-input.cjs.js +32 -5
  37. package/react/components/Input/sgds-input.cjs.js.map +1 -1
  38. package/react/components/Input/sgds-input.js +32 -5
  39. package/react/components/Input/sgds-input.js.map +1 -1
  40. package/react/components/Tooltip/tooltip.cjs.js +1 -1
  41. package/react/components/Tooltip/tooltip.js +1 -1
  42. package/react/utils/slot.cjs.js +18 -0
  43. package/react/utils/slot.cjs.js.map +1 -1
  44. package/react/utils/slot.js +18 -1
  45. package/react/utils/slot.js.map +1 -1
  46. package/scripts/figma/sync-figma-to-tokens/__tests__/write-tokens-to-css-var.test.d.ts +1 -0
  47. package/scripts/figma/sync-figma-to-tokens/color.d.ts +8 -0
  48. package/scripts/figma/sync-figma-to-tokens/figma_api.d.ts +8 -0
  49. package/scripts/figma/sync-figma-to-tokens/sync-figma-to-tokens.d.ts +1 -0
  50. package/scripts/figma/sync-figma-to-tokens/token_export.d.ts +5 -0
  51. package/scripts/figma/sync-figma-to-tokens/token_types.d.ts +52 -0
  52. package/scripts/figma/sync-figma-to-tokens/utils.d.ts +3 -0
  53. package/scripts/figma/sync-figma-to-tokens/write-tokens-to-css-var.d.ts +8 -0
  54. package/{components → src/components}/Badge/sgds-badge.d.ts +11 -0
  55. package/{components → src/components}/Input/sgds-input.d.ts +5 -1
  56. package/utils/slot.js +18 -1
  57. package/utils/slot.js.map +1 -1
  58. /package/{base → src/base}/button-element.d.ts +0 -0
  59. /package/{base → src/base}/card-element.d.ts +0 -0
  60. /package/{base → src/base}/dropdown-element.d.ts +0 -0
  61. /package/{base → src/base}/dropdown-list-element.d.ts +0 -0
  62. /package/{base → src/base}/form-control-element.d.ts +0 -0
  63. /package/{base → src/base}/link-element.d.ts +0 -0
  64. /package/{base → src/base}/select-element.d.ts +0 -0
  65. /package/{base → src/base}/sgds-element.d.ts +0 -0
  66. /package/{components → src/components}/Accordion/index.d.ts +0 -0
  67. /package/{components → src/components}/Accordion/sgds-accordion-item.d.ts +0 -0
  68. /package/{components → src/components}/Accordion/sgds-accordion.d.ts +0 -0
  69. /package/{components → src/components}/Alert/index.d.ts +0 -0
  70. /package/{components → src/components}/Alert/sgds-alert-link.d.ts +0 -0
  71. /package/{components → src/components}/Alert/sgds-alert.d.ts +0 -0
  72. /package/{components → src/components}/Badge/index.d.ts +0 -0
  73. /package/{components → src/components}/Breadcrumb/index.d.ts +0 -0
  74. /package/{components → src/components}/Breadcrumb/sgds-breadcrumb-item.d.ts +0 -0
  75. /package/{components → src/components}/Breadcrumb/sgds-breadcrumb.d.ts +0 -0
  76. /package/{components → src/components}/Button/index.d.ts +0 -0
  77. /package/{components → src/components}/Button/sgds-button.d.ts +0 -0
  78. /package/{components → src/components}/Card/index.d.ts +0 -0
  79. /package/{components → src/components}/Card/sgds-card.d.ts +0 -0
  80. /package/{components → src/components}/Card/types.d.ts +0 -0
  81. /package/{components → src/components}/Checkbox/index.d.ts +0 -0
  82. /package/{components → src/components}/Checkbox/sgds-checkbox-group.d.ts +0 -0
  83. /package/{components → src/components}/Checkbox/sgds-checkbox.d.ts +0 -0
  84. /package/{components → src/components}/ComboBox/combo-box-item.d.ts +0 -0
  85. /package/{components → src/components}/ComboBox/index.d.ts +0 -0
  86. /package/{components → src/components}/ComboBox/sgds-combo-box.d.ts +0 -0
  87. /package/{components → src/components}/Datepicker/datepicker-calendar.d.ts +0 -0
  88. /package/{components → src/components}/Datepicker/datepicker-header.d.ts +0 -0
  89. /package/{components → src/components}/Datepicker/datepicker-input.d.ts +0 -0
  90. /package/{components → src/components}/Datepicker/index.d.ts +0 -0
  91. /package/{components → src/components}/Datepicker/sgds-datepicker.d.ts +0 -0
  92. /package/{components → src/components}/Datepicker/types.d.ts +0 -0
  93. /package/{components → src/components}/DescriptionList/index.d.ts +0 -0
  94. /package/{components → src/components}/DescriptionList/sgds-description-list-group.d.ts +0 -0
  95. /package/{components → src/components}/DescriptionList/sgds-description-list.d.ts +0 -0
  96. /package/{components → src/components}/Divider/index.d.ts +0 -0
  97. /package/{components → src/components}/Divider/sgds-divider.d.ts +0 -0
  98. /package/{components → src/components}/Drawer/index.d.ts +0 -0
  99. /package/{components → src/components}/Drawer/sgds-drawer.d.ts +0 -0
  100. /package/{components → src/components}/Dropdown/index.d.ts +0 -0
  101. /package/{components → src/components}/Dropdown/sgds-dropdown-item.d.ts +0 -0
  102. /package/{components → src/components}/Dropdown/sgds-dropdown.d.ts +0 -0
  103. /package/{components → src/components}/FileUpload/index.d.ts +0 -0
  104. /package/{components → src/components}/FileUpload/sgds-file-upload.d.ts +0 -0
  105. /package/{components → src/components}/Footer/index.d.ts +0 -0
  106. /package/{components → src/components}/Footer/sgds-footer-item.d.ts +0 -0
  107. /package/{components → src/components}/Footer/sgds-footer.d.ts +0 -0
  108. /package/{components → src/components}/Icon/icon-registry.d.ts +0 -0
  109. /package/{components → src/components}/Icon/icons/archive.d.ts +0 -0
  110. /package/{components → src/components}/Icon/icons/arrow-bar-down.d.ts +0 -0
  111. /package/{components → src/components}/Icon/icons/arrow-bar-left.d.ts +0 -0
  112. /package/{components → src/components}/Icon/icons/arrow-bar-right.d.ts +0 -0
  113. /package/{components → src/components}/Icon/icons/arrow-bar-up.d.ts +0 -0
  114. /package/{components → src/components}/Icon/icons/arrow-circle-down.d.ts +0 -0
  115. /package/{components → src/components}/Icon/icons/arrow-circle-left.d.ts +0 -0
  116. /package/{components → src/components}/Icon/icons/arrow-circle-right.d.ts +0 -0
  117. /package/{components → src/components}/Icon/icons/arrow-circle-up.d.ts +0 -0
  118. /package/{components → src/components}/Icon/icons/arrow-clockwise.d.ts +0 -0
  119. /package/{components → src/components}/Icon/icons/arrow-down.d.ts +0 -0
  120. /package/{components → src/components}/Icon/icons/arrow-left.d.ts +0 -0
  121. /package/{components → src/components}/Icon/icons/arrow-repeat.d.ts +0 -0
  122. /package/{components → src/components}/Icon/icons/arrow-right.d.ts +0 -0
  123. /package/{components → src/components}/Icon/icons/arrow-square-down.d.ts +0 -0
  124. /package/{components → src/components}/Icon/icons/arrow-square-left.d.ts +0 -0
  125. /package/{components → src/components}/Icon/icons/arrow-square-right.d.ts +0 -0
  126. /package/{components → src/components}/Icon/icons/arrow-square-up.d.ts +0 -0
  127. /package/{components → src/components}/Icon/icons/arrow-up.d.ts +0 -0
  128. /package/{components → src/components}/Icon/icons/bank-fill.d.ts +0 -0
  129. /package/{components → src/components}/Icon/icons/bell-slash.d.ts +0 -0
  130. /package/{components → src/components}/Icon/icons/bell.d.ts +0 -0
  131. /package/{components → src/components}/Icon/icons/bi-funnel.d.ts +0 -0
  132. /package/{components → src/components}/Icon/icons/bookmark-fill.d.ts +0 -0
  133. /package/{components → src/components}/Icon/icons/bookmark.d.ts +0 -0
  134. /package/{components → src/components}/Icon/icons/box-arrow-up-right.d.ts +0 -0
  135. /package/{components → src/components}/Icon/icons/box-seam.d.ts +0 -0
  136. /package/{components → src/components}/Icon/icons/building.d.ts +0 -0
  137. /package/{components → src/components}/Icon/icons/bus.d.ts +0 -0
  138. /package/{components → src/components}/Icon/icons/calculator.d.ts +0 -0
  139. /package/{components → src/components}/Icon/icons/calendar-check.d.ts +0 -0
  140. /package/{components → src/components}/Icon/icons/calendar-x.d.ts +0 -0
  141. /package/{components → src/components}/Icon/icons/calendar.d.ts +0 -0
  142. /package/{components → src/components}/Icon/icons/camera.d.ts +0 -0
  143. /package/{components → src/components}/Icon/icons/car.d.ts +0 -0
  144. /package/{components → src/components}/Icon/icons/chat-dots.d.ts +0 -0
  145. /package/{components → src/components}/Icon/icons/chat-left-text.d.ts +0 -0
  146. /package/{components → src/components}/Icon/icons/chat.d.ts +0 -0
  147. /package/{components → src/components}/Icon/icons/check-circle-fill.d.ts +0 -0
  148. /package/{components → src/components}/Icon/icons/check-circle.d.ts +0 -0
  149. /package/{components → src/components}/Icon/icons/check.d.ts +0 -0
  150. /package/{components → src/components}/Icon/icons/chevron-down.d.ts +0 -0
  151. /package/{components → src/components}/Icon/icons/chevron-left.d.ts +0 -0
  152. /package/{components → src/components}/Icon/icons/chevron-right.d.ts +0 -0
  153. /package/{components → src/components}/Icon/icons/chevron-selector-vertical.d.ts +0 -0
  154. /package/{components → src/components}/Icon/icons/chevron-up.d.ts +0 -0
  155. /package/{components → src/components}/Icon/icons/clock.d.ts +0 -0
  156. /package/{components → src/components}/Icon/icons/cloud-check.d.ts +0 -0
  157. /package/{components → src/components}/Icon/icons/cloud-download.d.ts +0 -0
  158. /package/{components → src/components}/Icon/icons/cloud-upload.d.ts +0 -0
  159. /package/{components → src/components}/Icon/icons/cloud.d.ts +0 -0
  160. /package/{components → src/components}/Icon/icons/compass.d.ts +0 -0
  161. /package/{components → src/components}/Icon/icons/cross.d.ts +0 -0
  162. /package/{components → src/components}/Icon/icons/cursor-fill.d.ts +0 -0
  163. /package/{components → src/components}/Icon/icons/cursor.d.ts +0 -0
  164. /package/{components → src/components}/Icon/icons/dash-circle.d.ts +0 -0
  165. /package/{components → src/components}/Icon/icons/dash-square.d.ts +0 -0
  166. /package/{components → src/components}/Icon/icons/dash.d.ts +0 -0
  167. /package/{components → src/components}/Icon/icons/download.d.ts +0 -0
  168. /package/{components → src/components}/Icon/icons/edit.d.ts +0 -0
  169. /package/{components → src/components}/Icon/icons/exclamation-circle-fill.d.ts +0 -0
  170. /package/{components → src/components}/Icon/icons/exclamation-circle.d.ts +0 -0
  171. /package/{components → src/components}/Icon/icons/exclamation-triangle-fill.d.ts +0 -0
  172. /package/{components → src/components}/Icon/icons/exclamation-triangle.d.ts +0 -0
  173. /package/{components → src/components}/Icon/icons/exclamation.d.ts +0 -0
  174. /package/{components → src/components}/Icon/icons/eye-fill.d.ts +0 -0
  175. /package/{components → src/components}/Icon/icons/eye-slash-fill.d.ts +0 -0
  176. /package/{components → src/components}/Icon/icons/eye-slash.d.ts +0 -0
  177. /package/{components → src/components}/Icon/icons/eye.d.ts +0 -0
  178. /package/{components → src/components}/Icon/icons/facebook.d.ts +0 -0
  179. /package/{components → src/components}/Icon/icons/file-earmark-text.d.ts +0 -0
  180. /package/{components → src/components}/Icon/icons/file-pdf.d.ts +0 -0
  181. /package/{components → src/components}/Icon/icons/file-plus.d.ts +0 -0
  182. /package/{components → src/components}/Icon/icons/file-text.d.ts +0 -0
  183. /package/{components → src/components}/Icon/icons/file.d.ts +0 -0
  184. /package/{components → src/components}/Icon/icons/files.d.ts +0 -0
  185. /package/{components → src/components}/Icon/icons/folder-check.d.ts +0 -0
  186. /package/{components → src/components}/Icon/icons/folder-minus.d.ts +0 -0
  187. /package/{components → src/components}/Icon/icons/folder-plus.d.ts +0 -0
  188. /package/{components → src/components}/Icon/icons/folder.d.ts +0 -0
  189. /package/{components → src/components}/Icon/icons/gear.d.ts +0 -0
  190. /package/{components → src/components}/Icon/icons/geo-alt.d.ts +0 -0
  191. /package/{components → src/components}/Icon/icons/geo-fill.d.ts +0 -0
  192. /package/{components → src/components}/Icon/icons/geo.d.ts +0 -0
  193. /package/{components → src/components}/Icon/icons/globe-alt.d.ts +0 -0
  194. /package/{components → src/components}/Icon/icons/globe.d.ts +0 -0
  195. /package/{components → src/components}/Icon/icons/google.d.ts +0 -0
  196. /package/{components → src/components}/Icon/icons/grid-fill.d.ts +0 -0
  197. /package/{components → src/components}/Icon/icons/hand-thumbs-down.d.ts +0 -0
  198. /package/{components → src/components}/Icon/icons/hand-thumbs-up.d.ts +0 -0
  199. /package/{components → src/components}/Icon/icons/hard-drive.d.ts +0 -0
  200. /package/{components → src/components}/Icon/icons/heart.d.ts +0 -0
  201. /package/{components → src/components}/Icon/icons/house-door.d.ts +0 -0
  202. /package/{components → src/components}/Icon/icons/house.d.ts +0 -0
  203. /package/{components → src/components}/Icon/icons/image.d.ts +0 -0
  204. /package/{components → src/components}/Icon/icons/in-box.d.ts +0 -0
  205. /package/{components → src/components}/Icon/icons/info-circle-fill.d.ts +0 -0
  206. /package/{components → src/components}/Icon/icons/info-circle.d.ts +0 -0
  207. /package/{components → src/components}/Icon/icons/instagram.d.ts +0 -0
  208. /package/{components → src/components}/Icon/icons/laptop.d.ts +0 -0
  209. /package/{components → src/components}/Icon/icons/layers.d.ts +0 -0
  210. /package/{components → src/components}/Icon/icons/layout-text-window-reverse.d.ts +0 -0
  211. /package/{components → src/components}/Icon/icons/layout-text-window.d.ts +0 -0
  212. /package/{components → src/components}/Icon/icons/layout.d.ts +0 -0
  213. /package/{components → src/components}/Icon/icons/lightbulb.d.ts +0 -0
  214. /package/{components → src/components}/Icon/icons/link.d.ts +0 -0
  215. /package/{components → src/components}/Icon/icons/linkedin.d.ts +0 -0
  216. /package/{components → src/components}/Icon/icons/list.d.ts +0 -0
  217. /package/{components → src/components}/Icon/icons/lock-fill.d.ts +0 -0
  218. /package/{components → src/components}/Icon/icons/lock.d.ts +0 -0
  219. /package/{components → src/components}/Icon/icons/login.d.ts +0 -0
  220. /package/{components → src/components}/Icon/icons/logout.d.ts +0 -0
  221. /package/{components → src/components}/Icon/icons/luggage.d.ts +0 -0
  222. /package/{components → src/components}/Icon/icons/mail.d.ts +0 -0
  223. /package/{components → src/components}/Icon/icons/map.d.ts +0 -0
  224. /package/{components → src/components}/Icon/icons/menu.d.ts +0 -0
  225. /package/{components → src/components}/Icon/icons/microphone.d.ts +0 -0
  226. /package/{components → src/components}/Icon/icons/monitor.d.ts +0 -0
  227. /package/{components → src/components}/Icon/icons/paperclip.d.ts +0 -0
  228. /package/{components → src/components}/Icon/icons/passport.d.ts +0 -0
  229. /package/{components → src/components}/Icon/icons/pencil.d.ts +0 -0
  230. /package/{components → src/components}/Icon/icons/pending-circle.d.ts +0 -0
  231. /package/{components → src/components}/Icon/icons/person-dash.d.ts +0 -0
  232. /package/{components → src/components}/Icon/icons/person-plus.d.ts +0 -0
  233. /package/{components → src/components}/Icon/icons/person-x.d.ts +0 -0
  234. /package/{components → src/components}/Icon/icons/person.d.ts +0 -0
  235. /package/{components → src/components}/Icon/icons/phone.d.ts +0 -0
  236. /package/{components → src/components}/Icon/icons/pin-map-fill.d.ts +0 -0
  237. /package/{components → src/components}/Icon/icons/pin.d.ts +0 -0
  238. /package/{components → src/components}/Icon/icons/placeholder.d.ts +0 -0
  239. /package/{components → src/components}/Icon/icons/plane.d.ts +0 -0
  240. /package/{components → src/components}/Icon/icons/plus-circle.d.ts +0 -0
  241. /package/{components → src/components}/Icon/icons/plus-square.d.ts +0 -0
  242. /package/{components → src/components}/Icon/icons/plus.d.ts +0 -0
  243. /package/{components → src/components}/Icon/icons/printer.d.ts +0 -0
  244. /package/{components → src/components}/Icon/icons/question-circle.d.ts +0 -0
  245. /package/{components → src/components}/Icon/icons/rocket.d.ts +0 -0
  246. /package/{components → src/components}/Icon/icons/save.d.ts +0 -0
  247. /package/{components → src/components}/Icon/icons/search.d.ts +0 -0
  248. /package/{components → src/components}/Icon/icons/send.d.ts +0 -0
  249. /package/{components → src/components}/Icon/icons/sg-crest.d.ts +0 -0
  250. /package/{components → src/components}/Icon/icons/share.d.ts +0 -0
  251. /package/{components → src/components}/Icon/icons/slash-circle.d.ts +0 -0
  252. /package/{components → src/components}/Icon/icons/sliders.d.ts +0 -0
  253. /package/{components → src/components}/Icon/icons/speedometer.d.ts +0 -0
  254. /package/{components → src/components}/Icon/icons/star-fill.d.ts +0 -0
  255. /package/{components → src/components}/Icon/icons/star.d.ts +0 -0
  256. /package/{components → src/components}/Icon/icons/stoplights.d.ts +0 -0
  257. /package/{components → src/components}/Icon/icons/switch-horizontal.d.ts +0 -0
  258. /package/{components → src/components}/Icon/icons/switch-vertical.d.ts +0 -0
  259. /package/{components → src/components}/Icon/icons/tablet.d.ts +0 -0
  260. /package/{components → src/components}/Icon/icons/telephone.d.ts +0 -0
  261. /package/{components → src/components}/Icon/icons/three-dots-vertical.d.ts +0 -0
  262. /package/{components → src/components}/Icon/icons/three-dots.d.ts +0 -0
  263. /package/{components → src/components}/Icon/icons/ticket.d.ts +0 -0
  264. /package/{components → src/components}/Icon/icons/toggle-off.d.ts +0 -0
  265. /package/{components → src/components}/Icon/icons/toggle-on.d.ts +0 -0
  266. /package/{components → src/components}/Icon/icons/train.d.ts +0 -0
  267. /package/{components → src/components}/Icon/icons/translate.d.ts +0 -0
  268. /package/{components → src/components}/Icon/icons/trash.d.ts +0 -0
  269. /package/{components → src/components}/Icon/icons/truck.d.ts +0 -0
  270. /package/{components → src/components}/Icon/icons/twitter-x.d.ts +0 -0
  271. /package/{components → src/components}/Icon/icons/unlock.d.ts +0 -0
  272. /package/{components → src/components}/Icon/icons/upload.d.ts +0 -0
  273. /package/{components → src/components}/Icon/icons/user-circle.d.ts +0 -0
  274. /package/{components → src/components}/Icon/icons/user-square.d.ts +0 -0
  275. /package/{components → src/components}/Icon/icons/users.d.ts +0 -0
  276. /package/{components → src/components}/Icon/icons/video-recorder.d.ts +0 -0
  277. /package/{components → src/components}/Icon/icons/volume-max.d.ts +0 -0
  278. /package/{components → src/components}/Icon/icons/volume-x.d.ts +0 -0
  279. /package/{components → src/components}/Icon/icons/window-dash.d.ts +0 -0
  280. /package/{components → src/components}/Icon/icons/window-desktop.d.ts +0 -0
  281. /package/{components → src/components}/Icon/icons/window-dock.d.ts +0 -0
  282. /package/{components → src/components}/Icon/icons/window-fullscreen.d.ts +0 -0
  283. /package/{components → src/components}/Icon/icons/window-plus.d.ts +0 -0
  284. /package/{components → src/components}/Icon/icons/window-sidebar.d.ts +0 -0
  285. /package/{components → src/components}/Icon/icons/window-split.d.ts +0 -0
  286. /package/{components → src/components}/Icon/icons/window-stack.d.ts +0 -0
  287. /package/{components → src/components}/Icon/icons/window-x.d.ts +0 -0
  288. /package/{components → src/components}/Icon/icons/window.d.ts +0 -0
  289. /package/{components → src/components}/Icon/icons/xcircle-fill.d.ts +0 -0
  290. /package/{components → src/components}/Icon/icons/xcircle.d.ts +0 -0
  291. /package/{components → src/components}/Icon/icons/youtube.d.ts +0 -0
  292. /package/{components → src/components}/Icon/icons/zoom-in.d.ts +0 -0
  293. /package/{components → src/components}/Icon/icons/zoom-out.d.ts +0 -0
  294. /package/{components → src/components}/Icon/index.d.ts +0 -0
  295. /package/{components → src/components}/Icon/sgds-icon.d.ts +0 -0
  296. /package/{components → src/components}/IconButton/index.d.ts +0 -0
  297. /package/{components → src/components}/IconButton/sgds-icon-button.d.ts +0 -0
  298. /package/{components → src/components}/IconCard/index.d.ts +0 -0
  299. /package/{components → src/components}/IconCard/sgds-icon-card.d.ts +0 -0
  300. /package/{components → src/components}/IconList/index.d.ts +0 -0
  301. /package/{components → src/components}/IconList/sgds-icon-list.d.ts +0 -0
  302. /package/{components → src/components}/ImageCard/index.d.ts +0 -0
  303. /package/{components → src/components}/ImageCard/sgds-image-card.d.ts +0 -0
  304. /package/{components → src/components}/Input/index.d.ts +0 -0
  305. /package/{components → src/components}/Link/index.d.ts +0 -0
  306. /package/{components → src/components}/Link/sgds-link.d.ts +0 -0
  307. /package/{components → src/components}/Mainnav/index.d.ts +0 -0
  308. /package/{components → src/components}/Mainnav/mainnav-context.d.ts +0 -0
  309. /package/{components → src/components}/Mainnav/sgds-mainnav-dropdown.d.ts +0 -0
  310. /package/{components → src/components}/Mainnav/sgds-mainnav-item.d.ts +0 -0
  311. /package/{components → src/components}/Mainnav/sgds-mainnav.d.ts +0 -0
  312. /package/{components → src/components}/Masthead/index.d.ts +0 -0
  313. /package/{components → src/components}/Masthead/sgds-masthead.d.ts +0 -0
  314. /package/{components → src/components}/Modal/index.d.ts +0 -0
  315. /package/{components → src/components}/Modal/sgds-modal.d.ts +0 -0
  316. /package/{components → src/components}/OverflowMenu/index.d.ts +0 -0
  317. /package/{components → src/components}/OverflowMenu/sgds-overflow-menu.d.ts +0 -0
  318. /package/{components → src/components}/Pagination/index.d.ts +0 -0
  319. /package/{components → src/components}/Pagination/sgds-pagination.d.ts +0 -0
  320. /package/{components → src/components}/ProgressBar/index.d.ts +0 -0
  321. /package/{components → src/components}/ProgressBar/sgds-progress-bar.d.ts +0 -0
  322. /package/{components → src/components}/QuantityToggle/index.d.ts +0 -0
  323. /package/{components → src/components}/QuantityToggle/sgds-quantity-toggle.d.ts +0 -0
  324. /package/{components → src/components}/Radio/index.d.ts +0 -0
  325. /package/{components → src/components}/Radio/sgds-radio-group.d.ts +0 -0
  326. /package/{components → src/components}/Radio/sgds-radio.d.ts +0 -0
  327. /package/{components → src/components}/Select/index.d.ts +0 -0
  328. /package/{components → src/components}/Select/select-item.d.ts +0 -0
  329. /package/{components → src/components}/Select/sgds-select.d.ts +0 -0
  330. /package/{components → src/components}/Sidenav/index.d.ts +0 -0
  331. /package/{components → src/components}/Sidenav/sgds-sidenav-item.d.ts +0 -0
  332. /package/{components → src/components}/Sidenav/sgds-sidenav-link.d.ts +0 -0
  333. /package/{components → src/components}/Sidenav/sgds-sidenav.d.ts +0 -0
  334. /package/{components → src/components}/Skeleton/index.d.ts +0 -0
  335. /package/{components → src/components}/Skeleton/sgds-skeleton.d.ts +0 -0
  336. /package/{components → src/components}/Spinner/index.d.ts +0 -0
  337. /package/{components → src/components}/Spinner/sgds-spinner.d.ts +0 -0
  338. /package/{components → src/components}/Stepper/index.d.ts +0 -0
  339. /package/{components → src/components}/Stepper/sgds-stepper.d.ts +0 -0
  340. /package/{components → src/components}/Subnav/index.d.ts +0 -0
  341. /package/{components → src/components}/Subnav/sgds-subnav-item.d.ts +0 -0
  342. /package/{components → src/components}/Subnav/sgds-subnav.d.ts +0 -0
  343. /package/{components → src/components}/Switch/index.d.ts +0 -0
  344. /package/{components → src/components}/Switch/sgds-switch.d.ts +0 -0
  345. /package/{components → src/components}/Tab/index.d.ts +0 -0
  346. /package/{components → src/components}/Tab/sgds-tab-group.d.ts +0 -0
  347. /package/{components → src/components}/Tab/sgds-tab-panel.d.ts +0 -0
  348. /package/{components → src/components}/Tab/sgds-tab.d.ts +0 -0
  349. /package/{components → src/components}/Table/index.d.ts +0 -0
  350. /package/{components → src/components}/Table/sgds-table-cell.d.ts +0 -0
  351. /package/{components → src/components}/Table/sgds-table-head.d.ts +0 -0
  352. /package/{components → src/components}/Table/sgds-table-row.d.ts +0 -0
  353. /package/{components → src/components}/Table/sgds-table.d.ts +0 -0
  354. /package/{components → src/components}/TableOfContents/index.d.ts +0 -0
  355. /package/{components → src/components}/TableOfContents/sgds-table-of-contents.d.ts +0 -0
  356. /package/{components → src/components}/Textarea/index.d.ts +0 -0
  357. /package/{components → src/components}/Textarea/sgds-textarea.d.ts +0 -0
  358. /package/{components → src/components}/ThumbnailCard/index.d.ts +0 -0
  359. /package/{components → src/components}/ThumbnailCard/sgds-thumbnail-card.d.ts +0 -0
  360. /package/{components → src/components}/Toast/index.d.ts +0 -0
  361. /package/{components → src/components}/Toast/sgds-toast-container.d.ts +0 -0
  362. /package/{components → src/components}/Toast/sgds-toast.d.ts +0 -0
  363. /package/{components → src/components}/Tooltip/index.d.ts +0 -0
  364. /package/{components → src/components}/Tooltip/sgds-tooltip.d.ts +0 -0
  365. /package/{components → src/components}/index.d.ts +0 -0
  366. /package/{index.d.ts → src/index.d.ts} +0 -0
  367. /package/{internals → src/internals}/CloseButton/index.d.ts +0 -0
  368. /package/{internals → src/internals}/CloseButton/sgds-close-button.d.ts +0 -0
  369. /package/{react → src/react}/accordion/index.d.ts +0 -0
  370. /package/{react → src/react}/accordion-item/index.d.ts +0 -0
  371. /package/{react → src/react}/alert/index.d.ts +0 -0
  372. /package/{react → src/react}/alert-link/index.d.ts +0 -0
  373. /package/{react → src/react}/badge/index.d.ts +0 -0
  374. /package/{react → src/react}/breadcrumb/index.d.ts +0 -0
  375. /package/{react → src/react}/breadcrumb-item/index.d.ts +0 -0
  376. /package/{react → src/react}/button/index.d.ts +0 -0
  377. /package/{react → src/react}/card/index.d.ts +0 -0
  378. /package/{react → src/react}/checkbox/index.d.ts +0 -0
  379. /package/{react → src/react}/checkbox-group/index.d.ts +0 -0
  380. /package/{react → src/react}/combo-box/index.d.ts +0 -0
  381. /package/{react → src/react}/datepicker/index.d.ts +0 -0
  382. /package/{react → src/react}/description-list/index.d.ts +0 -0
  383. /package/{react → src/react}/description-list-group/index.d.ts +0 -0
  384. /package/{react → src/react}/divider/index.d.ts +0 -0
  385. /package/{react → src/react}/drawer/index.d.ts +0 -0
  386. /package/{react → src/react}/dropdown/index.d.ts +0 -0
  387. /package/{react → src/react}/dropdown-item/index.d.ts +0 -0
  388. /package/{react → src/react}/file-upload/index.d.ts +0 -0
  389. /package/{react → src/react}/footer/index.d.ts +0 -0
  390. /package/{react → src/react}/footer-item/index.d.ts +0 -0
  391. /package/{react → src/react}/icon/index.d.ts +0 -0
  392. /package/{react → src/react}/icon-button/index.d.ts +0 -0
  393. /package/{react → src/react}/icon-card/index.d.ts +0 -0
  394. /package/{react → src/react}/icon-list/index.d.ts +0 -0
  395. /package/{react → src/react}/image-card/index.d.ts +0 -0
  396. /package/{react → src/react}/index.d.ts +0 -0
  397. /package/{react → src/react}/input/index.d.ts +0 -0
  398. /package/{react → src/react}/link/index.d.ts +0 -0
  399. /package/{react → src/react}/mainnav/index.d.ts +0 -0
  400. /package/{react → src/react}/mainnav-dropdown/index.d.ts +0 -0
  401. /package/{react → src/react}/mainnav-item/index.d.ts +0 -0
  402. /package/{react → src/react}/masthead/index.d.ts +0 -0
  403. /package/{react → src/react}/modal/index.d.ts +0 -0
  404. /package/{react → src/react}/overflow-menu/index.d.ts +0 -0
  405. /package/{react → src/react}/pagination/index.d.ts +0 -0
  406. /package/{react → src/react}/progress-bar/index.d.ts +0 -0
  407. /package/{react → src/react}/quantity-toggle/index.d.ts +0 -0
  408. /package/{react → src/react}/radio/index.d.ts +0 -0
  409. /package/{react → src/react}/radio-group/index.d.ts +0 -0
  410. /package/{react → src/react}/select/index.d.ts +0 -0
  411. /package/{react → src/react}/sidenav/index.d.ts +0 -0
  412. /package/{react → src/react}/sidenav-item/index.d.ts +0 -0
  413. /package/{react → src/react}/sidenav-link/index.d.ts +0 -0
  414. /package/{react → src/react}/skeleton/index.d.ts +0 -0
  415. /package/{react → src/react}/spinner/index.d.ts +0 -0
  416. /package/{react → src/react}/stepper/index.d.ts +0 -0
  417. /package/{react → src/react}/subnav/index.d.ts +0 -0
  418. /package/{react → src/react}/subnav-item/index.d.ts +0 -0
  419. /package/{react → src/react}/switch/index.d.ts +0 -0
  420. /package/{react → src/react}/tab/index.d.ts +0 -0
  421. /package/{react → src/react}/tab-group/index.d.ts +0 -0
  422. /package/{react → src/react}/tab-panel/index.d.ts +0 -0
  423. /package/{react → src/react}/table/index.d.ts +0 -0
  424. /package/{react → src/react}/table-cell/index.d.ts +0 -0
  425. /package/{react → src/react}/table-head/index.d.ts +0 -0
  426. /package/{react → src/react}/table-of-contents/index.d.ts +0 -0
  427. /package/{react → src/react}/table-row/index.d.ts +0 -0
  428. /package/{react → src/react}/textarea/index.d.ts +0 -0
  429. /package/{react → src/react}/thumbnail-card/index.d.ts +0 -0
  430. /package/{react → src/react}/toast/index.d.ts +0 -0
  431. /package/{react → src/react}/toast-container/index.d.ts +0 -0
  432. /package/{react → src/react}/tooltip/index.d.ts +0 -0
  433. /package/{utils → src/utils}/animate.d.ts +0 -0
  434. /package/{utils → src/utils}/animation-registry.d.ts +0 -0
  435. /package/{utils → src/utils}/breakpoints.d.ts +0 -0
  436. /package/{utils → src/utils}/ce-registry.d.ts +0 -0
  437. /package/{utils → src/utils}/defaultvalue.d.ts +0 -0
  438. /package/{utils → src/utils}/event.d.ts +0 -0
  439. /package/{utils → src/utils}/formSubmitController.d.ts +0 -0
  440. /package/{utils → src/utils}/generateCustomElementName.d.ts +0 -0
  441. /package/{utils → src/utils}/generateId.d.ts +0 -0
  442. /package/{utils → src/utils}/inputValidationController.d.ts +0 -0
  443. /package/{utils → src/utils}/mergeDeep.d.ts +0 -0
  444. /package/{utils → src/utils}/modal.d.ts +0 -0
  445. /package/{utils → src/utils}/object.d.ts +0 -0
  446. /package/{utils → src/utils}/offset.d.ts +0 -0
  447. /package/{utils → src/utils}/scroll.d.ts +0 -0
  448. /package/{utils → src/utils}/slot.d.ts +0 -0
  449. /package/{utils → src/utils}/tabbable.d.ts +0 -0
  450. /package/{utils → src/utils}/test.d.ts +0 -0
  451. /package/{utils → src/utils}/time.d.ts +0 -0
  452. /package/{utils → src/utils}/validatorMixin.d.ts +0 -0
  453. /package/{utils → src/utils}/watch.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@govtechsg/sgds-web-component",
3
- "version": "3.2.0-rc.1",
3
+ "version": "3.2.0-rc.3",
4
4
  "description": "",
5
5
  "main": "./index.umd.js",
6
6
  "module": "./index.js",
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var lit = require('lit');
7
7
 
8
- var css_248z = lit.css`:host{display:inline-flex}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-default)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-default)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-default)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-default)}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-24);justify-content:center;min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-default);color:var(--sgds-color-fixed-dark)}.badge-label{line-height:var(--sgds-line-height-min);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}slot::slotted(*){font-size:14px;font-weight:400}`;
8
+ var css_248z = lit.css`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-default)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-default)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-default)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-default)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-24,24px);justify-content:center;max-width:192px;min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-default);color:var(--sgds-color-fixed-dark)}.badge.full-width{max-width:100%}.badge-label{line-height:var(--sgds-line-height-min);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}.badge.truncated .badge-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}slot::slotted(*){font-size:14px;font-weight:400}`;
9
9
 
10
10
  exports["default"] = css_248z;
11
11
  //# sourceMappingURL=badge.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { css } from 'lit';
3
3
 
4
- var css_248z = css`:host{display:inline-flex}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-default)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-default)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-default)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-default)}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-24);justify-content:center;min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-default);color:var(--sgds-color-fixed-dark)}.badge-label{line-height:var(--sgds-line-height-min);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}slot::slotted(*){font-size:14px;font-weight:400}`;
4
+ var css_248z = css`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-default)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-default)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-default)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-default)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-24,24px);justify-content:center;max-width:192px;min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-default);color:var(--sgds-color-fixed-dark)}.badge.full-width{max-width:100%}.badge-label{line-height:var(--sgds-line-height-min);padding:var(--sgds-padding-none) var(--sgds-padding-2-xs)}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}.badge.truncated .badge-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}slot::slotted(*){font-size:14px;font-weight:400}`;
5
5
 
6
6
  export { css_248z as default };
7
7
  //# sourceMappingURL=badge.js.map
@@ -7,13 +7,16 @@ var tslib = require('tslib');
7
7
  var lit = require('lit');
8
8
  var decorators_js = require('lit/decorators.js');
9
9
  var classMap_js = require('lit/directives/class-map.js');
10
- var sgdsElement = require('../../base/sgds-element.cjs.js');
11
- var sgdsCloseButton = require('../../internals/CloseButton/sgds-close-button.cjs.js');
12
10
  var watch = require('../../utils/watch.cjs.js');
13
11
  var badge = require('./badge.cjs.js');
12
+ var sgdsElement = require('../../base/sgds-element.cjs.js');
13
+ var sgdsTooltip = require('../Tooltip/sgds-tooltip.cjs.js');
14
+ var sgdsCloseButton = require('../../internals/CloseButton/sgds-close-button.cjs.js');
15
+ var slot = require('../../utils/slot.cjs.js');
14
16
 
15
17
  /**
16
18
  * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.
19
+ * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.
17
20
  *
18
21
  * @slot default - slot for badge
19
22
  * @slot icon - The slot for icon to the left of the badge text
@@ -34,6 +37,10 @@ class SgdsBadge extends sgdsElement["default"] {
34
37
  this.outlined = false;
35
38
  /** Manually set the dismissible state of the button to `false` */
36
39
  this.dismissible = false;
40
+ /** Manually enable full width */
41
+ this.fullWidth = false;
42
+ this.truncated = false;
43
+ this.text = "";
37
44
  }
38
45
  /** Closes the badge */
39
46
  close() {
@@ -60,41 +67,62 @@ class SgdsBadge extends sgdsElement["default"] {
60
67
  this.emit("sgds-after-hide");
61
68
  }
62
69
  }
63
- render() {
64
- return (this.dismissible && this.show) || !this.dismissible
65
- ? lit.html `
66
- <div
67
- class="
70
+ /**@internal */
71
+ _handleTruncation() {
72
+ // checking of text height if its exceeding parent, it needs to be truncated
73
+ const badge = this.shadowRoot.querySelector(".badge");
74
+ const badgeLabel = this.shadowRoot.querySelector(".badge-label");
75
+ if (badge && badgeLabel) {
76
+ const labelHeight = badgeLabel.getBoundingClientRect().height;
77
+ const badgeHeight = badge.getBoundingClientRect().height;
78
+ this.truncated = labelHeight > badgeHeight;
79
+ }
80
+ }
81
+ _handleLabelSlotChange(e) {
82
+ this.text = slot.getTextContent(e.target);
83
+ return;
84
+ }
85
+ _renderBadge() {
86
+ return lit.html `<div
87
+ class="
68
88
  ${classMap_js.classMap({
69
- [`badge-dismissible`]: this.dismissible,
70
- badge: true,
71
- outlined: this.outlined
72
- })}
73
- "
74
- aria-hidden=${this.show ? "false" : "true"}
75
- >
76
- ${!this.dismissible ? lit.html `<slot name="icon"></slot>` : lit.nothing}
77
- <span class="badge-label">
78
- <slot></slot>
79
- </span>
89
+ [`badge-dismissible`]: this.dismissible,
90
+ badge: true,
91
+ outlined: this.outlined,
92
+ truncated: this.truncated,
93
+ "full-width": this.fullWidth
94
+ })}"
95
+ aria-hidden=${this.show ? "false" : "true"}
96
+ >
97
+ ${!this.dismissible ? lit.html `<slot name="icon"></slot>` : lit.nothing}
80
98
 
81
- ${this.dismissible
82
- ? lit.html `<sgds-close-button
83
- size="sm"
84
- aria-label="close the badge"
85
- @click=${this.close}
86
- variant=${this.outlined ? "dark" : "light"}
87
- ></sgds-close-button>`
88
- : lit.nothing}
89
- </div>
90
- `
99
+ <span class="badge-label">
100
+ <slot @slotchange=${this._handleLabelSlotChange}></slot>
101
+ </span>
102
+
103
+ ${this.dismissible
104
+ ? lit.html `<sgds-close-button
105
+ size="sm"
106
+ aria-label="close the badge"
107
+ @click=${this.close}
108
+ variant=${this.outlined ? "dark" : "light"}
109
+ ></sgds-close-button>`
110
+ : lit.nothing}
111
+ </div>`;
112
+ }
113
+ render() {
114
+ return (this.dismissible && this.show) || !this.dismissible
115
+ ? this.truncated
116
+ ? lit.html `<sgds-tooltip content=${this.text}>${this._renderBadge()}</sgds-tooltip>`
117
+ : this._renderBadge()
91
118
  : lit.nothing;
92
119
  }
93
120
  }
94
121
  SgdsBadge.styles = [...sgdsElement["default"].styles, badge["default"]];
95
122
  /**@internal */
96
123
  SgdsBadge.dependencies = {
97
- "sgds-close-button": sgdsCloseButton.SgdsCloseButton
124
+ "sgds-close-button": sgdsCloseButton.SgdsCloseButton,
125
+ "sgds-tooltip": sgdsTooltip.SgdsTooltip
98
126
  };
99
127
  tslib.__decorate([
100
128
  decorators_js.property({ type: Boolean, reflect: true })
@@ -108,9 +136,21 @@ tslib.__decorate([
108
136
  tslib.__decorate([
109
137
  decorators_js.property({ type: Boolean, reflect: true })
110
138
  ], SgdsBadge.prototype, "dismissible", void 0);
139
+ tslib.__decorate([
140
+ decorators_js.property({ type: Boolean, reflect: true })
141
+ ], SgdsBadge.prototype, "fullWidth", void 0);
142
+ tslib.__decorate([
143
+ decorators_js.state()
144
+ ], SgdsBadge.prototype, "truncated", void 0);
145
+ tslib.__decorate([
146
+ decorators_js.state()
147
+ ], SgdsBadge.prototype, "text", void 0);
111
148
  tslib.__decorate([
112
149
  watch.watch("show")
113
150
  ], SgdsBadge.prototype, "_handleShowChange", null);
151
+ tslib.__decorate([
152
+ watch.watch("text")
153
+ ], SgdsBadge.prototype, "_handleTruncation", null);
114
154
 
115
155
  exports.SgdsBadge = SgdsBadge;
116
156
  exports["default"] = SgdsBadge;
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-badge.cjs.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsCloseButton from \"../../internals/CloseButton/sgds-close-button\";\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\nexport type BadgeVariant = \"info\" | \"success\" | \"danger\" | \"warning\" | \"neutral\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /** One or more button variant combinations buttons may be one of a variety of visual variants such as: `info`, `success`, `danger`, `warning`, 'neutral' */\n @property({ reflect: true }) variant: BadgeVariant = \"info\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? html`\n <div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined\n })}\n \"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n <span class=\"badge-label\">\n <slot></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n variant=${this.outlined ? \"dark\" : \"light\"}\n ></sgds-close-button>`\n : nothing}\n </div>\n `\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["SgdsElement","html","classMap","nothing","badgeStyle","SgdsCloseButton","__decorate","property","watch"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-badge.cjs.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsTooltip from \"../Tooltip/sgds-tooltip\";\nimport SgdsCloseButton from \"../../internals/CloseButton/sgds-close-button\";\n\nimport { getTextContent } from \"../../utils/slot\";\n\nexport type BadgeVariant = \"info\" | \"success\" | \"danger\" | \"warning\" | \"neutral\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton,\n \"sgds-tooltip\": SgdsTooltip\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /** One or more button variant combinations buttons may be one of a variety of visual variants such as: `info`, `success`, `danger`, `warning`, 'neutral' */\n @property({ reflect: true }) variant: BadgeVariant = \"info\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Manually enable full width */\n @property({ type: Boolean, reflect: true }) fullWidth = false;\n\n @state() private truncated = false;\n @state() private text = \"\";\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n /**@internal */\n @watch(\"text\")\n _handleTruncation() {\n // checking of text height if its exceeding parent, it needs to be truncated\n const badge = this.shadowRoot.querySelector(\".badge\");\n const badgeLabel = this.shadowRoot.querySelector(\".badge-label\");\n\n if (badge && badgeLabel) {\n const labelHeight = badgeLabel.getBoundingClientRect().height;\n const badgeHeight = badge.getBoundingClientRect().height;\n\n this.truncated = labelHeight > badgeHeight;\n }\n }\n\n private _handleLabelSlotChange(e: Event) {\n this.text = getTextContent(e.target as HTMLSlotElement);\n return;\n }\n\n private _renderBadge() {\n return html`<div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined,\n truncated: this.truncated,\n \"full-width\": this.fullWidth\n })}\"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n\n <span class=\"badge-label\">\n <slot @slotchange=${this._handleLabelSlotChange}></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n variant=${this.outlined ? \"dark\" : \"light\"}\n ></sgds-close-button>`\n : nothing}\n </div>`;\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? this.truncated\n ? html`<sgds-tooltip content=${this.text}>${this._renderBadge()}</sgds-tooltip>`\n : this._renderBadge()\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["SgdsElement","getTextContent","html","classMap","nothing","badgeStyle","SgdsCloseButton","SgdsTooltip","__decorate","property","state","watch"],"mappings":"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"}
@@ -1,15 +1,18 @@
1
1
  'use client';
2
2
  import { __decorate } from 'tslib';
3
3
  import { html, nothing } from 'lit';
4
- import { property } from 'lit/decorators.js';
4
+ import { property, state } from 'lit/decorators.js';
5
5
  import { classMap } from 'lit/directives/class-map.js';
6
- import SgdsElement from '../../base/sgds-element.js';
7
- import { SgdsCloseButton } from '../../internals/CloseButton/sgds-close-button.js';
8
6
  import { watch } from '../../utils/watch.js';
9
7
  import css_248z from './badge.js';
8
+ import SgdsElement from '../../base/sgds-element.js';
9
+ import { SgdsTooltip } from '../Tooltip/sgds-tooltip.js';
10
+ import { SgdsCloseButton } from '../../internals/CloseButton/sgds-close-button.js';
11
+ import { getTextContent } from '../../utils/slot.js';
10
12
 
11
13
  /**
12
14
  * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.
15
+ * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.
13
16
  *
14
17
  * @slot default - slot for badge
15
18
  * @slot icon - The slot for icon to the left of the badge text
@@ -30,6 +33,10 @@ class SgdsBadge extends SgdsElement {
30
33
  this.outlined = false;
31
34
  /** Manually set the dismissible state of the button to `false` */
32
35
  this.dismissible = false;
36
+ /** Manually enable full width */
37
+ this.fullWidth = false;
38
+ this.truncated = false;
39
+ this.text = "";
33
40
  }
34
41
  /** Closes the badge */
35
42
  close() {
@@ -56,41 +63,62 @@ class SgdsBadge extends SgdsElement {
56
63
  this.emit("sgds-after-hide");
57
64
  }
58
65
  }
59
- render() {
60
- return (this.dismissible && this.show) || !this.dismissible
61
- ? html `
62
- <div
63
- class="
66
+ /**@internal */
67
+ _handleTruncation() {
68
+ // checking of text height if its exceeding parent, it needs to be truncated
69
+ const badge = this.shadowRoot.querySelector(".badge");
70
+ const badgeLabel = this.shadowRoot.querySelector(".badge-label");
71
+ if (badge && badgeLabel) {
72
+ const labelHeight = badgeLabel.getBoundingClientRect().height;
73
+ const badgeHeight = badge.getBoundingClientRect().height;
74
+ this.truncated = labelHeight > badgeHeight;
75
+ }
76
+ }
77
+ _handleLabelSlotChange(e) {
78
+ this.text = getTextContent(e.target);
79
+ return;
80
+ }
81
+ _renderBadge() {
82
+ return html `<div
83
+ class="
64
84
  ${classMap({
65
- [`badge-dismissible`]: this.dismissible,
66
- badge: true,
67
- outlined: this.outlined
68
- })}
69
- "
70
- aria-hidden=${this.show ? "false" : "true"}
71
- >
72
- ${!this.dismissible ? html `<slot name="icon"></slot>` : nothing}
73
- <span class="badge-label">
74
- <slot></slot>
75
- </span>
85
+ [`badge-dismissible`]: this.dismissible,
86
+ badge: true,
87
+ outlined: this.outlined,
88
+ truncated: this.truncated,
89
+ "full-width": this.fullWidth
90
+ })}"
91
+ aria-hidden=${this.show ? "false" : "true"}
92
+ >
93
+ ${!this.dismissible ? html `<slot name="icon"></slot>` : nothing}
76
94
 
77
- ${this.dismissible
78
- ? html `<sgds-close-button
79
- size="sm"
80
- aria-label="close the badge"
81
- @click=${this.close}
82
- variant=${this.outlined ? "dark" : "light"}
83
- ></sgds-close-button>`
84
- : nothing}
85
- </div>
86
- `
95
+ <span class="badge-label">
96
+ <slot @slotchange=${this._handleLabelSlotChange}></slot>
97
+ </span>
98
+
99
+ ${this.dismissible
100
+ ? html `<sgds-close-button
101
+ size="sm"
102
+ aria-label="close the badge"
103
+ @click=${this.close}
104
+ variant=${this.outlined ? "dark" : "light"}
105
+ ></sgds-close-button>`
106
+ : nothing}
107
+ </div>`;
108
+ }
109
+ render() {
110
+ return (this.dismissible && this.show) || !this.dismissible
111
+ ? this.truncated
112
+ ? html `<sgds-tooltip content=${this.text}>${this._renderBadge()}</sgds-tooltip>`
113
+ : this._renderBadge()
87
114
  : nothing;
88
115
  }
89
116
  }
90
117
  SgdsBadge.styles = [...SgdsElement.styles, css_248z];
91
118
  /**@internal */
92
119
  SgdsBadge.dependencies = {
93
- "sgds-close-button": SgdsCloseButton
120
+ "sgds-close-button": SgdsCloseButton,
121
+ "sgds-tooltip": SgdsTooltip
94
122
  };
95
123
  __decorate([
96
124
  property({ type: Boolean, reflect: true })
@@ -104,9 +132,21 @@ __decorate([
104
132
  __decorate([
105
133
  property({ type: Boolean, reflect: true })
106
134
  ], SgdsBadge.prototype, "dismissible", void 0);
135
+ __decorate([
136
+ property({ type: Boolean, reflect: true })
137
+ ], SgdsBadge.prototype, "fullWidth", void 0);
138
+ __decorate([
139
+ state()
140
+ ], SgdsBadge.prototype, "truncated", void 0);
141
+ __decorate([
142
+ state()
143
+ ], SgdsBadge.prototype, "text", void 0);
107
144
  __decorate([
108
145
  watch("show")
109
146
  ], SgdsBadge.prototype, "_handleShowChange", null);
147
+ __decorate([
148
+ watch("text")
149
+ ], SgdsBadge.prototype, "_handleTruncation", null);
110
150
 
111
151
  export { SgdsBadge, SgdsBadge as default };
112
152
  //# sourceMappingURL=sgds-badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-badge.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsCloseButton from \"../../internals/CloseButton/sgds-close-button\";\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\nexport type BadgeVariant = \"info\" | \"success\" | \"danger\" | \"warning\" | \"neutral\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /** One or more button variant combinations buttons may be one of a variety of visual variants such as: `info`, `success`, `danger`, `warning`, 'neutral' */\n @property({ reflect: true }) variant: BadgeVariant = \"info\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? html`\n <div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined\n })}\n \"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n <span class=\"badge-label\">\n <slot></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n variant=${this.outlined ? \"dark\" : \"light\"}\n ></sgds-close-button>`\n : nothing}\n </div>\n `\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["badgeStyle"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-badge.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsTooltip from \"../Tooltip/sgds-tooltip\";\nimport SgdsCloseButton from \"../../internals/CloseButton/sgds-close-button\";\n\nimport { getTextContent } from \"../../utils/slot\";\n\nexport type BadgeVariant = \"info\" | \"success\" | \"danger\" | \"warning\" | \"neutral\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton,\n \"sgds-tooltip\": SgdsTooltip\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /** One or more button variant combinations buttons may be one of a variety of visual variants such as: `info`, `success`, `danger`, `warning`, 'neutral' */\n @property({ reflect: true }) variant: BadgeVariant = \"info\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Manually enable full width */\n @property({ type: Boolean, reflect: true }) fullWidth = false;\n\n @state() private truncated = false;\n @state() private text = \"\";\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n /**@internal */\n @watch(\"text\")\n _handleTruncation() {\n // checking of text height if its exceeding parent, it needs to be truncated\n const badge = this.shadowRoot.querySelector(\".badge\");\n const badgeLabel = this.shadowRoot.querySelector(\".badge-label\");\n\n if (badge && badgeLabel) {\n const labelHeight = badgeLabel.getBoundingClientRect().height;\n const badgeHeight = badge.getBoundingClientRect().height;\n\n this.truncated = labelHeight > badgeHeight;\n }\n }\n\n private _handleLabelSlotChange(e: Event) {\n this.text = getTextContent(e.target as HTMLSlotElement);\n return;\n }\n\n private _renderBadge() {\n return html`<div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined,\n truncated: this.truncated,\n \"full-width\": this.fullWidth\n })}\"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n\n <span class=\"badge-label\">\n <slot @slotchange=${this._handleLabelSlotChange}></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n variant=${this.outlined ? \"dark\" : \"light\"}\n ></sgds-close-button>`\n : nothing}\n </div>`;\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? this.truncated\n ? html`<sgds-tooltip content=${this.text}>${this._renderBadge()}</sgds-tooltip>`\n : this._renderBadge()\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["badgeStyle"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var lit = require('lit');
7
7
 
8
- var css_248z = lit.css`:host{--input-border-radius:var(--sgds-form-border-radius-md)}.form-control-container{display:flex;flex-direction:column;gap:var(--sgds-form-gap-md)}.form-control-container.disabled{opacity:var(--sgds-opacity-50)}.form-control-group{align-items:center;background-color:var(--sgds-form-surface-default);border:var(--sgds-form-border-width-default) solid var(--sgds-border-color-default);border-radius:var(--input-border-radius);display:flex;gap:var(--sgds-form-gap-md);height:var(--sgds-dimension-48);justify-content:center;min-width:var(--sgds-dimension-256);padding:0 var(--sgds-form-padding-x);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:-webkit-fill-available;width:-moz-available}.form-control{appearance:none;background-clip:padding-box;background:none;border:none;color:var(--sgds-form-color-default);display:block;flex-grow:1;font-size:var(--sgds-font-size-2);line-height:var(--sgds-line-height-body);outline:none;padding:0}.form-control-group>.form-control:focus{z-index:3}@media (prefers-reduced-motion:reduce){.form-control-group{transition:none}}.form-control-group.readonly{background-color:var(--sgds-form-surface-raised)}.form-control-group:not(.disabled):not(.is-invalid):not(.readonly):hover{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis)}.form-control-group:not(.disabled):not(.is-invalid):focus,.form-control-group:not(.disabled):not(.is-invalid):focus-within{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis);box-shadow:var(--sgds-form-box-shadow-focus);outline:0}.form-control-group.is-invalid{border:var(--sgds-form-border-width-thick) solid var(--sgds-form-danger-border-color-default)}.form-control-group.disabled{background-color:var(--sgds-form-surface-muted)}:host(.quantity-toggle) input::-webkit-inner-spin-button{appearance:none;margin:0}:host(.quantity-toggle) input{text-align:center}.form-control-prefix,.form-control-suffix{color:var(--sgds-form-color-subtle);display:flex;flex-wrap:wrap;gap:var(--sgds-gap-xs)}.form-control-group.quantity-toggle{padding:0}`;
8
+ var css_248z = lit.css`:host{--input-border-radius:var(--sgds-form-border-radius-md)}.form-control-container{display:flex;flex-direction:column;gap:var(--sgds-form-gap-md)}.form-control-container.disabled{opacity:var(--sgds-opacity-50)}.form-control-group{align-items:center;background-color:var(--sgds-form-surface-default);border:var(--sgds-form-border-width-default) solid var(--sgds-border-color-default);border-radius:var(--input-border-radius);display:flex;gap:var(--sgds-form-gap-md);height:var(--sgds-dimension-48);justify-content:center;min-width:var(--sgds-dimension-256);padding:0 var(--sgds-form-padding-x);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:-webkit-fill-available;width:-moz-available}.form-control{appearance:none;background-clip:padding-box;background:none;border:none;color:var(--sgds-form-color-default);display:block;flex-grow:1;font-size:var(--sgds-font-size-2);line-height:var(--sgds-line-height-body);outline:none;padding:0}.form-control-group>.form-control:focus{z-index:3}@media (prefers-reduced-motion:reduce){.form-control-group{transition:none}}.form-control-group.readonly{background-color:var(--sgds-form-surface-raised)}.form-control-group:not(.disabled):not(.is-invalid):not(.readonly):hover{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis)}.form-control-group:not(.disabled):not(.is-invalid):focus,.form-control-group:not(.disabled):not(.is-invalid):focus-within{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis);box-shadow:var(--sgds-form-box-shadow-focus);outline:0}.form-control-group.is-invalid{border:var(--sgds-form-border-width-thick) solid var(--sgds-form-danger-border-color-default)}.form-control-group.disabled{background-color:var(--sgds-form-surface-muted)}:host(.quantity-toggle) input::-webkit-inner-spin-button{appearance:none;margin:0}:host(.quantity-toggle) input{text-align:center}.form-control-prefix,.form-control-suffix{color:var(--sgds-form-color-subtle);display:flex;flex-wrap:wrap;gap:var(--sgds-gap-xs)}.form-control-group.quantity-toggle{padding:0}sgds-icon[role=button]{cursor:pointer}sgds-icon[role=button]:focus,sgds-icon[role=button]:focus-visible{box-shadow:var(--sgds-box-shadow-focus);outline:none}.form-control-row{align-items:center;display:flex;gap:var(--sgds-gap-sm)}`;
9
9
 
10
10
  exports["default"] = css_248z;
11
11
  //# sourceMappingURL=input.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { css } from 'lit';
3
3
 
4
- var css_248z = css`:host{--input-border-radius:var(--sgds-form-border-radius-md)}.form-control-container{display:flex;flex-direction:column;gap:var(--sgds-form-gap-md)}.form-control-container.disabled{opacity:var(--sgds-opacity-50)}.form-control-group{align-items:center;background-color:var(--sgds-form-surface-default);border:var(--sgds-form-border-width-default) solid var(--sgds-border-color-default);border-radius:var(--input-border-radius);display:flex;gap:var(--sgds-form-gap-md);height:var(--sgds-dimension-48);justify-content:center;min-width:var(--sgds-dimension-256);padding:0 var(--sgds-form-padding-x);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:-webkit-fill-available;width:-moz-available}.form-control{appearance:none;background-clip:padding-box;background:none;border:none;color:var(--sgds-form-color-default);display:block;flex-grow:1;font-size:var(--sgds-font-size-2);line-height:var(--sgds-line-height-body);outline:none;padding:0}.form-control-group>.form-control:focus{z-index:3}@media (prefers-reduced-motion:reduce){.form-control-group{transition:none}}.form-control-group.readonly{background-color:var(--sgds-form-surface-raised)}.form-control-group:not(.disabled):not(.is-invalid):not(.readonly):hover{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis)}.form-control-group:not(.disabled):not(.is-invalid):focus,.form-control-group:not(.disabled):not(.is-invalid):focus-within{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis);box-shadow:var(--sgds-form-box-shadow-focus);outline:0}.form-control-group.is-invalid{border:var(--sgds-form-border-width-thick) solid var(--sgds-form-danger-border-color-default)}.form-control-group.disabled{background-color:var(--sgds-form-surface-muted)}:host(.quantity-toggle) input::-webkit-inner-spin-button{appearance:none;margin:0}:host(.quantity-toggle) input{text-align:center}.form-control-prefix,.form-control-suffix{color:var(--sgds-form-color-subtle);display:flex;flex-wrap:wrap;gap:var(--sgds-gap-xs)}.form-control-group.quantity-toggle{padding:0}`;
4
+ var css_248z = css`:host{--input-border-radius:var(--sgds-form-border-radius-md)}.form-control-container{display:flex;flex-direction:column;gap:var(--sgds-form-gap-md)}.form-control-container.disabled{opacity:var(--sgds-opacity-50)}.form-control-group{align-items:center;background-color:var(--sgds-form-surface-default);border:var(--sgds-form-border-width-default) solid var(--sgds-border-color-default);border-radius:var(--input-border-radius);display:flex;gap:var(--sgds-form-gap-md);height:var(--sgds-dimension-48);justify-content:center;min-width:var(--sgds-dimension-256);padding:0 var(--sgds-form-padding-x);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:-webkit-fill-available;width:-moz-available}.form-control{appearance:none;background-clip:padding-box;background:none;border:none;color:var(--sgds-form-color-default);display:block;flex-grow:1;font-size:var(--sgds-font-size-2);line-height:var(--sgds-line-height-body);outline:none;padding:0}.form-control-group>.form-control:focus{z-index:3}@media (prefers-reduced-motion:reduce){.form-control-group{transition:none}}.form-control-group.readonly{background-color:var(--sgds-form-surface-raised)}.form-control-group:not(.disabled):not(.is-invalid):not(.readonly):hover{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis)}.form-control-group:not(.disabled):not(.is-invalid):focus,.form-control-group:not(.disabled):not(.is-invalid):focus-within{border:var(--sgds-form-border-width-thick) solid var(--sgds-border-color-emphasis);box-shadow:var(--sgds-form-box-shadow-focus);outline:0}.form-control-group.is-invalid{border:var(--sgds-form-border-width-thick) solid var(--sgds-form-danger-border-color-default)}.form-control-group.disabled{background-color:var(--sgds-form-surface-muted)}:host(.quantity-toggle) input::-webkit-inner-spin-button{appearance:none;margin:0}:host(.quantity-toggle) input{text-align:center}.form-control-prefix,.form-control-suffix{color:var(--sgds-form-color-subtle);display:flex;flex-wrap:wrap;gap:var(--sgds-gap-xs)}.form-control-group.quantity-toggle{padding:0}sgds-icon[role=button]{cursor:pointer}sgds-icon[role=button]:focus,sgds-icon[role=button]:focus-visible{box-shadow:var(--sgds-box-shadow-focus);outline:none}.form-control-row{align-items:center;display:flex;gap:var(--sgds-gap-sm)}`;
5
5
 
6
6
  export { css_248z as default };
7
7
  //# sourceMappingURL=input.js.map
@@ -23,7 +23,8 @@ var sgdsIcon = require('../Icon/sgds-icon.cjs.js');
23
23
  * @summary Text inputs allow your users to enter letters, numbers and symbols on a single line.
24
24
  *
25
25
  * @slot icon - The slot for leading icon of text input
26
- *
26
+ * @slot trailing-icon - The slot for trailing icon of text input. When present, it overrides valid icon and loading spinner rendered when valid prop or loading prop are true
27
+ * @slot action - The slot for call to action of the text input. It is recommended to use sgds-icon-button within this slot
27
28
  * @event sgds-change - Emitted when an alteration to the control's value is committed by the user.
28
29
  * @event sgds-input - Emitted when the control receives input and its value changes.
29
30
  * @event sgds-focus - Emitted when input is in focus.
@@ -53,6 +54,7 @@ class SgdsInput extends validatorMixin.SgdsFormValidatorMixin(formControlElement
53
54
  /**The input's value attribute. */
54
55
  this.value = "";
55
56
  this._isTouched = false;
57
+ this._showPassword = false;
56
58
  }
57
59
  /** Sets focus on the input. */
58
60
  focus(options) {
@@ -145,7 +147,7 @@ class SgdsInput extends validatorMixin.SgdsFormValidatorMixin(formControlElement
145
147
  ${this.prefix ? staticHtml_js.html `<span class="form-control-prefix">${this.prefix}</span>` : lit.nothing}
146
148
  <input
147
149
  class="form-control"
148
- type=${this.type}
150
+ type=${this._inputType()}
149
151
  id=${this._controlId}
150
152
  name=${ifDefined_js.ifDefined(this.name)}
151
153
  placeholder=${ifDefined_js.ifDefined(this.placeholder)}
@@ -171,12 +173,29 @@ class SgdsInput extends validatorMixin.SgdsFormValidatorMixin(formControlElement
171
173
  ? `${this._controlId}-invalid`
172
174
  : ""}"
173
175
  />
174
- ${this.loading ? staticHtml_js.html `<sgds-spinner size="sm"></sgds-spinner>` : lit.nothing}
175
- ${this.valid ? staticHtml_js.html `<sgds-icon name="check-circle-fill" class="valid-icon"></sgds-icon>` : lit.nothing}
176
+ ${this.type === "password" ? this._renderPasswordToggle() : lit.nothing}
176
177
  ${this.suffix ? staticHtml_js.html `<span class="form-control-suffix">${this.suffix}</span>` : lit.nothing}
178
+ <slot name="trailing-icon">
179
+ ${this.loading ? staticHtml_js.html `<sgds-spinner size="sm"></sgds-spinner>` : lit.nothing}
180
+ ${this.valid ? staticHtml_js.html `<sgds-icon name="check-circle-fill" class="valid-icon"></sgds-icon>` : lit.nothing}
181
+ </slot>
177
182
  </div>
178
183
  `;
179
184
  }
185
+ _renderPasswordToggle() {
186
+ return staticHtml_js.html `<sgds-icon
187
+ tabIndex="0"
188
+ role="button"
189
+ name=${this._showPassword ? "eye-slash-fill" : "eye-fill"}
190
+ @click=${() => (this._showPassword = !this._showPassword)}
191
+ ></sgds-icon>`;
192
+ }
193
+ _inputType() {
194
+ if (this.type === "password" && this._showPassword) {
195
+ return "text";
196
+ }
197
+ return this.type;
198
+ }
180
199
  _renderFeedback() {
181
200
  const wantFeedbackText = this.hasFeedback === "both" || this.hasFeedback === "text";
182
201
  return this.invalid && wantFeedbackText
@@ -213,7 +232,12 @@ class SgdsInput extends validatorMixin.SgdsFormValidatorMixin(formControlElement
213
232
  disabled: this.disabled
214
233
  })}"
215
234
  >
216
- ${this._renderLabel()} ${this._renderInput()} ${this._renderFeedback()}
235
+ ${this._renderLabel()}
236
+ <div class="form-control-row">
237
+ ${this._renderInput()}
238
+ <slot name="action"></slot>
239
+ </div>
240
+ ${this._renderFeedback()}
217
241
  </div>
218
242
  `;
219
243
  }
@@ -284,6 +308,9 @@ tslib.__decorate([
284
308
  tslib.__decorate([
285
309
  decorators_js.state()
286
310
  ], SgdsInput.prototype, "_isTouched", void 0);
311
+ tslib.__decorate([
312
+ decorators_js.state()
313
+ ], SgdsInput.prototype, "_showPassword", void 0);
287
314
  tslib.__decorate([
288
315
  watch.watch("_isTouched", { waitUntilFirstUpdate: true })
289
316
  ], SgdsInput.prototype, "_handleIsTouched", null);