@govtechsg/sgds-web-component 3.0.0-rc.0 → 3.0.0-rc.2

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 (491) hide show
  1. package/Masthead/index.js +1 -1
  2. package/README.md +5 -5
  3. package/base/button.js +1 -1
  4. package/base/form-control-element.d.ts +4 -11
  5. package/base/form-control-element.js +13 -23
  6. package/base/form-control-element.js.map +1 -1
  7. package/components/Accordion/accordion-item.js +1 -1
  8. package/components/Accordion/index.umd.js +7 -19
  9. package/components/Accordion/index.umd.js.map +1 -1
  10. package/components/Accordion/sgds-accordion-item.d.ts +3 -7
  11. package/components/Accordion/sgds-accordion-item.js +6 -18
  12. package/components/Accordion/sgds-accordion-item.js.map +1 -1
  13. package/components/ActionCard/index.umd.js +407 -329
  14. package/components/ActionCard/index.umd.js.map +1 -1
  15. package/components/Alert/alert.js +1 -1
  16. package/components/Alert/index.umd.js +553 -485
  17. package/components/Alert/index.umd.js.map +1 -1
  18. package/components/Alert/sgds-alert.d.ts +2 -2
  19. package/components/Alert/sgds-alert.js +6 -13
  20. package/components/Alert/sgds-alert.js.map +1 -1
  21. package/components/Badge/badge.js +1 -1
  22. package/components/Badge/index.umd.js +9 -10
  23. package/components/Badge/index.umd.js.map +1 -1
  24. package/components/Badge/sgds-badge.d.ts +4 -5
  25. package/components/Badge/sgds-badge.js +6 -7
  26. package/components/Badge/sgds-badge.js.map +1 -1
  27. package/components/Button/index.umd.js +8 -81
  28. package/components/Button/index.umd.js.map +1 -1
  29. package/components/Button/sgds-button.js +1 -1
  30. package/components/Button/sgds-button.js.map +1 -1
  31. package/components/Checkbox/checkbox.js +1 -1
  32. package/components/Checkbox/index.umd.js +541 -475
  33. package/components/Checkbox/index.umd.js.map +1 -1
  34. package/components/Checkbox/sgds-checkbox-group.d.ts +7 -1
  35. package/components/Checkbox/sgds-checkbox-group.js +15 -4
  36. package/components/Checkbox/sgds-checkbox-group.js.map +1 -1
  37. package/components/Checkbox/sgds-checkbox.d.ts +30 -21
  38. package/components/Checkbox/sgds-checkbox.js +77 -60
  39. package/components/Checkbox/sgds-checkbox.js.map +1 -1
  40. package/components/ComboBox/index.umd.js +385 -216
  41. package/components/ComboBox/index.umd.js.map +1 -1
  42. package/components/Datepicker/datepicker-input.d.ts +4 -2
  43. package/components/Datepicker/datepicker-input.js +24 -7
  44. package/components/Datepicker/datepicker-input.js.map +1 -1
  45. package/components/Datepicker/index.umd.js +433 -244
  46. package/components/Datepicker/index.umd.js.map +1 -1
  47. package/components/Datepicker/sgds-datepicker.d.ts +1 -1
  48. package/components/Datepicker/sgds-datepicker.js.map +1 -1
  49. package/components/Drawer/index.umd.js +2 -2
  50. package/components/Drawer/index.umd.js.map +1 -1
  51. package/components/Dropdown/index.umd.js +8 -81
  52. package/components/Dropdown/index.umd.js.map +1 -1
  53. package/components/FileUpload/file-upload.js +1 -1
  54. package/components/FileUpload/index.umd.js +579 -272
  55. package/components/FileUpload/index.umd.js.map +1 -1
  56. package/components/FileUpload/sgds-file-upload.d.ts +42 -30
  57. package/components/FileUpload/sgds-file-upload.js +147 -103
  58. package/components/FileUpload/sgds-file-upload.js.map +1 -1
  59. package/components/Footer/footer-item.js +6 -0
  60. package/components/Footer/footer-item.js.map +1 -0
  61. package/components/Footer/footer.js +1 -1
  62. package/components/Footer/index.d.ts +2 -0
  63. package/components/Footer/index.js +2 -0
  64. package/components/Footer/index.js.map +1 -1
  65. package/components/Footer/index.umd.js +93 -94
  66. package/components/Footer/index.umd.js.map +1 -1
  67. package/components/Footer/sgds-footer-item.d.ts +13 -0
  68. package/components/Footer/sgds-footer-item.js +27 -0
  69. package/components/Footer/sgds-footer-item.js.map +1 -0
  70. package/components/Footer/sgds-footer.d.ts +9 -30
  71. package/components/Footer/sgds-footer.js +65 -90
  72. package/components/Footer/sgds-footer.js.map +1 -1
  73. package/components/Icon/icon.js +6 -0
  74. package/components/Icon/icon.js.map +1 -0
  75. package/components/Icon/index.d.ts +6 -0
  76. package/components/Icon/index.js +4 -0
  77. package/components/Icon/index.js.map +1 -0
  78. package/components/Icon/index.umd.js +4389 -0
  79. package/components/Icon/index.umd.js.map +1 -0
  80. package/components/Icon/sgds-icon.d.ts +21 -0
  81. package/components/Icon/sgds-icon.js +64 -0
  82. package/components/Icon/sgds-icon.js.map +1 -0
  83. package/components/IconButton/icon-button.js +1 -1
  84. package/components/IconButton/index.umd.js +6 -9
  85. package/components/IconButton/index.umd.js.map +1 -1
  86. package/components/IconButton/sgds-icon-button.d.ts +2 -2
  87. package/components/IconButton/sgds-icon-button.js +4 -9
  88. package/components/IconButton/sgds-icon-button.js.map +1 -1
  89. package/components/Input/index.umd.js +1734 -1376
  90. package/components/Input/index.umd.js.map +1 -1
  91. package/components/Input/sgds-input.d.ts +41 -21
  92. package/components/Input/sgds-input.js +103 -66
  93. package/components/Input/sgds-input.js.map +1 -1
  94. package/components/Masthead/index.umd.js +1 -1
  95. package/components/Masthead/masthead.js +1 -1
  96. package/components/Modal/index.umd.js +2 -2
  97. package/components/Modal/index.umd.js.map +1 -1
  98. package/components/QuantityToggle/index.umd.js +894 -316
  99. package/components/QuantityToggle/index.umd.js.map +1 -1
  100. package/components/QuantityToggle/sgds-quantity-toggle.d.ts +42 -15
  101. package/components/QuantityToggle/sgds-quantity-toggle.js +129 -62
  102. package/components/QuantityToggle/sgds-quantity-toggle.js.map +1 -1
  103. package/components/Radio/index.umd.js +516 -203
  104. package/components/Radio/index.umd.js.map +1 -1
  105. package/components/Radio/sgds-radio-group.d.ts +38 -27
  106. package/components/Radio/sgds-radio-group.js +100 -84
  107. package/components/Radio/sgds-radio-group.js.map +1 -1
  108. package/components/Radio/sgds-radio.js +1 -1
  109. package/components/Radio/sgds-radio.js.map +1 -1
  110. package/components/Stepper/index.umd.js +2 -1
  111. package/components/Stepper/index.umd.js.map +1 -1
  112. package/components/Stepper/sgds-stepper.d.ts +1 -0
  113. package/components/Stepper/sgds-stepper.js +1 -0
  114. package/components/Stepper/sgds-stepper.js.map +1 -1
  115. package/components/Stepper/stepper.js +1 -1
  116. package/components/Switch/index.umd.js +21 -321
  117. package/components/Switch/index.umd.js.map +1 -1
  118. package/components/Switch/sgds-switch.js +1 -2
  119. package/components/Switch/sgds-switch.js.map +1 -1
  120. package/components/Textarea/index.umd.js +1554 -1336
  121. package/components/Textarea/index.umd.js.map +1 -1
  122. package/components/Textarea/sgds-textarea.d.ts +33 -22
  123. package/components/Textarea/sgds-textarea.js +78 -75
  124. package/components/Textarea/sgds-textarea.js.map +1 -1
  125. package/components/Textarea/textarea.js +1 -1
  126. package/components/Toast/index.umd.js +9 -21
  127. package/components/Toast/index.umd.js.map +1 -1
  128. package/components/Toast/sgds-toast.d.ts +2 -1
  129. package/components/Toast/sgds-toast.js +6 -18
  130. package/components/Toast/sgds-toast.js.map +1 -1
  131. package/components/Toast/toast.js +1 -1
  132. package/components/Tooltip/index.umd.js +14 -14
  133. package/components/Tooltip/index.umd.js.map +1 -1
  134. package/components/Tooltip/sgds-tooltip.d.ts +4 -7
  135. package/components/Tooltip/sgds-tooltip.js +14 -14
  136. package/components/Tooltip/sgds-tooltip.js.map +1 -1
  137. package/components/index.d.ts +1 -0
  138. package/components/index.js +1 -0
  139. package/components/index.js.map +1 -1
  140. package/components/index.umd.js +1320 -1126
  141. package/components/index.umd.js.map +1 -1
  142. package/css/reboot.css +39 -6
  143. package/css/sgds.css +0 -2
  144. package/icons/arrow-bar-down.svg +3 -0
  145. package/icons/arrow-bar-left.svg +3 -0
  146. package/icons/arrow-bar-right.svg +3 -0
  147. package/icons/arrow-bar-up.svg +3 -0
  148. package/icons/arrow-clockwise.svg +3 -0
  149. package/icons/arrow-down.svg +3 -0
  150. package/icons/arrow-left.svg +3 -0
  151. package/icons/arrow-repeat.svg +3 -0
  152. package/icons/arrow-right.svg +3 -0
  153. package/icons/arrow-up.svg +3 -0
  154. package/icons/bank-fill.svg +3 -0
  155. package/icons/bell-slash.svg +3 -0
  156. package/icons/bell.svg +3 -0
  157. package/icons/bi-funnel.svg +3 -0
  158. package/icons/bookmark-fill.svg +3 -0
  159. package/icons/bookmark.svg +3 -0
  160. package/icons/box-arrow-up-right.svg +3 -0
  161. package/icons/box-seam.svg +3 -0
  162. package/icons/building.svg +3 -0
  163. package/icons/calculator.svg +3 -0
  164. package/icons/calendar-check.svg +4 -0
  165. package/icons/calendar-x.svg +4 -0
  166. package/icons/calendar.svg +3 -0
  167. package/icons/camera.svg +3 -0
  168. package/icons/chat-left-text.svg +3 -0
  169. package/icons/check-circle-fill.svg +3 -0
  170. package/icons/check-circle.svg +3 -0
  171. package/icons/check.svg +3 -0
  172. package/icons/chevron-down.svg +3 -0
  173. package/icons/chevron-left.svg +3 -0
  174. package/icons/chevron-right.svg +3 -0
  175. package/icons/chevron-up .svg +3 -0
  176. package/icons/clock.svg +4 -0
  177. package/icons/cloud-check.svg +4 -0
  178. package/icons/cloud-download.svg +3 -0
  179. package/icons/cloud-upload.svg +3 -0
  180. package/icons/cloud.svg +3 -0
  181. package/icons/compass.svg +4 -0
  182. package/icons/cross.svg +3 -0
  183. package/icons/cursor-fill.svg +3 -0
  184. package/icons/cursor.svg +3 -0
  185. package/icons/dash-circle.svg +3 -0
  186. package/icons/dash-square.svg +3 -0
  187. package/icons/dash.svg +3 -0
  188. package/icons/download.svg +3 -0
  189. package/icons/exclamation-circle-fill.svg +3 -0
  190. package/icons/exclamation-circle.svg +4 -0
  191. package/icons/exclamation-triangle-fill.svg +3 -0
  192. package/icons/exclamation-triangle.svg +4 -0
  193. package/icons/exclamation.svg +4 -0
  194. package/icons/eye-fill.svg +3 -0
  195. package/icons/eye-slash-fill.svg +4 -0
  196. package/icons/eye-slash.svg +3 -0
  197. package/icons/eye.svg +3 -0
  198. package/icons/facebook.svg +3 -0
  199. package/icons/file-earmark-text.svg +3 -0
  200. package/icons/file-pdf.svg +4 -0
  201. package/icons/file-plus.svg +4 -0
  202. package/icons/file-text.svg +3 -0
  203. package/icons/file.svg +3 -0
  204. package/icons/files.svg +4 -0
  205. package/icons/folder-check.svg +4 -0
  206. package/icons/folder-minus.svg +4 -0
  207. package/icons/folder-plus.svg +4 -0
  208. package/icons/folder.svg +3 -0
  209. package/icons/gear.svg +3 -0
  210. package/icons/geo-alt.svg +4 -0
  211. package/icons/geo-fill.svg +4 -0
  212. package/icons/geo.svg +4 -0
  213. package/icons/google.svg +3 -0
  214. package/icons/grid-fill.svg +3 -0
  215. package/icons/hand-thumbs-down.svg +3 -0
  216. package/icons/hand-thumbs-up.svg +3 -0
  217. package/icons/hdd.svg +3 -0
  218. package/icons/house-door.svg +3 -0
  219. package/icons/house.svg +3 -0
  220. package/icons/image.svg +3 -0
  221. package/icons/inbox.svg +3 -0
  222. package/icons/info-circle-fill.svg +3 -0
  223. package/icons/info-circle.svg +4 -0
  224. package/icons/instagram.svg +3 -0
  225. package/icons/layers.svg +3 -0
  226. package/icons/layout-text-window-reverse.svg +3 -0
  227. package/icons/layout-text-window.svg +3 -0
  228. package/icons/layout.svg +3 -0
  229. package/icons/link.svg +3 -0
  230. package/icons/linkedin.svg +3 -0
  231. package/icons/list.svg +3 -0
  232. package/icons/lock-fill.svg +3 -0
  233. package/icons/lock.svg +3 -0
  234. package/icons/mail.svg +3 -0
  235. package/icons/map.svg +3 -0
  236. package/icons/paperclip.svg +3 -0
  237. package/icons/pencil.svg +3 -0
  238. package/icons/pending-circle.svg +3 -0
  239. package/icons/person-dash.svg +3 -0
  240. package/icons/person-plus.svg +3 -0
  241. package/icons/person-x.svg +3 -0
  242. package/icons/person.svg +3 -0
  243. package/icons/pin-map-fill.svg +3 -0
  244. package/icons/pin.svg +3 -0
  245. package/icons/placeholder.svg +3 -0
  246. package/icons/plus-circle.svg +3 -0
  247. package/icons/plus-square.svg +3 -0
  248. package/icons/plus.svg +3 -0
  249. package/icons/printer.svg +3 -0
  250. package/icons/question-circle.svg +4 -0
  251. package/icons/save.svg +3 -0
  252. package/icons/search.svg +3 -0
  253. package/icons/share.svg +3 -0
  254. package/icons/slash-circle.svg +3 -0
  255. package/icons/sliders.svg +3 -0
  256. package/icons/speedometer.svg +3 -0
  257. package/icons/star-fill.svg +3 -0
  258. package/icons/star.svg +3 -0
  259. package/icons/stoplights.svg +4 -0
  260. package/icons/telephone.svg +3 -0
  261. package/icons/three-dots-vertical.svg +3 -0
  262. package/icons/three-dots.svg +3 -0
  263. package/icons/toggle-off.svg +3 -0
  264. package/icons/toggle-on.svg +3 -0
  265. package/icons/trash.svg +3 -0
  266. package/icons/twitter-x.svg +3 -0
  267. package/icons/unlock.svg +3 -0
  268. package/icons/upload.svg +3 -0
  269. package/icons/window-dash.svg +4 -0
  270. package/icons/window-desktop.svg +4 -0
  271. package/icons/window-dock.svg +4 -0
  272. package/icons/window-fullscreen.svg +3 -0
  273. package/icons/window-plus.svg +4 -0
  274. package/icons/window-sidebar.svg +3 -0
  275. package/icons/window-split.svg +3 -0
  276. package/icons/window-stack.svg +3 -0
  277. package/icons/window-x.svg +4 -0
  278. package/icons/window.svg +3 -0
  279. package/icons/x-circle-fill.svg +3 -0
  280. package/icons/x-circle.svg +3 -0
  281. package/icons/youtube.svg +3 -0
  282. package/icons/zoom-in.svg +3 -0
  283. package/icons/zoom-out.svg +3 -0
  284. package/index.d.ts +1 -0
  285. package/index.js +1 -0
  286. package/index.js.map +1 -1
  287. package/index.umd.js +1340 -1121
  288. package/index.umd.js.map +1 -1
  289. package/internals/CloseButton/close-button.js +1 -1
  290. package/internals/CloseButton/sgds-close-button.js +1 -1
  291. package/internals/CloseButton/sgds-close-button.js.map +1 -1
  292. package/package.json +1 -1
  293. package/react/base/button.cjs.js +1 -1
  294. package/react/base/button.js +1 -1
  295. package/react/base/form-control-element.cjs.js +13 -23
  296. package/react/base/form-control-element.cjs.js.map +1 -1
  297. package/react/base/form-control-element.js +13 -23
  298. package/react/base/form-control-element.js.map +1 -1
  299. package/react/checkbox/index.cjs.js +2 -0
  300. package/react/checkbox/index.cjs.js.map +1 -1
  301. package/react/checkbox/index.d.ts +2 -0
  302. package/react/checkbox/index.js +2 -0
  303. package/react/checkbox/index.js.map +1 -1
  304. package/react/components/Accordion/accordion-item.cjs.js +1 -1
  305. package/react/components/Accordion/accordion-item.js +1 -1
  306. package/react/components/Accordion/sgds-accordion-item.cjs.js +6 -18
  307. package/react/components/Accordion/sgds-accordion-item.cjs.js.map +1 -1
  308. package/react/components/Accordion/sgds-accordion-item.js +6 -18
  309. package/react/components/Accordion/sgds-accordion-item.js.map +1 -1
  310. package/react/components/Alert/alert.cjs.js +1 -1
  311. package/react/components/Alert/alert.js +1 -1
  312. package/react/components/Alert/sgds-alert.cjs.js +5 -12
  313. package/react/components/Alert/sgds-alert.cjs.js.map +1 -1
  314. package/react/components/Alert/sgds-alert.js +6 -13
  315. package/react/components/Alert/sgds-alert.js.map +1 -1
  316. package/react/components/Badge/badge.cjs.js +1 -1
  317. package/react/components/Badge/badge.js +1 -1
  318. package/react/components/Badge/sgds-badge.cjs.js +6 -7
  319. package/react/components/Badge/sgds-badge.cjs.js.map +1 -1
  320. package/react/components/Badge/sgds-badge.js +6 -7
  321. package/react/components/Badge/sgds-badge.js.map +1 -1
  322. package/react/components/Button/sgds-button.cjs.js +2 -2
  323. package/react/components/Button/sgds-button.cjs.js.map +1 -1
  324. package/react/components/Button/sgds-button.js +1 -1
  325. package/react/components/Button/sgds-button.js.map +1 -1
  326. package/react/components/Checkbox/checkbox.cjs.js +1 -1
  327. package/react/components/Checkbox/checkbox.js +1 -1
  328. package/react/components/Checkbox/sgds-checkbox-group.cjs.js +15 -4
  329. package/react/components/Checkbox/sgds-checkbox-group.cjs.js.map +1 -1
  330. package/react/components/Checkbox/sgds-checkbox-group.js +15 -4
  331. package/react/components/Checkbox/sgds-checkbox-group.js.map +1 -1
  332. package/react/components/Checkbox/sgds-checkbox.cjs.js +77 -60
  333. package/react/components/Checkbox/sgds-checkbox.cjs.js.map +1 -1
  334. package/react/components/Checkbox/sgds-checkbox.js +77 -60
  335. package/react/components/Checkbox/sgds-checkbox.js.map +1 -1
  336. package/react/components/Datepicker/datepicker-input.cjs.js +24 -7
  337. package/react/components/Datepicker/datepicker-input.cjs.js.map +1 -1
  338. package/react/components/Datepicker/datepicker-input.js +24 -7
  339. package/react/components/Datepicker/datepicker-input.js.map +1 -1
  340. package/react/components/Datepicker/sgds-datepicker.cjs.js.map +1 -1
  341. package/react/components/Datepicker/sgds-datepicker.js.map +1 -1
  342. package/react/components/FileUpload/file-upload.cjs.js +1 -1
  343. package/react/components/FileUpload/file-upload.js +1 -1
  344. package/react/components/FileUpload/sgds-file-upload.cjs.js +145 -101
  345. package/react/components/FileUpload/sgds-file-upload.cjs.js.map +1 -1
  346. package/react/components/FileUpload/sgds-file-upload.js +147 -103
  347. package/react/components/FileUpload/sgds-file-upload.js.map +1 -1
  348. package/react/components/Footer/footer-item.cjs.js +11 -0
  349. package/react/components/Footer/footer-item.cjs.js.map +1 -0
  350. package/react/components/Footer/footer-item.js +7 -0
  351. package/react/components/Footer/footer-item.js.map +1 -0
  352. package/react/components/Footer/footer.cjs.js +1 -1
  353. package/react/components/Footer/footer.js +1 -1
  354. package/react/components/Footer/sgds-footer-item.cjs.js +33 -0
  355. package/react/components/Footer/sgds-footer-item.cjs.js.map +1 -0
  356. package/react/components/Footer/sgds-footer-item.js +28 -0
  357. package/react/components/Footer/sgds-footer-item.js.map +1 -0
  358. package/react/components/Footer/sgds-footer.cjs.js +65 -90
  359. package/react/components/Footer/sgds-footer.cjs.js.map +1 -1
  360. package/react/components/Footer/sgds-footer.js +65 -90
  361. package/react/components/Footer/sgds-footer.js.map +1 -1
  362. package/react/components/Icon/icon.cjs.js +11 -0
  363. package/react/components/Icon/icon.cjs.js.map +1 -0
  364. package/react/components/Icon/icon.js +7 -0
  365. package/react/components/Icon/icon.js.map +1 -0
  366. package/react/components/Icon/sgds-icon.cjs.js +70 -0
  367. package/react/components/Icon/sgds-icon.cjs.js.map +1 -0
  368. package/react/components/Icon/sgds-icon.js +65 -0
  369. package/react/components/Icon/sgds-icon.js.map +1 -0
  370. package/react/components/IconButton/icon-button.cjs.js +1 -1
  371. package/react/components/IconButton/icon-button.js +1 -1
  372. package/react/components/IconButton/sgds-icon-button.cjs.js +4 -9
  373. package/react/components/IconButton/sgds-icon-button.cjs.js.map +1 -1
  374. package/react/components/IconButton/sgds-icon-button.js +4 -9
  375. package/react/components/IconButton/sgds-icon-button.js.map +1 -1
  376. package/react/components/Input/sgds-input.cjs.js +101 -64
  377. package/react/components/Input/sgds-input.cjs.js.map +1 -1
  378. package/react/components/Input/sgds-input.js +103 -66
  379. package/react/components/Input/sgds-input.js.map +1 -1
  380. package/react/components/Masthead/masthead.cjs.js +1 -1
  381. package/react/components/Masthead/masthead.js +1 -1
  382. package/react/components/QuantityToggle/sgds-quantity-toggle.cjs.js +128 -61
  383. package/react/components/QuantityToggle/sgds-quantity-toggle.cjs.js.map +1 -1
  384. package/react/components/QuantityToggle/sgds-quantity-toggle.js +129 -62
  385. package/react/components/QuantityToggle/sgds-quantity-toggle.js.map +1 -1
  386. package/react/components/Radio/sgds-radio-group.cjs.js +99 -83
  387. package/react/components/Radio/sgds-radio-group.cjs.js.map +1 -1
  388. package/react/components/Radio/sgds-radio-group.js +100 -84
  389. package/react/components/Radio/sgds-radio-group.js.map +1 -1
  390. package/react/components/Radio/sgds-radio.cjs.js +1 -1
  391. package/react/components/Radio/sgds-radio.cjs.js.map +1 -1
  392. package/react/components/Radio/sgds-radio.js +1 -1
  393. package/react/components/Radio/sgds-radio.js.map +1 -1
  394. package/react/components/Stepper/sgds-stepper.cjs.js +1 -0
  395. package/react/components/Stepper/sgds-stepper.cjs.js.map +1 -1
  396. package/react/components/Stepper/sgds-stepper.js +1 -0
  397. package/react/components/Stepper/sgds-stepper.js.map +1 -1
  398. package/react/components/Stepper/stepper.cjs.js +1 -1
  399. package/react/components/Stepper/stepper.js +1 -1
  400. package/react/components/Switch/sgds-switch.cjs.js +1 -2
  401. package/react/components/Switch/sgds-switch.cjs.js.map +1 -1
  402. package/react/components/Switch/sgds-switch.js +1 -2
  403. package/react/components/Switch/sgds-switch.js.map +1 -1
  404. package/react/components/Textarea/sgds-textarea.cjs.js +76 -73
  405. package/react/components/Textarea/sgds-textarea.cjs.js.map +1 -1
  406. package/react/components/Textarea/sgds-textarea.js +78 -75
  407. package/react/components/Textarea/sgds-textarea.js.map +1 -1
  408. package/react/components/Textarea/textarea.cjs.js +1 -1
  409. package/react/components/Textarea/textarea.js +1 -1
  410. package/react/components/Toast/sgds-toast.cjs.js +6 -18
  411. package/react/components/Toast/sgds-toast.cjs.js.map +1 -1
  412. package/react/components/Toast/sgds-toast.js +6 -18
  413. package/react/components/Toast/sgds-toast.js.map +1 -1
  414. package/react/components/Toast/toast.cjs.js +1 -1
  415. package/react/components/Toast/toast.js +1 -1
  416. package/react/components/Tooltip/sgds-tooltip.cjs.js +14 -14
  417. package/react/components/Tooltip/sgds-tooltip.cjs.js.map +1 -1
  418. package/react/components/Tooltip/sgds-tooltip.js +14 -14
  419. package/react/components/Tooltip/sgds-tooltip.js.map +1 -1
  420. package/react/footer-item/index.cjs.js +39 -0
  421. package/react/footer-item/index.cjs.js.map +1 -0
  422. package/react/footer-item/index.d.ts +3 -0
  423. package/react/footer-item/index.js +15 -0
  424. package/react/footer-item/index.js.map +1 -0
  425. package/react/icon/index.cjs.js +42 -0
  426. package/react/icon/index.cjs.js.map +1 -0
  427. package/react/icon/index.d.ts +6 -0
  428. package/react/icon/index.js +18 -0
  429. package/react/icon/index.js.map +1 -0
  430. package/react/index.cjs.js +64 -60
  431. package/react/index.cjs.js.map +1 -1
  432. package/react/index.d.ts +2 -0
  433. package/react/index.js +2 -0
  434. package/react/index.js.map +1 -1
  435. package/react/input/index.cjs.js +3 -1
  436. package/react/input/index.cjs.js.map +1 -1
  437. package/react/input/index.d.ts +2 -0
  438. package/react/input/index.js +3 -1
  439. package/react/input/index.js.map +1 -1
  440. package/react/internals/CloseButton/close-button.cjs.js +1 -1
  441. package/react/internals/CloseButton/close-button.js +1 -1
  442. package/react/internals/CloseButton/sgds-close-button.cjs.js +1 -1
  443. package/react/internals/CloseButton/sgds-close-button.cjs.js.map +1 -1
  444. package/react/internals/CloseButton/sgds-close-button.js +1 -1
  445. package/react/internals/CloseButton/sgds-close-button.js.map +1 -1
  446. package/react/styles/form-hint.cjs.js +1 -1
  447. package/react/styles/form-hint.js +1 -1
  448. package/react/styles/form-label.cjs.js +1 -1
  449. package/react/styles/form-label.js +1 -1
  450. package/react/utils/formSubmitController.cjs.js +64 -0
  451. package/react/utils/formSubmitController.cjs.js.map +1 -0
  452. package/react/utils/formSubmitController.js +60 -0
  453. package/react/utils/formSubmitController.js.map +1 -0
  454. package/react/utils/inputValidationController.cjs.js +130 -0
  455. package/react/utils/inputValidationController.cjs.js.map +1 -0
  456. package/react/utils/inputValidationController.js +126 -0
  457. package/react/utils/inputValidationController.js.map +1 -0
  458. package/react/utils/validatorMixin.cjs.js +108 -0
  459. package/react/utils/validatorMixin.cjs.js.map +1 -0
  460. package/react/utils/validatorMixin.js +104 -0
  461. package/react/utils/validatorMixin.js.map +1 -0
  462. package/styles/form-hint.js +1 -1
  463. package/styles/form-label.js +1 -1
  464. package/themes/day.css +1 -1
  465. package/themes/night.css +3 -2
  466. package/themes/root.css +2 -0
  467. package/utils/{form.d.ts → formSubmitController.d.ts} +10 -20
  468. package/utils/formSubmitController.js +59 -0
  469. package/utils/formSubmitController.js.map +1 -0
  470. package/utils/inputValidationController.d.ts +70 -0
  471. package/utils/inputValidationController.js +125 -0
  472. package/utils/inputValidationController.js.map +1 -0
  473. package/utils/validatorMixin.d.ts +24 -0
  474. package/utils/validatorMixin.js +103 -0
  475. package/utils/validatorMixin.js.map +1 -0
  476. package/base/form-check-element.d.ts +0 -50
  477. package/base/form-check-element.js +0 -169
  478. package/base/form-check-element.js.map +0 -1
  479. package/css/body.css +0 -28
  480. package/css/caption.css +0 -7
  481. package/css/label.css +0 -28
  482. package/react/base/form-check-element.cjs.js +0 -175
  483. package/react/base/form-check-element.cjs.js.map +0 -1
  484. package/react/base/form-check-element.js +0 -170
  485. package/react/base/form-check-element.js.map +0 -1
  486. package/react/utils/form.cjs.js +0 -137
  487. package/react/utils/form.cjs.js.map +0 -1
  488. package/react/utils/form.js +0 -133
  489. package/react/utils/form.js.map +0 -1
  490. package/utils/form.js +0 -132
  491. package/utils/form.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sgds-icon.cjs.js","sources":["../../../../src/components/Icon/sgds-icon.ts"],"sourcesContent":["import SgdsElement from \"../../base/sgds-element\";\nimport { html } from \"lit/static-html.js\";\nimport { property, state } from \"lit/decorators.js\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport iconStyles from \"./icon.css\";\n\n/**\n * @summary Icons offer a form of visual shorthand that we are all familiar with. They can label, inform and aid navigation quickly and effectively in minimal space. Icons must first and foremost communicate meaning. By default, the icon component renders icons form SgdsIcon library set\n *\n * @event sgds-blur - Emitted when the button is blurred.\n * @event sgds-focus - Emitted when the button is focused.\n */\nexport class SgdsIcon extends SgdsElement {\n static styles = [...SgdsElement.styles, iconStyles];\n\n /** The name of the icon from sgds icon library */\n @property({ type: String, reflect: true }) name: string;\n\n /** Specifies a small, medium or large icon, the size is medium by default. */\n @property({ type: String, reflect: true }) size: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2-xl\" | \"3-xl\" = \"lg\";\n\n /** @internal */\n @state()\n private _svgContent: string | null = null;\n\n async firstUpdated() {\n if (this.name) {\n this.loadSvg(this.name);\n }\n }\n\n updated() {\n this.style.display = this._svgContent ? \"flex\" : \"none\";\n }\n\n async loadSvg(name: string) {\n if (name) {\n // Dynamically import the SVG if not cached\n try {\n //TODO: This path is too specific to our repo, it won't work for users\n const response = await fetch(`/src/icons/${name}.svg`);\n\n if (response.ok) {\n const svgContent = await response.text();\n // Render the SVG\n // this.renderSvg(svgContent);\n this._svgContent = svgContent;\n }\n } catch (error) {\n console.error(`Error loading SVG: ${name}`, error);\n }\n }\n }\n\n render() {\n return html`${unsafeSVG(this._svgContent)}`;\n }\n}\n\nexport default SgdsIcon;\n"],"names":["SgdsElement","html","unsafeSVG","iconStyles","__decorate","property","state"],"mappings":";;;;;;;;;;;;AAMA;;;;;AAKG;AACG,MAAO,QAAS,SAAQA,sBAAW,CAAA;AAAzC,IAAA,WAAA,GAAA;;;QAO6C,IAAI,CAAA,IAAA,GAAgD,IAAI,CAAC;;QAI5F,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;KAkC3C;AAhCC,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;KACzD;IAED,MAAM,OAAO,CAAC,IAAY,EAAA;QACxB,IAAI,IAAI,EAAE;;AAER,YAAA,IAAI;;gBAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAc,WAAA,EAAA,IAAI,CAAM,IAAA,CAAA,CAAC,CAAC;AAEvD,gBAAA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACf,oBAAA,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;;;AAGzC,oBAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;iBAC/B;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAE,CAAA,EAAE,KAAK,CAAC,CAAC;aACpD;SACF;KACF;IAED,MAAM,GAAA;QACJ,OAAOC,kBAAI,CAAA,CAAA,EAAGC,sBAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA,CAAE,CAAC;KAC7C;;AA3CM,QAAM,CAAA,MAAA,GAAG,CAAC,GAAGF,sBAAW,CAAC,MAAM,EAAEG,eAAU,CAArC,CAAuC;AAGTC,gBAAA,CAAA;IAA1CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGbD,gBAAA,CAAA;IAA1CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA0D,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI5FD,gBAAA,CAAA;AADP,IAAAE,mBAAK,EAAE;AACkC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ import { __decorate } from 'tslib';
3
+ import SgdsElement from '../../base/sgds-element.js';
4
+ import { html } from 'lit/static-html.js';
5
+ import { property, state } from 'lit/decorators.js';
6
+ import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
7
+ import css_248z from './icon.js';
8
+
9
+ /**
10
+ * @summary Icons offer a form of visual shorthand that we are all familiar with. They can label, inform and aid navigation quickly and effectively in minimal space. Icons must first and foremost communicate meaning. By default, the icon component renders icons form SgdsIcon library set
11
+ *
12
+ * @event sgds-blur - Emitted when the button is blurred.
13
+ * @event sgds-focus - Emitted when the button is focused.
14
+ */
15
+ class SgdsIcon extends SgdsElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ /** Specifies a small, medium or large icon, the size is medium by default. */
19
+ this.size = "lg";
20
+ /** @internal */
21
+ this._svgContent = null;
22
+ }
23
+ async firstUpdated() {
24
+ if (this.name) {
25
+ this.loadSvg(this.name);
26
+ }
27
+ }
28
+ updated() {
29
+ this.style.display = this._svgContent ? "flex" : "none";
30
+ }
31
+ async loadSvg(name) {
32
+ if (name) {
33
+ // Dynamically import the SVG if not cached
34
+ try {
35
+ //TODO: This path is too specific to our repo, it won't work for users
36
+ const response = await fetch(`/src/icons/${name}.svg`);
37
+ if (response.ok) {
38
+ const svgContent = await response.text();
39
+ // Render the SVG
40
+ // this.renderSvg(svgContent);
41
+ this._svgContent = svgContent;
42
+ }
43
+ }
44
+ catch (error) {
45
+ console.error(`Error loading SVG: ${name}`, error);
46
+ }
47
+ }
48
+ }
49
+ render() {
50
+ return html `${unsafeSVG(this._svgContent)}`;
51
+ }
52
+ }
53
+ SgdsIcon.styles = [...SgdsElement.styles, css_248z];
54
+ __decorate([
55
+ property({ type: String, reflect: true })
56
+ ], SgdsIcon.prototype, "name", void 0);
57
+ __decorate([
58
+ property({ type: String, reflect: true })
59
+ ], SgdsIcon.prototype, "size", void 0);
60
+ __decorate([
61
+ state()
62
+ ], SgdsIcon.prototype, "_svgContent", void 0);
63
+
64
+ export { SgdsIcon, SgdsIcon as default };
65
+ //# sourceMappingURL=sgds-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sgds-icon.js","sources":["../../../../src/components/Icon/sgds-icon.ts"],"sourcesContent":["import SgdsElement from \"../../base/sgds-element\";\nimport { html } from \"lit/static-html.js\";\nimport { property, state } from \"lit/decorators.js\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport iconStyles from \"./icon.css\";\n\n/**\n * @summary Icons offer a form of visual shorthand that we are all familiar with. They can label, inform and aid navigation quickly and effectively in minimal space. Icons must first and foremost communicate meaning. By default, the icon component renders icons form SgdsIcon library set\n *\n * @event sgds-blur - Emitted when the button is blurred.\n * @event sgds-focus - Emitted when the button is focused.\n */\nexport class SgdsIcon extends SgdsElement {\n static styles = [...SgdsElement.styles, iconStyles];\n\n /** The name of the icon from sgds icon library */\n @property({ type: String, reflect: true }) name: string;\n\n /** Specifies a small, medium or large icon, the size is medium by default. */\n @property({ type: String, reflect: true }) size: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2-xl\" | \"3-xl\" = \"lg\";\n\n /** @internal */\n @state()\n private _svgContent: string | null = null;\n\n async firstUpdated() {\n if (this.name) {\n this.loadSvg(this.name);\n }\n }\n\n updated() {\n this.style.display = this._svgContent ? \"flex\" : \"none\";\n }\n\n async loadSvg(name: string) {\n if (name) {\n // Dynamically import the SVG if not cached\n try {\n //TODO: This path is too specific to our repo, it won't work for users\n const response = await fetch(`/src/icons/${name}.svg`);\n\n if (response.ok) {\n const svgContent = await response.text();\n // Render the SVG\n // this.renderSvg(svgContent);\n this._svgContent = svgContent;\n }\n } catch (error) {\n console.error(`Error loading SVG: ${name}`, error);\n }\n }\n }\n\n render() {\n return html`${unsafeSVG(this._svgContent)}`;\n }\n}\n\nexport default SgdsIcon;\n"],"names":["iconStyles"],"mappings":";;;;;;;;AAMA;;;;;AAKG;AACG,MAAO,QAAS,SAAQ,WAAW,CAAA;AAAzC,IAAA,WAAA,GAAA;;;QAO6C,IAAI,CAAA,IAAA,GAAgD,IAAI,CAAC;;QAI5F,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;KAkC3C;AAhCC,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;KACzD;IAED,MAAM,OAAO,CAAC,IAAY,EAAA;QACxB,IAAI,IAAI,EAAE;;AAER,YAAA,IAAI;;gBAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAc,WAAA,EAAA,IAAI,CAAM,IAAA,CAAA,CAAC,CAAC;AAEvD,gBAAA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACf,oBAAA,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;;;AAGzC,oBAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;iBAC/B;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAE,CAAA,EAAE,KAAK,CAAC,CAAC;aACpD;SACF;KACF;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAA,CAAA,EAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA,CAAE,CAAC;KAC7C;;AA3CM,QAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAU,CAArC,CAAuC;AAGT,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGb,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAA0D,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAI5F,UAAA,CAAA;AADP,IAAA,KAAK,EAAE;AACkC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
@@ -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`.btn.btn-icon{display:flex;height:var(--sgds-dimension-48,56px);min-width:unset;padding:0;width:var(--sgds-dimension-48,56px)}.btn.btn-icon.btn-lg{font-size:var(--sgds-font-size-3);height:var(--sgds-dimension-56);min-width:unset;padding:0;width:var(--sgds-dimension-56)}.btn.btn-icon.btn-sm{font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-40);min-width:unset;padding:0;width:var(--sgds-dimension-40)}.btn>svg{height:var(--sgds-dimension-24);width:var(--sgds-dimension-24)}.btn-lg>svg{height:var(--sgds-dimension-32);width:var(--sgds-dimension-32)}.btn-sm>svg{height:var(--sgds-dimension-20);width:var(--sgds-dimension-20)}`;
8
+ var css_248z = lit.css`.btn.btn-icon{display:flex;height:var(--sgds-dimension-48,56px);min-width:unset;padding:0;width:var(--sgds-dimension-48,56px)}.btn.btn-icon.btn-lg{font-size:var(--sgds-font-size-3);height:var(--sgds-dimension-56);min-width:unset;padding:0;width:var(--sgds-dimension-56)}.btn.btn-icon.btn-sm{font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-40);min-width:unset;padding:0;width:var(--sgds-dimension-40)}`;
9
9
 
10
10
  exports["default"] = css_248z;
11
11
  //# sourceMappingURL=icon-button.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { css } from 'lit';
3
3
 
4
- var css_248z = css`.btn.btn-icon{display:flex;height:var(--sgds-dimension-48,56px);min-width:unset;padding:0;width:var(--sgds-dimension-48,56px)}.btn.btn-icon.btn-lg{font-size:var(--sgds-font-size-3);height:var(--sgds-dimension-56);min-width:unset;padding:0;width:var(--sgds-dimension-56)}.btn.btn-icon.btn-sm{font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-40);min-width:unset;padding:0;width:var(--sgds-dimension-40)}.btn>svg{height:var(--sgds-dimension-24);width:var(--sgds-dimension-24)}.btn-lg>svg{height:var(--sgds-dimension-32);width:var(--sgds-dimension-32)}.btn-sm>svg{height:var(--sgds-dimension-20);width:var(--sgds-dimension-20)}`;
4
+ var css_248z = css`.btn.btn-icon{display:flex;height:var(--sgds-dimension-48,56px);min-width:unset;padding:0;width:var(--sgds-dimension-48,56px)}.btn.btn-icon.btn-lg{font-size:var(--sgds-font-size-3);height:var(--sgds-dimension-56);min-width:unset;padding:0;width:var(--sgds-dimension-56)}.btn.btn-icon.btn-sm{font-size:var(--sgds-font-size-1);height:var(--sgds-dimension-40);min-width:unset;padding:0;width:var(--sgds-dimension-40)}`;
5
5
 
6
6
  export { css_248z as default };
7
7
  //# sourceMappingURL=icon-button.js.map
@@ -3,17 +3,17 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var tslib = require('tslib');
7
6
  var buttonElement = require('../../base/button-element.cjs.js');
8
7
  var staticHtml_js = require('lit/static-html.js');
9
8
  var classMap_js = require('lit/directives/class-map.js');
10
9
  var ifDefined_js = require('lit/directives/if-defined.js');
11
10
  var iconButton = require('./icon-button.cjs.js');
12
- var decorators_js = require('lit/decorators.js');
13
11
 
14
12
  /**
15
13
  * @summary An icon button is a user interface element that combines an icon and a button, serving as a clickable or tabbable component.
16
14
  *
15
+ * @slot default - The slot for sgds-icon
16
+ *
17
17
  * @event sgds-blur - Emitted when the button is blurred.
18
18
  * @event sgds-focus - Emitted when the button is focused.
19
19
  */
@@ -30,7 +30,7 @@ class SgdsIconButton extends buttonElement["default"] {
30
30
  [`btn-${this.size}`]: this.size
31
31
  })}"
32
32
  ?disabled=${ifDefined_js.ifDefined(isLink ? undefined : this.disabled)}
33
- type="button"
33
+ type=${ifDefined_js.ifDefined(isLink ? undefined : "button")}
34
34
  href=${ifDefined_js.ifDefined(isLink ? this.href : undefined)}
35
35
  target=${ifDefined_js.ifDefined(isLink ? this.target : undefined)}
36
36
  download=${ifDefined_js.ifDefined(isLink ? this.download : undefined)}
@@ -43,17 +43,12 @@ class SgdsIconButton extends buttonElement["default"] {
43
43
  @blur=${this._handleBlur}
44
44
  aria-label=${ifDefined_js.ifDefined(this.ariaLabel)}
45
45
  >
46
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
47
- <path fill-rule="evenodd" clip-rule="evenodd" d="M3 12C3 11.8295 3.06773 11.666 3.18828 11.5455C3.30883 11.4249 3.47233 11.3572 3.64282 11.3572H18.8043L14.7584 7.31258C14.6377 7.19187 14.5699 7.02817 14.5699 6.85746C14.5699 6.68676 14.6377 6.52305 14.7584 6.40235C14.8791 6.28165 15.0428 6.21384 15.2135 6.21384C15.3842 6.21384 15.5479 6.28165 15.6686 6.40235L20.8111 11.5449C20.871 11.6046 20.9185 11.6755 20.9509 11.7536C20.9833 11.8317 21 11.9154 21 12C21 12.0845 20.9833 12.1683 20.9509 12.2464C20.9185 12.3245 20.871 12.3954 20.8111 12.4551L15.6686 17.5976C15.5479 17.7183 15.3842 17.7861 15.2135 17.7861C15.0428 17.7861 14.8791 17.7183 14.7584 17.5976C14.6377 17.4769 14.5699 17.3132 14.5699 17.1425C14.5699 16.9718 14.6377 16.8081 14.7584 16.6874L18.8043 12.6428H3.64282C3.47233 12.6428 3.30883 12.5751 3.18828 12.4545C3.06773 12.334 3 12.1705 3 12Z" fill="currentColor"/>
48
- </svg>
46
+ <slot></slot>
49
47
  </${tag}>
50
48
  `;
51
49
  }
52
50
  }
53
51
  SgdsIconButton.styles = [...buttonElement["default"].styles, iconButton["default"]];
54
- tslib.__decorate([
55
- decorators_js.property({ type: String, reflect: true })
56
- ], SgdsIconButton.prototype, "name", void 0);
57
52
 
58
53
  exports.SgdsIconButton = SgdsIconButton;
59
54
  exports["default"] = SgdsIconButton;
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-icon-button.cjs.js","sources":["../../../../src/components/IconButton/sgds-icon-button.ts"],"sourcesContent":["import ButtonElement from \"../../base/button-element\";\nimport { literal, html } from \"lit/static-html.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport iconButtonStyles from \"./icon-button.css\";\nimport { property } from \"lit/decorators.js\";\n\n/**\n * @summary An icon button is a user interface element that combines an icon and a button, serving as a clickable or tabbable component.\n *\n * @event sgds-blur - Emitted when the button is blurred.\n * @event sgds-focus - Emitted when the button is focused.\n */\nexport class SgdsIconButton extends ButtonElement {\n static styles = [...ButtonElement.styles, iconButtonStyles];\n /** The name of the icon from sgds icon library */\n @property({ type: String, reflect: true }) name: string;\n\n render() {\n const isLink = this.href;\n const tag = isLink ? literal`a` : literal`button`;\n return html`\n <${tag}\n class=\"btn btn-icon${classMap({\n disabled: this.disabled,\n active: this.active,\n [`btn-${this.variant}`]: this.variant,\n [`btn-${this.size}`]: this.size\n })}\"\n ?disabled=${ifDefined(isLink ? undefined : this.disabled)}\n type=\"button\"\n href=${ifDefined(isLink ? this.href : undefined)}\n target=${ifDefined(isLink ? this.target : undefined)}\n download=${ifDefined(isLink ? this.download : undefined)}\n rel=${ifDefined(isLink && this.target === \"_blank\" ? \"noreferrer noopener\" : undefined)}\n role=${ifDefined(isLink ? \"button\" : undefined)}\n aria-disabled=${this.disabled ? \"true\" : \"false\"}\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n @click=${this._handleClick}\n @focus=${this._handleFocus}\n @blur=${this._handleBlur}\n aria-label=${ifDefined(this.ariaLabel)}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 12C3 11.8295 3.06773 11.666 3.18828 11.5455C3.30883 11.4249 3.47233 11.3572 3.64282 11.3572H18.8043L14.7584 7.31258C14.6377 7.19187 14.5699 7.02817 14.5699 6.85746C14.5699 6.68676 14.6377 6.52305 14.7584 6.40235C14.8791 6.28165 15.0428 6.21384 15.2135 6.21384C15.3842 6.21384 15.5479 6.28165 15.6686 6.40235L20.8111 11.5449C20.871 11.6046 20.9185 11.6755 20.9509 11.7536C20.9833 11.8317 21 11.9154 21 12C21 12.0845 20.9833 12.1683 20.9509 12.2464C20.9185 12.3245 20.871 12.3954 20.8111 12.4551L15.6686 17.5976C15.5479 17.7183 15.3842 17.7861 15.2135 17.7861C15.0428 17.7861 14.8791 17.7183 14.7584 17.5976C14.6377 17.4769 14.5699 17.3132 14.5699 17.1425C14.5699 16.9718 14.6377 16.8081 14.7584 16.6874L18.8043 12.6428H3.64282C3.47233 12.6428 3.30883 12.5751 3.18828 12.4545C3.06773 12.334 3 12.1705 3 12Z\" fill=\"currentColor\"/>\n </svg>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsIconButton;\n"],"names":["ButtonElement","literal","html","classMap","ifDefined","iconButtonStyles","__decorate","property"],"mappings":";;;;;;;;;;;;;AAOA;;;;;AAKG;AACG,MAAO,cAAe,SAAQA,wBAAa,CAAA;IAK/C,MAAM,GAAA;AACJ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,GAAG,GAAG,MAAM,GAAGC,qBAAO,CAAA,CAAA,CAAA,CAAG,GAAGA,qBAAO,CAAA,QAAQ,CAAC;AAClD,QAAA,OAAOC,kBAAI,CAAA,CAAA;aACF,GAAG,CAAA;AACiB,+BAAA,EAAAC,oBAAQ,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO;YACrC,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;SAChC,CAAC,CAAA;AACU,sBAAA,EAAAC,sBAAS,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAElD,iBAAA,EAAAA,sBAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;AACvC,mBAAA,EAAAA,sBAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AACzC,qBAAA,EAAAA,sBAAS,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;AAClD,gBAAA,EAAAA,sBAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC,CAAA;mBAChFA,sBAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAA;4BAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;uBACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AAC5B,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AACjB,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AAClB,kBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AACX,uBAAA,EAAAA,sBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;;;;;cAKpC,GAAG,CAAA;SACR,CAAC;KACP;;AAlCM,cAAM,CAAA,MAAA,GAAG,CAAC,GAAGJ,wBAAa,CAAC,MAAM,EAAEK,qBAAgB,CAAC,CAAC;AAEjBC,gBAAA,CAAA;IAA1CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;;;;"}
1
+ {"version":3,"file":"sgds-icon-button.cjs.js","sources":["../../../../src/components/IconButton/sgds-icon-button.ts"],"sourcesContent":["import ButtonElement from \"../../base/button-element\";\nimport { literal, html } from \"lit/static-html.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport iconButtonStyles from \"./icon-button.css\";\n\n/**\n * @summary An icon button is a user interface element that combines an icon and a button, serving as a clickable or tabbable component.\n *\n * @slot default - The slot for sgds-icon\n *\n * @event sgds-blur - Emitted when the button is blurred.\n * @event sgds-focus - Emitted when the button is focused.\n */\nexport class SgdsIconButton extends ButtonElement {\n static styles = [...ButtonElement.styles, iconButtonStyles];\n\n render() {\n const isLink = this.href;\n const tag = isLink ? literal`a` : literal`button`;\n return html`\n <${tag}\n class=\"btn btn-icon${classMap({\n disabled: this.disabled,\n active: this.active,\n [`btn-${this.variant}`]: this.variant,\n [`btn-${this.size}`]: this.size\n })}\"\n ?disabled=${ifDefined(isLink ? undefined : this.disabled)}\n type=${ifDefined(isLink ? undefined : \"button\")}\n href=${ifDefined(isLink ? this.href : undefined)}\n target=${ifDefined(isLink ? this.target : undefined)}\n download=${ifDefined(isLink ? this.download : undefined)}\n rel=${ifDefined(isLink && this.target === \"_blank\" ? \"noreferrer noopener\" : undefined)}\n role=${ifDefined(isLink ? \"button\" : undefined)}\n aria-disabled=${this.disabled ? \"true\" : \"false\"}\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n @click=${this._handleClick}\n @focus=${this._handleFocus}\n @blur=${this._handleBlur}\n aria-label=${ifDefined(this.ariaLabel)}\n >\n <slot></slot>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsIconButton;\n"],"names":["ButtonElement","literal","html","classMap","ifDefined","iconButtonStyles"],"mappings":";;;;;;;;;;;AAMA;;;;;;;AAOG;AACG,MAAO,cAAe,SAAQA,wBAAa,CAAA;IAG/C,MAAM,GAAA;AACJ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,GAAG,GAAG,MAAM,GAAGC,qBAAO,CAAA,CAAA,CAAA,CAAG,GAAGA,qBAAO,CAAA,QAAQ,CAAC;AAClD,QAAA,OAAOC,kBAAI,CAAA,CAAA;aACF,GAAG,CAAA;AACiB,+BAAA,EAAAC,oBAAQ,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO;YACrC,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;SAChC,CAAC,CAAA;AACU,sBAAA,EAAAC,sBAAS,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;mBAClDA,sBAAS,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAA;AACxC,iBAAA,EAAAA,sBAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;AACvC,mBAAA,EAAAA,sBAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AACzC,qBAAA,EAAAA,sBAAS,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;AAClD,gBAAA,EAAAA,sBAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC,CAAA;mBAChFA,sBAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAA;4BAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;uBACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AAC5B,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AACjB,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AAClB,kBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AACX,uBAAA,EAAAA,sBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;;;cAGpC,GAAG,CAAA;SACR,CAAC;KACP;;AA9BM,cAAM,CAAA,MAAA,GAAG,CAAC,GAAGJ,wBAAa,CAAC,MAAM,EAAEK,qBAAgB,CAAC;;;;;"}
@@ -1,15 +1,15 @@
1
1
  'use client';
2
- import { __decorate } from 'tslib';
3
2
  import ButtonElement from '../../base/button-element.js';
4
3
  import { literal, html } from 'lit/static-html.js';
5
4
  import { classMap } from 'lit/directives/class-map.js';
6
5
  import { ifDefined } from 'lit/directives/if-defined.js';
7
6
  import css_248z from './icon-button.js';
8
- import { property } from 'lit/decorators.js';
9
7
 
10
8
  /**
11
9
  * @summary An icon button is a user interface element that combines an icon and a button, serving as a clickable or tabbable component.
12
10
  *
11
+ * @slot default - The slot for sgds-icon
12
+ *
13
13
  * @event sgds-blur - Emitted when the button is blurred.
14
14
  * @event sgds-focus - Emitted when the button is focused.
15
15
  */
@@ -26,7 +26,7 @@ class SgdsIconButton extends ButtonElement {
26
26
  [`btn-${this.size}`]: this.size
27
27
  })}"
28
28
  ?disabled=${ifDefined(isLink ? undefined : this.disabled)}
29
- type="button"
29
+ type=${ifDefined(isLink ? undefined : "button")}
30
30
  href=${ifDefined(isLink ? this.href : undefined)}
31
31
  target=${ifDefined(isLink ? this.target : undefined)}
32
32
  download=${ifDefined(isLink ? this.download : undefined)}
@@ -39,17 +39,12 @@ class SgdsIconButton extends ButtonElement {
39
39
  @blur=${this._handleBlur}
40
40
  aria-label=${ifDefined(this.ariaLabel)}
41
41
  >
42
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
43
- <path fill-rule="evenodd" clip-rule="evenodd" d="M3 12C3 11.8295 3.06773 11.666 3.18828 11.5455C3.30883 11.4249 3.47233 11.3572 3.64282 11.3572H18.8043L14.7584 7.31258C14.6377 7.19187 14.5699 7.02817 14.5699 6.85746C14.5699 6.68676 14.6377 6.52305 14.7584 6.40235C14.8791 6.28165 15.0428 6.21384 15.2135 6.21384C15.3842 6.21384 15.5479 6.28165 15.6686 6.40235L20.8111 11.5449C20.871 11.6046 20.9185 11.6755 20.9509 11.7536C20.9833 11.8317 21 11.9154 21 12C21 12.0845 20.9833 12.1683 20.9509 12.2464C20.9185 12.3245 20.871 12.3954 20.8111 12.4551L15.6686 17.5976C15.5479 17.7183 15.3842 17.7861 15.2135 17.7861C15.0428 17.7861 14.8791 17.7183 14.7584 17.5976C14.6377 17.4769 14.5699 17.3132 14.5699 17.1425C14.5699 16.9718 14.6377 16.8081 14.7584 16.6874L18.8043 12.6428H3.64282C3.47233 12.6428 3.30883 12.5751 3.18828 12.4545C3.06773 12.334 3 12.1705 3 12Z" fill="currentColor"/>
44
- </svg>
42
+ <slot></slot>
45
43
  </${tag}>
46
44
  `;
47
45
  }
48
46
  }
49
47
  SgdsIconButton.styles = [...ButtonElement.styles, css_248z];
50
- __decorate([
51
- property({ type: String, reflect: true })
52
- ], SgdsIconButton.prototype, "name", void 0);
53
48
 
54
49
  export { SgdsIconButton, SgdsIconButton as default };
55
50
  //# sourceMappingURL=sgds-icon-button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-icon-button.js","sources":["../../../../src/components/IconButton/sgds-icon-button.ts"],"sourcesContent":["import ButtonElement from \"../../base/button-element\";\nimport { literal, html } from \"lit/static-html.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport iconButtonStyles from \"./icon-button.css\";\nimport { property } from \"lit/decorators.js\";\n\n/**\n * @summary An icon button is a user interface element that combines an icon and a button, serving as a clickable or tabbable component.\n *\n * @event sgds-blur - Emitted when the button is blurred.\n * @event sgds-focus - Emitted when the button is focused.\n */\nexport class SgdsIconButton extends ButtonElement {\n static styles = [...ButtonElement.styles, iconButtonStyles];\n /** The name of the icon from sgds icon library */\n @property({ type: String, reflect: true }) name: string;\n\n render() {\n const isLink = this.href;\n const tag = isLink ? literal`a` : literal`button`;\n return html`\n <${tag}\n class=\"btn btn-icon${classMap({\n disabled: this.disabled,\n active: this.active,\n [`btn-${this.variant}`]: this.variant,\n [`btn-${this.size}`]: this.size\n })}\"\n ?disabled=${ifDefined(isLink ? undefined : this.disabled)}\n type=\"button\"\n href=${ifDefined(isLink ? this.href : undefined)}\n target=${ifDefined(isLink ? this.target : undefined)}\n download=${ifDefined(isLink ? this.download : undefined)}\n rel=${ifDefined(isLink && this.target === \"_blank\" ? \"noreferrer noopener\" : undefined)}\n role=${ifDefined(isLink ? \"button\" : undefined)}\n aria-disabled=${this.disabled ? \"true\" : \"false\"}\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n @click=${this._handleClick}\n @focus=${this._handleFocus}\n @blur=${this._handleBlur}\n aria-label=${ifDefined(this.ariaLabel)}\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 12C3 11.8295 3.06773 11.666 3.18828 11.5455C3.30883 11.4249 3.47233 11.3572 3.64282 11.3572H18.8043L14.7584 7.31258C14.6377 7.19187 14.5699 7.02817 14.5699 6.85746C14.5699 6.68676 14.6377 6.52305 14.7584 6.40235C14.8791 6.28165 15.0428 6.21384 15.2135 6.21384C15.3842 6.21384 15.5479 6.28165 15.6686 6.40235L20.8111 11.5449C20.871 11.6046 20.9185 11.6755 20.9509 11.7536C20.9833 11.8317 21 11.9154 21 12C21 12.0845 20.9833 12.1683 20.9509 12.2464C20.9185 12.3245 20.871 12.3954 20.8111 12.4551L15.6686 17.5976C15.5479 17.7183 15.3842 17.7861 15.2135 17.7861C15.0428 17.7861 14.8791 17.7183 14.7584 17.5976C14.6377 17.4769 14.5699 17.3132 14.5699 17.1425C14.5699 16.9718 14.6377 16.8081 14.7584 16.6874L18.8043 12.6428H3.64282C3.47233 12.6428 3.30883 12.5751 3.18828 12.4545C3.06773 12.334 3 12.1705 3 12Z\" fill=\"currentColor\"/>\n </svg>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsIconButton;\n"],"names":["iconButtonStyles"],"mappings":";;;;;;;;;AAOA;;;;;AAKG;AACG,MAAO,cAAe,SAAQ,aAAa,CAAA;IAK/C,MAAM,GAAA;AACJ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,GAAG,GAAG,MAAM,GAAG,OAAO,CAAA,CAAA,CAAA,CAAG,GAAG,OAAO,CAAA,QAAQ,CAAC;AAClD,QAAA,OAAO,IAAI,CAAA,CAAA;aACF,GAAG,CAAA;AACiB,+BAAA,EAAA,QAAQ,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO;YACrC,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;SAChC,CAAC,CAAA;AACU,sBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAElD,iBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;AACvC,mBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AACzC,qBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;AAClD,gBAAA,EAAA,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC,CAAA;mBAChF,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAA;4BAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;uBACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AAC5B,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AACjB,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AAClB,kBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AACX,uBAAA,EAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;;;;;cAKpC,GAAG,CAAA;SACR,CAAC;KACP;;AAlCM,cAAM,CAAA,MAAA,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAEA,QAAgB,CAAC,CAAC;AAEjB,UAAA,CAAA;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"sgds-icon-button.js","sources":["../../../../src/components/IconButton/sgds-icon-button.ts"],"sourcesContent":["import ButtonElement from \"../../base/button-element\";\nimport { literal, html } from \"lit/static-html.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport iconButtonStyles from \"./icon-button.css\";\n\n/**\n * @summary An icon button is a user interface element that combines an icon and a button, serving as a clickable or tabbable component.\n *\n * @slot default - The slot for sgds-icon\n *\n * @event sgds-blur - Emitted when the button is blurred.\n * @event sgds-focus - Emitted when the button is focused.\n */\nexport class SgdsIconButton extends ButtonElement {\n static styles = [...ButtonElement.styles, iconButtonStyles];\n\n render() {\n const isLink = this.href;\n const tag = isLink ? literal`a` : literal`button`;\n return html`\n <${tag}\n class=\"btn btn-icon${classMap({\n disabled: this.disabled,\n active: this.active,\n [`btn-${this.variant}`]: this.variant,\n [`btn-${this.size}`]: this.size\n })}\"\n ?disabled=${ifDefined(isLink ? undefined : this.disabled)}\n type=${ifDefined(isLink ? undefined : \"button\")}\n href=${ifDefined(isLink ? this.href : undefined)}\n target=${ifDefined(isLink ? this.target : undefined)}\n download=${ifDefined(isLink ? this.download : undefined)}\n rel=${ifDefined(isLink && this.target === \"_blank\" ? \"noreferrer noopener\" : undefined)}\n role=${ifDefined(isLink ? \"button\" : undefined)}\n aria-disabled=${this.disabled ? \"true\" : \"false\"}\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n @click=${this._handleClick}\n @focus=${this._handleFocus}\n @blur=${this._handleBlur}\n aria-label=${ifDefined(this.ariaLabel)}\n >\n <slot></slot>\n </${tag}>\n `;\n }\n}\n\nexport default SgdsIconButton;\n"],"names":["iconButtonStyles"],"mappings":";;;;;;;AAMA;;;;;;;AAOG;AACG,MAAO,cAAe,SAAQ,aAAa,CAAA;IAG/C,MAAM,GAAA;AACJ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,GAAG,GAAG,MAAM,GAAG,OAAO,CAAA,CAAA,CAAA,CAAG,GAAG,OAAO,CAAA,QAAQ,CAAC;AAClD,QAAA,OAAO,IAAI,CAAA,CAAA;aACF,GAAG,CAAA;AACiB,+BAAA,EAAA,QAAQ,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO;YACrC,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;SAChC,CAAC,CAAA;AACU,sBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;mBAClD,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAA;AACxC,iBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;AACvC,mBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AACzC,qBAAA,EAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;AAClD,gBAAA,EAAA,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAAC,CAAA;mBAChF,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAA;4BAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;uBACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAA;AAC5B,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AACjB,mBAAA,EAAA,IAAI,CAAC,YAAY,CAAA;AAClB,kBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;AACX,uBAAA,EAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;;;cAGpC,GAAG,CAAA;SACR,CAAC;KACP;;AA9BM,cAAM,CAAA,MAAA,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAEA,QAAgB,CAAC;;;;"}
@@ -4,6 +4,8 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var tslib = require('tslib');
7
+ var scopedElements = require('@open-wc/scoped-elements');
8
+ var lit = require('lit');
7
9
  var decorators_js = require('lit/decorators.js');
8
10
  var classMap_js = require('lit/directives/class-map.js');
9
11
  var ifDefined_js = require('lit/directives/if-defined.js');
@@ -11,13 +13,12 @@ var live_js = require('lit/directives/live.js');
11
13
  var unsafeSvg_js = require('lit/directives/unsafe-svg.js');
12
14
  var staticHtml_js = require('lit/static-html.js');
13
15
  var formControlElement = require('../../base/form-control-element.cjs.js');
14
- var sgdsSpinner = require('../Spinner/sgds-spinner.cjs.js');
16
+ var formPlaceholder = require('../../styles/form-placeholder.cjs.js');
15
17
  var defaultvalue = require('../../utils/defaultvalue.cjs.js');
16
- var form = require('../../utils/form.cjs.js');
17
- var generateId = require('../../utils/generateId.cjs.js');
18
+ var validatorMixin = require('../../utils/validatorMixin.cjs.js');
18
19
  var watch = require('../../utils/watch.cjs.js');
20
+ var sgdsSpinner = require('../Spinner/sgds-spinner.cjs.js');
19
21
  var input = require('./input.cjs.js');
20
- var lit = require('lit');
21
22
 
22
23
  /**
23
24
  * @summary Text inputs allow your users to enter letters, numbers and symbols on a single line.
@@ -26,14 +27,13 @@ var lit = require('lit');
26
27
  * @event sgds-input - Emitted when the control receives input and its value changes.
27
28
  * @event sgds-focus - Emitted when input is in focus.
28
29
  * @event sgds-blur - Emitted when input is not in focus.
30
+ * @event sgds-invalid - Emitted when input is invalid
31
+ * @event sgds-valid - Emitted when input is valid
29
32
  *
30
33
  */
31
- class SgdsInput extends formControlElement["default"] {
34
+ class SgdsInput extends validatorMixin.SgdsFormValidatorMixin(scopedElements.ScopedElementsMixin(formControlElement["default"])) {
32
35
  constructor() {
33
36
  super(...arguments);
34
- /**@internal */
35
- this.formSubmitController = new form.FormSubmitController(this);
36
- /** The type of input which works the same as HTMLInputElement */
37
37
  this.type = "text";
38
38
  /** The input's placeholder text. */
39
39
  this.placeholder = "placeholder";
@@ -41,16 +41,17 @@ class SgdsInput extends formControlElement["default"] {
41
41
  this.autofocus = false;
42
42
  /** Makes the input readonly. */
43
43
  this.readonly = false;
44
- /**The input's value attribute. */
45
- this.value = "";
46
44
  /**Gets or sets the default value used to reset this element. The initial value corresponds to the one originally specified in the HTML that created this element. */
47
45
  this.defaultValue = "";
48
46
  /** Marks the component as valid. */
49
47
  this.valid = false;
50
48
  /** Marks the component as loading. */
51
49
  this.loading = false;
52
- /**@internal */
53
- this.inputId = generateId["default"]("input", this.type);
50
+ /** Makes the input a required field. */
51
+ this.required = false;
52
+ /**The input's value attribute. */
53
+ this.value = "";
54
+ this._isTouched = false;
54
55
  }
55
56
  /**@internal */
56
57
  static get scopedElements() {
@@ -66,60 +67,79 @@ class SgdsInput extends formControlElement["default"] {
66
67
  blur() {
67
68
  this.input.blur();
68
69
  }
69
- /** Checks for validity and shows the browser's validation message if the control is invalid. */
70
- reportValidity() {
71
- return this.input.reportValidity();
72
- }
73
- /** Sets a custom validation message. Pass an empty string to restore validity */
74
- setCustomValidity(err) {
75
- return this.input.setCustomValidity(err);
76
- }
77
70
  /** Programatically sets the invalid state of the input. Pass in boolean value in the argument */
78
71
  setInvalid(bool) {
79
72
  this.invalid = bool;
73
+ if (bool) {
74
+ this.emit("sgds-invalid");
75
+ }
76
+ else {
77
+ this.emit("sgds-valid");
78
+ }
80
79
  }
81
- _handleClick() {
82
- this.focus();
80
+ /**
81
+ * Checks for validity. Under the hood, HTMLFormElement's reportValidity method calls this method to check for component's validity state
82
+ * Note that the native error popup is prevented for SGDS form components by default. Instead the validation message shows up in the feedback container of SgdsInput
83
+ */
84
+ reportValidity() {
85
+ return this._mixinReportValidity();
83
86
  }
84
- _handleChange(event) {
85
- this.value = this.input.value;
86
- this.emit(event);
87
+ /**
88
+ * Checks for validity without any native error popup message
89
+ */
90
+ checkValidity() {
91
+ return this._mixinCheckValidity();
92
+ }
93
+ /**
94
+ * Returns the ValidityState object
95
+ */
96
+ get validity() {
97
+ return this._mixinGetValidity();
98
+ }
99
+ /**
100
+ * Returns the validation message based on the ValidityState
101
+ */
102
+ get validationMessage() {
103
+ return this._mixinGetValidationMessage();
87
104
  }
88
105
  _handleFocus() {
89
106
  this.emit("sgds-focus");
90
107
  }
91
108
  _handleBlur() {
109
+ this._isTouched = true;
92
110
  this.emit("sgds-blur");
93
111
  }
94
- _handleKeyDown(event) {
95
- const hasModifier = event.metaKey || event.ctrlKey || event.shiftKey || event.altKey;
96
- // Pressing enter when focused on an input should submit the form like a native input, but we wait a tick before
97
- // submitting to allow users to cancel the keydown event if they need to
98
- if (event.key === "Enter" && !hasModifier) {
99
- setTimeout(() => {
100
- // Prevent submission when enter is click on a submission in an Input Method Editor with isComposing
101
- if (!event.defaultPrevented && !event.isComposing) {
102
- this.formSubmitController.submit();
103
- }
104
- });
112
+ _handleClick() {
113
+ this.focus();
114
+ }
115
+ _handleChange(e) {
116
+ this.value = this.input.value;
117
+ this.emit("sgds-change");
118
+ super._mixinHandleChange(e);
119
+ }
120
+ _handleInputChange(e) {
121
+ this.value = this.input.value;
122
+ this.emit("sgds-input");
123
+ super._mixinHandleInputChange(e);
124
+ }
125
+ /** @internal */
126
+ _handleIsTouched() {
127
+ if (this._isTouched) {
128
+ this.setInvalid(!this._mixinCheckValidity());
105
129
  }
106
130
  }
107
131
  _handleDisabledChange() {
108
132
  // Disabled form controls are always valid, so we need to recheck validity when the state changes
109
- this.input.disabled = this.disabled;
110
- this.invalid = !this.input.checkValidity();
111
- }
112
- _handleValueChange() {
113
- this.invalid = !this.input.checkValidity();
133
+ this.setInvalid(false);
114
134
  }
115
135
  _renderInput() {
136
+ const wantFeedbackStyle = this.hasFeedback === "both" || this.hasFeedback === "style";
116
137
  return staticHtml_js.html `
117
138
  <div
118
139
  class="form-control-group ${classMap_js.classMap({
119
140
  disabled: this.disabled,
120
141
  readonly: this.readonly,
121
- "is-invalid": this.invalid && this.hasFeedback,
122
- "quantity-toggle": this.classList.contains("quantity-toggle")
142
+ "is-invalid": this.invalid && wantFeedbackStyle
123
143
  })}"
124
144
  @click=${this._handleClick}
125
145
  >
@@ -128,7 +148,7 @@ class SgdsInput extends formControlElement["default"] {
128
148
  <input
129
149
  class="form-control"
130
150
  type=${this.type}
131
- id=${this.inputId}
151
+ id=${this._controlId}
132
152
  name=${ifDefined_js.ifDefined(this.name)}
133
153
  placeholder=${ifDefined_js.ifDefined(this.placeholder)}
134
154
  aria-invalid=${this.invalid ? "true" : "false"}
@@ -143,15 +163,14 @@ class SgdsInput extends formControlElement["default"] {
143
163
  min=${ifDefined_js.ifDefined(this.min)}
144
164
  max=${ifDefined_js.ifDefined(this.max)}
145
165
  step=${ifDefined_js.ifDefined(this.step)}
146
- @input=${() => this._handleChange("sgds-input")}
147
- @change=${() => this._handleChange("sgds-change")}
148
- @keydown=${this._handleKeyDown}
166
+ @input=${(e) => this._handleInputChange(e)}
167
+ @change=${(e) => this._handleChange(e)}
149
168
  @invalid=${() => this.setInvalid(true)}
150
169
  @focus=${this._handleFocus}
151
170
  @blur=${this._handleBlur}
152
- aria-describedby=${ifDefined_js.ifDefined(this.invalid && this.hasFeedback ? `${this.inputId}-invalid` : undefined)}
153
- aria-labelledby="${this.labelId} ${this.inputId}Help ${this.invalid && this.hasFeedback
154
- ? `${this.inputId}-invalid`
171
+ aria-describedby=${ifDefined_js.ifDefined(this.invalid && this.hasFeedback ? `${this._controlId}-invalid` : undefined)}
172
+ aria-labelledby="${this._labelId} ${this._controlId}Help ${this.invalid && this.hasFeedback
173
+ ? `${this._controlId}-invalid`
155
174
  : ""}"
156
175
  />
157
176
  ${this.loading ? staticHtml_js.html `<sgds-spinner size="sm"></sgds-spinner>` : lit.nothing}
@@ -168,7 +187,8 @@ class SgdsInput extends formControlElement["default"] {
168
187
  `;
169
188
  }
170
189
  _renderFeedback() {
171
- return this.invalid && this.hasFeedback
190
+ const wantFeedbackText = this.hasFeedback === "both" || this.hasFeedback === "text";
191
+ return this.invalid && wantFeedbackText
172
192
  ? staticHtml_js.html ` <div class="invalid-feedback-container">
173
193
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
174
194
  <path
@@ -176,15 +196,17 @@ class SgdsInput extends formControlElement["default"] {
176
196
  fill="#B90000"
177
197
  />
178
198
  </svg>
179
- <div id="${this.inputId}-invalid" class="invalid-feedback">${this.invalidFeedback}</div>
199
+ <div id="${this._controlId}-invalid" class="invalid-feedback">
200
+ ${this.invalidFeedback ? this.invalidFeedback : this.input.validationMessage}
201
+ </div>
180
202
  </div>`
181
203
  : staticHtml_js.html `${this._renderHintText()}`;
182
204
  }
183
205
  _renderLabel() {
184
206
  const labelTemplate = staticHtml_js.html `
185
207
  <label
186
- for=${this.inputId}
187
- id=${this.labelId}
208
+ for=${this._controlId}
209
+ id=${this._labelId}
188
210
  class=${classMap_js.classMap({
189
211
  "form-label": true,
190
212
  required: this.required
@@ -195,7 +217,7 @@ class SgdsInput extends formControlElement["default"] {
195
217
  return this.label && labelTemplate;
196
218
  }
197
219
  _renderHintText() {
198
- const hintTextTemplate = staticHtml_js.html ` <div id="${this.inputId}Help" class="form-text">${this.hintText}</div> `;
220
+ const hintTextTemplate = staticHtml_js.html ` <div id="${this._controlId}Help" class="form-text">${this.hintText}</div> `;
199
221
  return this.hintText && hintTextTemplate;
200
222
  }
201
223
  render() {
@@ -210,10 +232,7 @@ class SgdsInput extends formControlElement["default"] {
210
232
  `;
211
233
  }
212
234
  }
213
- SgdsInput.styles = [...formControlElement["default"].styles, input["default"]];
214
- tslib.__decorate([
215
- decorators_js.query("input.form-control")
216
- ], SgdsInput.prototype, "input", void 0);
235
+ SgdsInput.styles = [...formControlElement["default"].styles, formPlaceholder["default"], input["default"]];
217
236
  tslib.__decorate([
218
237
  decorators_js.property({ reflect: true })
219
238
  ], SgdsInput.prototype, "type", void 0);
@@ -232,6 +251,12 @@ tslib.__decorate([
232
251
  tslib.__decorate([
233
252
  decorators_js.property({ type: Number, reflect: true })
234
253
  ], SgdsInput.prototype, "maxlength", void 0);
254
+ tslib.__decorate([
255
+ decorators_js.property()
256
+ ], SgdsInput.prototype, "min", void 0);
257
+ tslib.__decorate([
258
+ decorators_js.property()
259
+ ], SgdsInput.prototype, "max", void 0);
235
260
  tslib.__decorate([
236
261
  decorators_js.property({ type: String, reflect: true })
237
262
  ], SgdsInput.prototype, "placeholder", void 0);
@@ -248,8 +273,11 @@ tslib.__decorate([
248
273
  decorators_js.property()
249
274
  ], SgdsInput.prototype, "step", void 0);
250
275
  tslib.__decorate([
251
- decorators_js.property({ reflect: true })
252
- ], SgdsInput.prototype, "value", void 0);
276
+ decorators_js.property({ type: String, reflect: true })
277
+ ], SgdsInput.prototype, "hasFeedback", void 0);
278
+ tslib.__decorate([
279
+ decorators_js.property({ type: String, reflect: true })
280
+ ], SgdsInput.prototype, "invalidFeedback", void 0);
253
281
  tslib.__decorate([
254
282
  defaultvalue.defaultValue()
255
283
  ], SgdsInput.prototype, "defaultValue", void 0);
@@ -259,12 +287,21 @@ tslib.__decorate([
259
287
  tslib.__decorate([
260
288
  decorators_js.property({ type: Boolean, reflect: true })
261
289
  ], SgdsInput.prototype, "loading", void 0);
290
+ tslib.__decorate([
291
+ decorators_js.property({ type: Boolean, reflect: true })
292
+ ], SgdsInput.prototype, "required", void 0);
293
+ tslib.__decorate([
294
+ decorators_js.property({ reflect: true })
295
+ ], SgdsInput.prototype, "value", void 0);
296
+ tslib.__decorate([
297
+ decorators_js.state()
298
+ ], SgdsInput.prototype, "_isTouched", void 0);
299
+ tslib.__decorate([
300
+ watch.watch("_isTouched", { waitUntilFirstUpdate: true })
301
+ ], SgdsInput.prototype, "_handleIsTouched", null);
262
302
  tslib.__decorate([
263
303
  watch.watch("disabled", { waitUntilFirstUpdate: true })
264
304
  ], SgdsInput.prototype, "_handleDisabledChange", null);
265
- tslib.__decorate([
266
- watch.watch("value", { waitUntilFirstUpdate: true })
267
- ], SgdsInput.prototype, "_handleValueChange", null);
268
305
 
269
306
  exports.SgdsInput = SgdsInput;
270
307
  exports["default"] = SgdsInput;