@synergy-design-system/components 1.8.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/dist/chunks/{chunk.23HTU3YE.js → chunk.2EI3TNL7.js} +1 -16
  2. package/dist/chunks/chunk.2EI3TNL7.js.map +7 -0
  3. package/dist/chunks/{chunk.RSONAU45.js → chunk.2RF7KO5I.js} +1 -12
  4. package/dist/chunks/chunk.2RF7KO5I.js.map +7 -0
  5. package/dist/chunks/{chunk.CUU2VBEZ.js → chunk.2ZSYEFTP.js} +2 -2
  6. package/dist/chunks/{chunk.5TFG753C.js → chunk.3B2AQAU2.js} +2 -2
  7. package/dist/chunks/{chunk.G66TSLVT.js → chunk.3DUJKCD2.js} +23 -13
  8. package/dist/chunks/chunk.3DUJKCD2.js.map +7 -0
  9. package/dist/chunks/{chunk.HW5TASOL.js → chunk.3RA2P64H.js} +3 -3
  10. package/dist/chunks/{chunk.4CBN5LPQ.js → chunk.3STW62TA.js} +1 -12
  11. package/dist/chunks/chunk.3STW62TA.js.map +7 -0
  12. package/dist/chunks/{chunk.EKOK7YPB.js → chunk.4QS5IWYB.js} +1 -16
  13. package/dist/chunks/chunk.4QS5IWYB.js.map +7 -0
  14. package/dist/chunks/{chunk.KA7L2PMA.js → chunk.67GSZBK7.js} +20 -13
  15. package/dist/chunks/chunk.67GSZBK7.js.map +7 -0
  16. package/dist/chunks/{chunk.UG5FC6UD.js → chunk.7HMAYWNS.js} +2 -2
  17. package/dist/chunks/{chunk.6PWB7EUW.js → chunk.7N42OBRZ.js} +2 -2
  18. package/dist/chunks/{chunk.JRXQK6LG.js → chunk.7UVCYUNR.js} +2 -2
  19. package/dist/chunks/{chunk.4ZURABYO.js → chunk.A7IIJ2LL.js} +1 -7
  20. package/dist/chunks/{chunk.O7USYXBT.js.map → chunk.A7IIJ2LL.js.map} +3 -3
  21. package/dist/chunks/{chunk.PGCXJ2PT.js → chunk.ACTJFDNK.js} +1 -12
  22. package/dist/chunks/chunk.ACTJFDNK.js.map +7 -0
  23. package/dist/chunks/{chunk.MNMITYTH.js → chunk.ADRKUQGR.js} +1 -12
  24. package/dist/chunks/chunk.ADRKUQGR.js.map +7 -0
  25. package/dist/chunks/{chunk.RS4Z4KDT.js → chunk.AYTANJEE.js} +10 -6
  26. package/dist/chunks/chunk.AYTANJEE.js.map +7 -0
  27. package/dist/chunks/{chunk.4ZGN7AEC.js → chunk.BF2Z2XBN.js} +18 -10
  28. package/dist/chunks/chunk.BF2Z2XBN.js.map +7 -0
  29. package/dist/chunks/{chunk.QHFGD6WW.js → chunk.BGHK4NQA.js} +1 -12
  30. package/dist/chunks/chunk.BGHK4NQA.js.map +7 -0
  31. package/dist/chunks/{chunk.2IBWQADW.js → chunk.BI7J7YNX.js} +2 -2
  32. package/dist/chunks/{chunk.F3YEAZYJ.js → chunk.BOO4VTHX.js} +2 -2
  33. package/dist/chunks/{chunk.HNRD7DBS.js → chunk.CBR46SD4.js} +6 -5
  34. package/dist/chunks/chunk.CBR46SD4.js.map +7 -0
  35. package/dist/chunks/{chunk.W6V7TPGK.js → chunk.CFIQXXMW.js} +1 -12
  36. package/dist/chunks/chunk.CFIQXXMW.js.map +7 -0
  37. package/dist/chunks/chunk.CJZHKDBQ.js +12 -0
  38. package/dist/chunks/chunk.CJZHKDBQ.js.map +7 -0
  39. package/dist/chunks/{chunk.DAROCSFO.js → chunk.DIXHBM5G.js} +10 -6
  40. package/dist/chunks/chunk.DIXHBM5G.js.map +7 -0
  41. package/dist/chunks/{chunk.WP6T5CG2.js → chunk.FAKWK5NS.js} +2 -2
  42. package/dist/chunks/{chunk.UVYPEAQZ.js → chunk.GQY3KJDK.js} +23 -8
  43. package/dist/chunks/chunk.GQY3KJDK.js.map +7 -0
  44. package/dist/chunks/{chunk.2KKPNUPU.js → chunk.GTSRMEPE.js} +2 -4
  45. package/dist/chunks/chunk.GTSRMEPE.js.map +7 -0
  46. package/dist/chunks/{chunk.MRAXEK5D.js → chunk.H5ZKCFYO.js} +2 -2
  47. package/dist/chunks/{chunk.JBHQJWOB.js → chunk.HELY6MCO.js} +71 -33
  48. package/dist/chunks/chunk.HELY6MCO.js.map +7 -0
  49. package/dist/chunks/{chunk.NWWHBSV7.js → chunk.HUHPPFDX.js} +2 -2
  50. package/dist/chunks/chunk.JDXKGJ63.js +99 -0
  51. package/dist/chunks/chunk.JDXKGJ63.js.map +7 -0
  52. package/dist/chunks/chunk.JMP6V7XJ.js +80 -0
  53. package/dist/chunks/chunk.JMP6V7XJ.js.map +7 -0
  54. package/dist/chunks/{chunk.K4ELZCXB.js → chunk.JORZ3DML.js} +2 -2
  55. package/dist/chunks/{chunk.JSO3PKB4.js → chunk.KUO3KJOC.js} +2 -2
  56. package/dist/chunks/{chunk.A2WGLZOL.js → chunk.LIRQO322.js} +2 -2
  57. package/dist/chunks/{chunk.2FN5DTS6.js → chunk.LJQ7LEPV.js} +1 -12
  58. package/dist/chunks/chunk.LJQ7LEPV.js.map +7 -0
  59. package/dist/chunks/{chunk.COKV3ZN7.js → chunk.M6D7QVXC.js} +2 -2
  60. package/dist/chunks/{chunk.JN7CLMQZ.js → chunk.MIMALEWP.js} +21 -7
  61. package/dist/chunks/chunk.MIMALEWP.js.map +7 -0
  62. package/dist/chunks/{chunk.Y4QKFZLK.js → chunk.MZBIDOMW.js} +84 -46
  63. package/dist/chunks/chunk.MZBIDOMW.js.map +7 -0
  64. package/dist/chunks/{chunk.5AAIHRMI.js → chunk.N4VSEIRQ.js} +3 -1
  65. package/dist/chunks/{chunk.5AAIHRMI.js.map → chunk.N4VSEIRQ.js.map} +2 -2
  66. package/dist/chunks/{chunk.35PHCFSV.js → chunk.NII3J5OF.js} +12 -8
  67. package/dist/chunks/chunk.NII3J5OF.js.map +7 -0
  68. package/dist/chunks/{chunk.NAAFLDZ3.js → chunk.OPP7D6NX.js} +2 -2
  69. package/dist/chunks/{chunk.N2I6HVX3.js → chunk.OSBC36KQ.js} +4 -9
  70. package/dist/chunks/chunk.OSBC36KQ.js.map +7 -0
  71. package/dist/chunks/{chunk.NV7W5R6V.js → chunk.PHSJD47V.js} +1 -12
  72. package/dist/chunks/chunk.PHSJD47V.js.map +7 -0
  73. package/dist/chunks/{chunk.JBYBQ5TQ.js → chunk.PKO6FEOM.js} +1 -12
  74. package/dist/chunks/chunk.PKO6FEOM.js.map +7 -0
  75. package/dist/chunks/{chunk.GZVDP7WZ.js → chunk.QF4AQCX3.js} +137 -42
  76. package/dist/chunks/chunk.QF4AQCX3.js.map +7 -0
  77. package/dist/chunks/{chunk.6XU6OLZ3.js → chunk.QNQNR3RY.js} +1 -16
  78. package/dist/chunks/chunk.QNQNR3RY.js.map +7 -0
  79. package/dist/chunks/{chunk.XI6MSNHF.js → chunk.QRXBA3TE.js} +83 -5
  80. package/dist/chunks/chunk.QRXBA3TE.js.map +7 -0
  81. package/dist/chunks/{chunk.B75SET3J.js → chunk.RRQEMHEV.js} +6 -5
  82. package/dist/chunks/chunk.RRQEMHEV.js.map +7 -0
  83. package/dist/chunks/{chunk.ERNEIORV.js → chunk.SHI4PSGX.js} +9 -5
  84. package/dist/chunks/chunk.SHI4PSGX.js.map +7 -0
  85. package/dist/chunks/{chunk.OJ4KOC7R.js → chunk.SJMMPKWP.js} +1 -12
  86. package/dist/chunks/chunk.SJMMPKWP.js.map +7 -0
  87. package/dist/chunks/{chunk.2Z2GYRLO.js → chunk.SZCGMXW5.js} +2 -2
  88. package/dist/chunks/chunk.SZCGMXW5.js.map +7 -0
  89. package/dist/chunks/{chunk.MB3YZTYP.js → chunk.TGVTAWOV.js} +6 -5
  90. package/dist/chunks/chunk.TGVTAWOV.js.map +7 -0
  91. package/dist/chunks/{chunk.JHXCBOUD.js → chunk.TTL762VF.js} +57 -60
  92. package/dist/chunks/chunk.TTL762VF.js.map +7 -0
  93. package/dist/chunks/{chunk.OJUBVHIK.js → chunk.UCMAXFGL.js} +2 -2
  94. package/dist/chunks/{chunk.2XCLA4MQ.js → chunk.UX22QVVR.js} +2 -2
  95. package/dist/chunks/{chunk.RVFNEWM3.js → chunk.UXDU44Q3.js} +2 -2
  96. package/dist/chunks/{chunk.AFEABUNX.js → chunk.W5JK7V7K.js} +6 -1
  97. package/dist/chunks/chunk.W5JK7V7K.js.map +7 -0
  98. package/dist/chunks/{chunk.BGPAHVPK.js → chunk.WEX3I4KA.js} +2 -2
  99. package/dist/chunks/{chunk.GUQN6XL4.js → chunk.WUFFQJJF.js} +10 -6
  100. package/dist/chunks/chunk.WUFFQJJF.js.map +7 -0
  101. package/dist/chunks/{chunk.4I6M5V6O.js → chunk.XIUSSERX.js} +1 -16
  102. package/dist/chunks/chunk.XIUSSERX.js.map +7 -0
  103. package/dist/chunks/{chunk.WDX7XUUK.js → chunk.XVNL6NRN.js} +22 -2
  104. package/dist/chunks/chunk.XVNL6NRN.js.map +7 -0
  105. package/dist/chunks/{chunk.AWZ4FSAL.js → chunk.YDMQ766U.js} +15 -11
  106. package/dist/chunks/chunk.YDMQ766U.js.map +7 -0
  107. package/dist/chunks/{chunk.AJWDVZRI.js → chunk.ZGFM7UKE.js} +45 -19
  108. package/dist/chunks/chunk.ZGFM7UKE.js.map +7 -0
  109. package/dist/chunks/{chunk.IKKMWFWH.js → chunk.ZIQXX272.js} +2 -2
  110. package/dist/components/button/button.component.js +12 -13
  111. package/dist/components/button/button.js +13 -14
  112. package/dist/components/button/button.styles.js +1 -3
  113. package/dist/components/button-group/button-group.component.js +3 -4
  114. package/dist/components/button-group/button-group.js +4 -5
  115. package/dist/components/button-group/button-group.styles.js +1 -2
  116. package/dist/components/checkbox/checkbox.component.d.ts +5 -0
  117. package/dist/components/checkbox/checkbox.component.js +11 -10
  118. package/dist/components/checkbox/checkbox.js +12 -11
  119. package/dist/components/checkbox/checkbox.styles.js +1 -3
  120. package/dist/components/divider/divider.component.js +3 -4
  121. package/dist/components/divider/divider.js +4 -5
  122. package/dist/components/divider/divider.styles.js +1 -3
  123. package/dist/components/drawer/drawer.component.d.ts +1 -0
  124. package/dist/components/drawer/drawer.component.js +12 -13
  125. package/dist/components/drawer/drawer.js +13 -14
  126. package/dist/components/drawer/drawer.styles.js +1 -3
  127. package/dist/components/header/header.component.d.ts +36 -0
  128. package/dist/components/header/header.component.js +20 -0
  129. package/dist/components/header/header.component.js.map +7 -0
  130. package/dist/components/header/header.d.ts +8 -0
  131. package/dist/components/header/header.js +21 -0
  132. package/dist/components/header/header.js.map +7 -0
  133. package/dist/components/header/header.styles.d.ts +2 -0
  134. package/dist/components/header/header.styles.js +8 -0
  135. package/dist/components/header/header.styles.js.map +7 -0
  136. package/dist/components/icon/icon.component.js +6 -7
  137. package/dist/components/icon/icon.js +7 -8
  138. package/dist/components/icon/icon.styles.js +1 -3
  139. package/dist/components/icon/library.js +2 -2
  140. package/dist/components/icon/library.system.js +1 -1
  141. package/dist/components/icon-button/icon-button.component.js +8 -9
  142. package/dist/components/icon-button/icon-button.js +9 -10
  143. package/dist/components/icon-button/icon-button.styles.js +1 -3
  144. package/dist/components/input/input.component.js +13 -14
  145. package/dist/components/input/input.js +14 -15
  146. package/dist/components/input/input.styles.js +1 -4
  147. package/dist/components/optgroup/optgroup.component.js +4 -5
  148. package/dist/components/optgroup/optgroup.js +5 -6
  149. package/dist/components/option/option.component.js +8 -9
  150. package/dist/components/option/option.js +9 -10
  151. package/dist/components/option/option.styles.js +1 -3
  152. package/dist/components/popup/popup.component.d.ts +9 -0
  153. package/dist/components/popup/popup.component.js +3 -4
  154. package/dist/components/popup/popup.styles.js +1 -2
  155. package/dist/components/radio/radio.component.js +8 -9
  156. package/dist/components/radio/radio.js +9 -10
  157. package/dist/components/radio/radio.styles.js +1 -3
  158. package/dist/components/radio-button/radio-button.component.js +4 -6
  159. package/dist/components/radio-button/radio-button.js +5 -7
  160. package/dist/components/radio-button/radio-button.styles.js +2 -4
  161. package/dist/components/radio-group/radio-group.component.d.ts +1 -0
  162. package/dist/components/radio-group/radio-group.component.js +7 -8
  163. package/dist/components/radio-group/radio-group.js +8 -9
  164. package/dist/components/radio-group/radio-group.styles.js +1 -4
  165. package/dist/components/select/select.component.d.ts +1 -0
  166. package/dist/components/select/select.component.js +18 -19
  167. package/dist/components/select/select.js +19 -20
  168. package/dist/components/select/select.styles.js +1 -4
  169. package/dist/components/spinner/spinner.component.js +3 -4
  170. package/dist/components/spinner/spinner.styles.js +1 -2
  171. package/dist/components/switch/switch.component.d.ts +5 -0
  172. package/dist/components/switch/switch.component.js +7 -6
  173. package/dist/components/switch/switch.custom.styles.js +1 -1
  174. package/dist/components/switch/switch.js +8 -7
  175. package/dist/components/switch/switch.styles.js +1 -3
  176. package/dist/components/tag/tag.component.js +10 -11
  177. package/dist/components/tag/tag.js +11 -12
  178. package/dist/components/tag/tag.styles.js +1 -3
  179. package/dist/components/textarea/textarea.component.js +5 -6
  180. package/dist/components/textarea/textarea.js +6 -7
  181. package/dist/components/textarea/textarea.styles.js +1 -4
  182. package/dist/custom-elements.json +379 -147
  183. package/dist/internal/longpress.d.ts +2 -2
  184. package/dist/internal/modal.d.ts +3 -0
  185. package/dist/synergy.d.ts +1 -0
  186. package/dist/synergy.js +84 -79
  187. package/dist/utilities/form.js +2 -2
  188. package/dist/utilities/icon-library.js +2 -2
  189. package/dist/vscode.html-custom-data.json +53 -21
  190. package/package.json +2 -4
  191. package/dist/chunks/chunk.23HTU3YE.js.map +0 -7
  192. package/dist/chunks/chunk.2FN5DTS6.js.map +0 -7
  193. package/dist/chunks/chunk.2KKPNUPU.js.map +0 -7
  194. package/dist/chunks/chunk.2Z2GYRLO.js.map +0 -7
  195. package/dist/chunks/chunk.35PHCFSV.js.map +0 -7
  196. package/dist/chunks/chunk.4CBN5LPQ.js.map +0 -7
  197. package/dist/chunks/chunk.4I6M5V6O.js.map +0 -7
  198. package/dist/chunks/chunk.4ZGN7AEC.js.map +0 -7
  199. package/dist/chunks/chunk.4ZURABYO.js.map +0 -7
  200. package/dist/chunks/chunk.6XU6OLZ3.js.map +0 -7
  201. package/dist/chunks/chunk.AFEABUNX.js.map +0 -7
  202. package/dist/chunks/chunk.AJWDVZRI.js.map +0 -7
  203. package/dist/chunks/chunk.AWZ4FSAL.js.map +0 -7
  204. package/dist/chunks/chunk.B75SET3J.js.map +0 -7
  205. package/dist/chunks/chunk.DAROCSFO.js.map +0 -7
  206. package/dist/chunks/chunk.EKOK7YPB.js.map +0 -7
  207. package/dist/chunks/chunk.ERNEIORV.js.map +0 -7
  208. package/dist/chunks/chunk.G66TSLVT.js.map +0 -7
  209. package/dist/chunks/chunk.GUQN6XL4.js.map +0 -7
  210. package/dist/chunks/chunk.GZVDP7WZ.js.map +0 -7
  211. package/dist/chunks/chunk.HNRD7DBS.js.map +0 -7
  212. package/dist/chunks/chunk.JBHQJWOB.js.map +0 -7
  213. package/dist/chunks/chunk.JBYBQ5TQ.js.map +0 -7
  214. package/dist/chunks/chunk.JHXCBOUD.js.map +0 -7
  215. package/dist/chunks/chunk.JN7CLMQZ.js.map +0 -7
  216. package/dist/chunks/chunk.KA7L2PMA.js.map +0 -7
  217. package/dist/chunks/chunk.MB3YZTYP.js.map +0 -7
  218. package/dist/chunks/chunk.MNMITYTH.js.map +0 -7
  219. package/dist/chunks/chunk.N2I6HVX3.js.map +0 -7
  220. package/dist/chunks/chunk.NV7W5R6V.js.map +0 -7
  221. package/dist/chunks/chunk.O7USYXBT.js +0 -23
  222. package/dist/chunks/chunk.OJ4KOC7R.js.map +0 -7
  223. package/dist/chunks/chunk.PGCXJ2PT.js.map +0 -7
  224. package/dist/chunks/chunk.QHFGD6WW.js.map +0 -7
  225. package/dist/chunks/chunk.RS4Z4KDT.js.map +0 -7
  226. package/dist/chunks/chunk.RSONAU45.js.map +0 -7
  227. package/dist/chunks/chunk.UVYPEAQZ.js.map +0 -7
  228. package/dist/chunks/chunk.W6V7TPGK.js.map +0 -7
  229. package/dist/chunks/chunk.WDX7XUUK.js.map +0 -7
  230. package/dist/chunks/chunk.XI6MSNHF.js.map +0 -7
  231. package/dist/chunks/chunk.Y4QKFZLK.js.map +0 -7
  232. package/dist/web-types.json +0 -2580
  233. /package/dist/chunks/{chunk.CUU2VBEZ.js.map → chunk.2ZSYEFTP.js.map} +0 -0
  234. /package/dist/chunks/{chunk.5TFG753C.js.map → chunk.3B2AQAU2.js.map} +0 -0
  235. /package/dist/chunks/{chunk.HW5TASOL.js.map → chunk.3RA2P64H.js.map} +0 -0
  236. /package/dist/chunks/{chunk.UG5FC6UD.js.map → chunk.7HMAYWNS.js.map} +0 -0
  237. /package/dist/chunks/{chunk.6PWB7EUW.js.map → chunk.7N42OBRZ.js.map} +0 -0
  238. /package/dist/chunks/{chunk.JRXQK6LG.js.map → chunk.7UVCYUNR.js.map} +0 -0
  239. /package/dist/chunks/{chunk.2IBWQADW.js.map → chunk.BI7J7YNX.js.map} +0 -0
  240. /package/dist/chunks/{chunk.F3YEAZYJ.js.map → chunk.BOO4VTHX.js.map} +0 -0
  241. /package/dist/chunks/{chunk.WP6T5CG2.js.map → chunk.FAKWK5NS.js.map} +0 -0
  242. /package/dist/chunks/{chunk.MRAXEK5D.js.map → chunk.H5ZKCFYO.js.map} +0 -0
  243. /package/dist/chunks/{chunk.NWWHBSV7.js.map → chunk.HUHPPFDX.js.map} +0 -0
  244. /package/dist/chunks/{chunk.K4ELZCXB.js.map → chunk.JORZ3DML.js.map} +0 -0
  245. /package/dist/chunks/{chunk.JSO3PKB4.js.map → chunk.KUO3KJOC.js.map} +0 -0
  246. /package/dist/chunks/{chunk.A2WGLZOL.js.map → chunk.LIRQO322.js.map} +0 -0
  247. /package/dist/chunks/{chunk.COKV3ZN7.js.map → chunk.M6D7QVXC.js.map} +0 -0
  248. /package/dist/chunks/{chunk.NAAFLDZ3.js.map → chunk.OPP7D6NX.js.map} +0 -0
  249. /package/dist/chunks/{chunk.OJUBVHIK.js.map → chunk.UCMAXFGL.js.map} +0 -0
  250. /package/dist/chunks/{chunk.2XCLA4MQ.js.map → chunk.UX22QVVR.js.map} +0 -0
  251. /package/dist/chunks/{chunk.RVFNEWM3.js.map → chunk.UXDU44Q3.js.map} +0 -0
  252. /package/dist/chunks/{chunk.BGPAHVPK.js.map → chunk.WEX3I4KA.js.map} +0 -0
  253. /package/dist/chunks/{chunk.IKKMWFWH.js.map → chunk.ZIQXX272.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- /// <reference types="node" />
1
+ /// <reference types="node" resolution-mode="require"/>
2
2
  import { type ElementPart, noChange, nothing } from 'lit';
3
3
  import { AsyncDirective, type DirectiveParameters, type Part } from 'lit/async-directive.js';
4
4
  type Callbacks = {
@@ -38,5 +38,5 @@ declare class LongPressDirective extends AsyncDirective {
38
38
  */
39
39
  private stopSpinningAndCleanUp;
40
40
  }
41
- export declare const longPress: (_callback: Callbacks) => import("lit/async-directive").DirectiveResult<typeof LongPressDirective>;
41
+ export declare const longPress: (_callback: Callbacks) => import("lit/async-directive.js").DirectiveResult<typeof LongPressDirective>;
42
42
  export type { LongPressDirective };
@@ -3,6 +3,8 @@ export default class Modal {
3
3
  isExternalActivated: boolean;
4
4
  tabDirection: 'forward' | 'backward';
5
5
  currentFocus: HTMLElement | null;
6
+ previousFocus: HTMLElement | null;
7
+ elementsWithTabbableControls: string[];
6
8
  constructor(element: HTMLElement);
7
9
  /** Activates focus trapping. */
8
10
  activate(): void;
@@ -16,6 +18,7 @@ export default class Modal {
16
18
  deactivateExternal(): void;
17
19
  private checkFocus;
18
20
  private handleFocusIn;
21
+ private possiblyHasTabbableChildren;
19
22
  private handleKeyDown;
20
23
  private handleKeyUp;
21
24
  }
package/dist/synergy.d.ts CHANGED
@@ -3,6 +3,7 @@ export { default as SynButton } from './components/button/button.js';
3
3
  export { default as SynCheckbox } from './components/checkbox/checkbox.js';
4
4
  export { default as SynDivider } from './components/divider/divider.js';
5
5
  export { default as SynDrawer } from './components/drawer/drawer.js';
6
+ export { default as SynHeader } from './components/header/header.js';
6
7
  export { default as SynIconButton } from './components/icon-button/icon-button.js';
7
8
  export { default as SynIcon } from './components/icon/icon.js';
8
9
  export { default as SynInput } from './components/input/input.js';
package/dist/synergy.js CHANGED
@@ -1,132 +1,136 @@
1
- import {
2
- textarea_default
3
- } from "./chunks/chunk.BGPAHVPK.js";
4
1
  import {
5
2
  getFormControls,
6
3
  serialize
7
- } from "./chunks/chunk.JSO3PKB4.js";
4
+ } from "./chunks/chunk.KUO3KJOC.js";
8
5
  import "./chunks/chunk.NKIYFJN2.js";
9
- import {
10
- switch_default
11
- } from "./chunks/chunk.RVFNEWM3.js";
12
6
  import {
13
7
  tag_default
14
- } from "./chunks/chunk.A2WGLZOL.js";
15
- import "./chunks/chunk.KA7L2PMA.js";
16
- import "./chunks/chunk.23HTU3YE.js";
8
+ } from "./chunks/chunk.LIRQO322.js";
9
+ import {
10
+ textarea_default
11
+ } from "./chunks/chunk.WEX3I4KA.js";
12
+ import "./chunks/chunk.67GSZBK7.js";
17
13
  import "./chunks/chunk.YBIBWRKC.js";
14
+ import "./chunks/chunk.2EI3TNL7.js";
15
+ import {
16
+ switch_default
17
+ } from "./chunks/chunk.UXDU44Q3.js";
18
+ import "./chunks/chunk.HELY6MCO.js";
19
+ import "./chunks/chunk.W5JK7V7K.js";
20
+ import "./chunks/chunk.ADRKUQGR.js";
21
+ import {
22
+ radio_group_default
23
+ } from "./chunks/chunk.HUHPPFDX.js";
18
24
  import {
19
25
  select_default
20
- } from "./chunks/chunk.OJUBVHIK.js";
21
- import "./chunks/chunk.AJWDVZRI.js";
22
- import "./chunks/chunk.GUQN6XL4.js";
23
- import "./chunks/chunk.QHFGD6WW.js";
26
+ } from "./chunks/chunk.UCMAXFGL.js";
27
+ import "./chunks/chunk.ZGFM7UKE.js";
28
+ import "./chunks/chunk.WUFFQJJF.js";
24
29
  import "./chunks/chunk.7W73A57K.js";
25
- import "./chunks/chunk.6XU6OLZ3.js";
30
+ import "./chunks/chunk.BGHK4NQA.js";
26
31
  import "./chunks/chunk.OWMT6OL2.js";
27
- import "./chunks/chunk.JBHQJWOB.js";
28
- import "./chunks/chunk.MNMITYTH.js";
29
- import "./chunks/chunk.AFEABUNX.js";
32
+ import "./chunks/chunk.QNQNR3RY.js";
30
33
  import {
31
34
  radio_default
32
- } from "./chunks/chunk.COKV3ZN7.js";
35
+ } from "./chunks/chunk.M6D7QVXC.js";
36
+ import "./chunks/chunk.AYTANJEE.js";
37
+ import "./chunks/chunk.V6VND4OF.js";
38
+ import "./chunks/chunk.PKO6FEOM.js";
33
39
  import {
34
40
  radio_button_default
35
- } from "./chunks/chunk.NAAFLDZ3.js";
36
- import "./chunks/chunk.B75SET3J.js";
37
- import "./chunks/chunk.IKKMWFWH.js";
38
- import {
39
- radio_group_default
40
- } from "./chunks/chunk.NWWHBSV7.js";
41
- import "./chunks/chunk.4ZGN7AEC.js";
42
- import "./chunks/chunk.4I6M5V6O.js";
41
+ } from "./chunks/chunk.OPP7D6NX.js";
42
+ import "./chunks/chunk.RRQEMHEV.js";
43
+ import "./chunks/chunk.ZIQXX272.js";
44
+ import "./chunks/chunk.BF2Z2XBN.js";
43
45
  import "./chunks/chunk.F4MRQLNL.js";
46
+ import "./chunks/chunk.XIUSSERX.js";
47
+ import {
48
+ optgroup_default
49
+ } from "./chunks/chunk.2ZSYEFTP.js";
44
50
  import {
45
51
  option_default
46
- } from "./chunks/chunk.5TFG753C.js";
47
- import "./chunks/chunk.XI6MSNHF.js";
48
- import "./chunks/chunk.JN7CLMQZ.js";
49
- import "./chunks/chunk.RS4Z4KDT.js";
50
- import "./chunks/chunk.JBYBQ5TQ.js";
51
- import "./chunks/chunk.V6VND4OF.js";
52
+ } from "./chunks/chunk.3B2AQAU2.js";
53
+ import "./chunks/chunk.GQY3KJDK.js";
54
+ import "./chunks/chunk.3B24TYVN.js";
55
+ import "./chunks/chunk.CFIQXXMW.js";
56
+ import "./chunks/chunk.QRXBA3TE.js";
57
+ import "./chunks/chunk.MIMALEWP.js";
58
+ import {
59
+ icon_button_default
60
+ } from "./chunks/chunk.7HMAYWNS.js";
52
61
  import {
53
62
  input_default
54
- } from "./chunks/chunk.6PWB7EUW.js";
55
- import "./chunks/chunk.G66TSLVT.js";
56
- import "./chunks/chunk.EKOK7YPB.js";
57
- import "./chunks/chunk.JHXCBOUD.js";
63
+ } from "./chunks/chunk.7N42OBRZ.js";
64
+ import "./chunks/chunk.3DUJKCD2.js";
58
65
  import "./chunks/chunk.2OLVTQ5P.js";
59
- import {
60
- optgroup_default
61
- } from "./chunks/chunk.CUU2VBEZ.js";
62
- import "./chunks/chunk.HW5TASOL.js";
66
+ import "./chunks/chunk.4QS5IWYB.js";
67
+ import "./chunks/chunk.3RA2P64H.js";
63
68
  import "./chunks/chunk.KG52EHDB.js";
64
- import "./chunks/chunk.UVYPEAQZ.js";
65
- import "./chunks/chunk.W6V7TPGK.js";
66
- import "./chunks/chunk.3B24TYVN.js";
67
- import {
68
- icon_default
69
- } from "./chunks/chunk.F3YEAZYJ.js";
70
- import {
71
- icon_button_default
72
- } from "./chunks/chunk.UG5FC6UD.js";
73
69
  import {
74
70
  divider_default
75
- } from "./chunks/chunk.WP6T5CG2.js";
71
+ } from "./chunks/chunk.FAKWK5NS.js";
76
72
  import {
77
73
  drawer_default
78
- } from "./chunks/chunk.2IBWQADW.js";
79
- import "./chunks/chunk.GZVDP7WZ.js";
80
- import "./chunks/chunk.2KKPNUPU.js";
74
+ } from "./chunks/chunk.BI7J7YNX.js";
75
+ import "./chunks/chunk.QF4AQCX3.js";
76
+ import "./chunks/chunk.GTSRMEPE.js";
81
77
  import "./chunks/chunk.QAUTITK3.js";
82
- import "./chunks/chunk.DAROCSFO.js";
83
- import "./chunks/chunk.2FN5DTS6.js";
78
+ import "./chunks/chunk.DIXHBM5G.js";
84
79
  import "./chunks/chunk.OJF7KL44.js";
85
- import "./chunks/chunk.NV7W5R6V.js";
80
+ import "./chunks/chunk.LJQ7LEPV.js";
86
81
  import "./chunks/chunk.UYD2OVFV.js";
82
+ import "./chunks/chunk.PHSJD47V.js";
83
+ import {
84
+ header_default
85
+ } from "./chunks/chunk.CJZHKDBQ.js";
86
+ import "./chunks/chunk.JMP6V7XJ.js";
87
+ import {
88
+ icon_default
89
+ } from "./chunks/chunk.BOO4VTHX.js";
90
+ import "./chunks/chunk.JDXKGJ63.js";
87
91
  import {
88
92
  button_group_default
89
- } from "./chunks/chunk.K4ELZCXB.js";
93
+ } from "./chunks/chunk.JORZ3DML.js";
90
94
  import {
91
95
  checkbox_default
92
- } from "./chunks/chunk.MRAXEK5D.js";
93
- import "./chunks/chunk.Y4QKFZLK.js";
96
+ } from "./chunks/chunk.H5ZKCFYO.js";
97
+ import "./chunks/chunk.MZBIDOMW.js";
94
98
  import "./chunks/chunk.WFAJR3FN.js";
95
- import "./chunks/chunk.4CBN5LPQ.js";
99
+ import "./chunks/chunk.TTL762VF.js";
96
100
  import "./chunks/chunk.2XZKXVMR.js";
97
- import "./chunks/chunk.ERNEIORV.js";
98
- import "./chunks/chunk.PGCXJ2PT.js";
101
+ import "./chunks/chunk.3STW62TA.js";
102
+ import "./chunks/chunk.SHI4PSGX.js";
99
103
  import "./chunks/chunk.FA6V2WD6.js";
104
+ import "./chunks/chunk.ACTJFDNK.js";
100
105
  import {
101
106
  button_default
102
- } from "./chunks/chunk.2XCLA4MQ.js";
103
- import "./chunks/chunk.AWZ4FSAL.js";
104
- import "./chunks/chunk.HNRD7DBS.js";
105
- import "./chunks/chunk.N2I6HVX3.js";
106
- import "./chunks/chunk.XGXFE6IF.js";
107
+ } from "./chunks/chunk.UX22QVVR.js";
108
+ import "./chunks/chunk.YDMQ766U.js";
109
+ import "./chunks/chunk.CBR46SD4.js";
110
+ import "./chunks/chunk.OSBC36KQ.js";
107
111
  import "./chunks/chunk.LAB4YJYE.js";
108
112
  import "./chunks/chunk.A3SKDWCT.js";
109
- import "./chunks/chunk.2Z2GYRLO.js";
110
- import "./chunks/chunk.35PHCFSV.js";
113
+ import "./chunks/chunk.SZCGMXW5.js";
114
+ import "./chunks/chunk.XGXFE6IF.js";
115
+ import "./chunks/chunk.NII3J5OF.js";
116
+ import "./chunks/chunk.PJO6TM3T.js";
117
+ import "./chunks/chunk.2RF7KO5I.js";
111
118
  import {
112
119
  registerIconLibrary,
113
120
  unregisterIconLibrary
114
- } from "./chunks/chunk.JRXQK6LG.js";
121
+ } from "./chunks/chunk.7UVCYUNR.js";
115
122
  import "./chunks/chunk.6C4JXZZN.js";
116
- import "./chunks/chunk.5AAIHRMI.js";
117
- import "./chunks/chunk.RSONAU45.js";
118
- import "./chunks/chunk.PJO6TM3T.js";
123
+ import "./chunks/chunk.N4VSEIRQ.js";
119
124
  import "./chunks/chunk.AVTU2BGE.js";
120
125
  import {
121
126
  getBasePath,
122
127
  setBasePath
123
128
  } from "./chunks/chunk.C7624ITA.js";
124
- import "./chunks/chunk.OJ4KOC7R.js";
125
129
  import "./chunks/chunk.K55MKNUR.js";
126
- import "./chunks/chunk.MB3YZTYP.js";
127
- import "./chunks/chunk.WDX7XUUK.js";
128
- import "./chunks/chunk.4ZURABYO.js";
129
- import "./chunks/chunk.O7USYXBT.js";
130
+ import "./chunks/chunk.SJMMPKWP.js";
131
+ import "./chunks/chunk.TGVTAWOV.js";
132
+ import "./chunks/chunk.XVNL6NRN.js";
133
+ import "./chunks/chunk.A7IIJ2LL.js";
130
134
  import "./chunks/chunk.QNDC5KWA.js";
131
135
  export {
132
136
  button_default as SynButton,
@@ -134,6 +138,7 @@ export {
134
138
  checkbox_default as SynCheckbox,
135
139
  divider_default as SynDivider,
136
140
  drawer_default as SynDrawer,
141
+ header_default as SynHeader,
137
142
  icon_default as SynIcon,
138
143
  icon_button_default as SynIconButton,
139
144
  input_default as SynInput,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  getFormControls,
3
3
  serialize
4
- } from "../chunks/chunk.JSO3PKB4.js";
5
- import "../chunks/chunk.2Z2GYRLO.js";
4
+ } from "../chunks/chunk.KUO3KJOC.js";
5
+ import "../chunks/chunk.SZCGMXW5.js";
6
6
  import "../chunks/chunk.QNDC5KWA.js";
7
7
  export {
8
8
  getFormControls,
@@ -2,9 +2,9 @@ import "../chunks/chunk.NKIYFJN2.js";
2
2
  import {
3
3
  registerIconLibrary,
4
4
  unregisterIconLibrary
5
- } from "../chunks/chunk.JRXQK6LG.js";
5
+ } from "../chunks/chunk.7UVCYUNR.js";
6
6
  import "../chunks/chunk.6C4JXZZN.js";
7
- import "../chunks/chunk.5AAIHRMI.js";
7
+ import "../chunks/chunk.N4VSEIRQ.js";
8
8
  import "../chunks/chunk.C7624ITA.js";
9
9
  import "../chunks/chunk.QNDC5KWA.js";
10
10
  export {
@@ -131,26 +131,9 @@
131
131
  }
132
132
  ]
133
133
  },
134
- {
135
- "name": "syn-button-group",
136
- "description": "Button groups can be used to group related buttons into sections.\n---\n\n\n### **Slots:**\n - _default_ - One or more `<syn-button>` elements to display in the button group.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
137
- "attributes": [
138
- {
139
- "name": "label",
140
- "description": "A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\ndevices when interacting with the control and is strongly recommended.",
141
- "values": []
142
- }
143
- ],
144
- "references": [
145
- {
146
- "name": "Documentation",
147
- "url": "https://synergy.style/components/button-group"
148
- }
149
- ]
150
- },
151
134
  {
152
135
  "name": "syn-checkbox",
153
- "description": "Checkboxes allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **syn-blur** - Emitted when the checkbox loses focus.\n- **syn-change** - Emitted when the checked state changes.\n- **syn-focus** - Emitted when the checkbox gains focus.\n- **syn-input** - Emitted when the checkbox receives input.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the checkbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the checkbox.\n- **blur()** - Removes focus from the checkbox.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string.\n\n### **Slots:**\n - _default_ - The checkbox's label.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the checkbox's checked state.\n- **control--checked** - Matches the control part when the checkbox is checked.\n- **control--indeterminate** - Matches the control part when the checkbox is indeterminate.\n- **checked-icon** - The checked icon, an `<syn-icon>` element.\n- **indeterminate-icon** - The indeterminate icon, an `<syn-icon>` element.\n- **label** - The container that wraps the checkbox's label.",
136
+ "description": "Checkboxes allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **syn-blur** - Emitted when the checkbox loses focus.\n- **syn-change** - Emitted when the checked state changes.\n- **syn-focus** - Emitted when the checkbox gains focus.\n- **syn-input** - Emitted when the checkbox receives input.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the checkbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the checkbox.\n- **blur()** - Removes focus from the checkbox.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string.\n\n### **Slots:**\n - _default_ - The checkbox's label.\n- **help-text** - Text that describes how to use the checkbox. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the checkbox's checked state.\n- **control--checked** - Matches the control part when the checkbox is checked.\n- **control--indeterminate** - Matches the control part when the checkbox is indeterminate.\n- **checked-icon** - The checked icon, an `<syn-icon>` element.\n- **indeterminate-icon** - The indeterminate icon, an `<syn-icon>` element.\n- **label** - The container that wraps the checkbox's label.\n- **form-control-help-text** - The help text's wrapper.",
154
137
  "attributes": [
155
138
  { "name": "title", "values": [] },
156
139
  {
@@ -196,6 +179,11 @@
196
179
  "name": "required",
197
180
  "description": "Makes the checkbox a required field.",
198
181
  "values": []
182
+ },
183
+ {
184
+ "name": "help-text",
185
+ "description": "The checkbox's help text. If you need to display HTML, use the `help-text` slot instead.",
186
+ "values": []
199
187
  }
200
188
  ],
201
189
  "references": [
@@ -205,6 +193,23 @@
205
193
  }
206
194
  ]
207
195
  },
196
+ {
197
+ "name": "syn-button-group",
198
+ "description": "Button groups can be used to group related buttons into sections.\n---\n\n\n### **Slots:**\n - _default_ - One or more `<syn-button>` elements to display in the button group.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
199
+ "attributes": [
200
+ {
201
+ "name": "label",
202
+ "description": "A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\ndevices when interacting with the control and is strongly recommended.",
203
+ "values": []
204
+ }
205
+ ],
206
+ "references": [
207
+ {
208
+ "name": "Documentation",
209
+ "url": "https://synergy.style/components/button-group"
210
+ }
211
+ ]
212
+ },
208
213
  {
209
214
  "name": "syn-divider",
210
215
  "description": "Dividers are used to visually separate or group elements.\n---\n\n\n### **CSS Properties:**\n - **--color** - The color of the divider. _(default: undefined)_\n- **--width** - The width of the divider. _(default: undefined)_\n- **--spacing** - The spacing of the divider. _(default: undefined)_",
@@ -264,6 +269,23 @@
264
269
  }
265
270
  ]
266
271
  },
272
+ {
273
+ "name": "syn-header",
274
+ "description": "The <syn-header /> element provides a generic application header\nthat can be used to add applications name, toolbar and primary navigation.\n---\n\n\n### **Slots:**\n - _default_ - The label for the header.\n- **logo** - The logo that should be displayed. Will fall back to the SICK logo if not provided.\n- **meta-navigation** - The meta-navigation is used to add various application toolbar icons. Best used with `<syn-icon-button />` and `<syn-drop-down />`\n- **navigation** - This slot can be used to add an optional horizontal navigation\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **content** - The wrapper most content items reside\n- **logo** - The wrapper the application logo resides in\n- **label** - The element wrapping the application name\n- **meta-navigation** - The Item wrapping the optional application menu\n- **navigation** - The wrapper that is holding the optional top navigation section",
275
+ "attributes": [
276
+ {
277
+ "name": "label",
278
+ "description": "The headers label. If you need to display HTML, use the `label` slot instead.",
279
+ "values": []
280
+ }
281
+ ],
282
+ "references": [
283
+ {
284
+ "name": "Documentation",
285
+ "url": "https://synergy.style/components/header"
286
+ }
287
+ ]
288
+ },
267
289
  {
268
290
  "name": "syn-icon",
269
291
  "description": "Icons are symbols that can be used to represent various options within an application.\n---\n\n\n### **Events:**\n - **syn-load** - Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit.\n- **syn-error** - Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit.\n\n### **CSS Parts:**\n - **svg** - The internal SVG element.\n- **use** - The <use> element generated when using `spriteSheet: true`",
@@ -611,7 +633,7 @@
611
633
  },
612
634
  {
613
635
  "name": "syn-popup",
614
- "description": "Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.\n---\n\n\n### **Events:**\n - **syn-reposition** - Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it.\n\n### **Methods:**\n - **reposition()** - Forces the popup to recalculate and reposition itself.\n\n### **Slots:**\n - _default_ - The popup's content.\n- **anchor** - The element the popup will be anchored to. If the anchor lives outside of the popup, you can use the `anchor` attribute or property instead.\n\n### **CSS Properties:**\n - **--arrow-size** - The size of the arrow. Note that an arrow won't be shown unless the `arrow` attribute is used. _(default: 6px)_\n- **--arrow-color** - The color of the arrow. _(default: var(--syn-color-neutral-0))_\n- **--auto-size-available-width** - A read-only custom property that determines the amount of width the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n- **--auto-size-available-height** - A read-only custom property that determines the amount of height the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n\n### **CSS Parts:**\n - **arrow** - The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and maybe a border or box shadow.\n- **popup** - The popup's container. Useful for setting a background color, box shadow, etc.",
636
+ "description": "Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.\n---\n\n\n### **Events:**\n - **syn-reposition** - Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it.\n\n### **Methods:**\n - **reposition()** - Forces the popup to recalculate and reposition itself.\n\n### **Slots:**\n - _default_ - The popup's content.\n- **anchor** - The element the popup will be anchored to. If the anchor lives outside of the popup, you can use the `anchor` attribute or property instead.\n\n### **CSS Properties:**\n - **--arrow-size** - The size of the arrow. Note that an arrow won't be shown unless the `arrow` attribute is used. _(default: 6px)_\n- **--arrow-color** - The color of the arrow. _(default: var(--syn-color-neutral-0))_\n- **--auto-size-available-width** - A read-only custom property that determines the amount of width the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n- **--auto-size-available-height** - A read-only custom property that determines the amount of height the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n\n### **CSS Parts:**\n - **arrow** - The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and maybe a border or box shadow.\n- **popup** - The popup's container. Useful for setting a background color, box shadow, etc.\n- **hover-bridge** - The hover bridge element. Only available when the `hover-bridge` option is enabled.",
615
637
  "attributes": [
616
638
  {
617
639
  "name": "anchor",
@@ -744,6 +766,11 @@
744
766
  "name": "auto-size-padding",
745
767
  "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
746
768
  "values": []
769
+ },
770
+ {
771
+ "name": "hover-bridge",
772
+ "description": "When a gap exists between the anchor and the popup element, this option will add a \"hover bridge\" that fills the\ngap using an invisible element. This makes listening for events such as `mouseenter` and `mouseleave` more sane\nbecause the pointer never technically leaves the element. The hover bridge will only be drawn when the popover is\nactive.",
773
+ "values": []
747
774
  }
748
775
  ],
749
776
  "references": [
@@ -817,7 +844,7 @@
817
844
  },
818
845
  {
819
846
  "name": "syn-radio-group",
820
- "description": "Radio groups are used to group multiple [radios](/components/radio) or [radio buttons](/components/radio-button) so they function as a single form control.\n---\n\n\n### **Events:**\n - **syn-change** - Emitted when the radio group's selected value changes.\n- **syn-input** - Emitted when the radio group receives user input.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity(): _boolean_** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The default slot where `<syn-radio>` or `<syn-radio-button>` elements are placed.\n- **label** - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The input's wrapper.\n- **form-control-help-text** - The help text's wrapper.\n- **button-group** - The button group that wraps radio buttons.\n- **button-group__base** - The button group's `base` part.",
847
+ "description": "Radio groups are used to group multiple [radios](/components/radio) or [radio buttons](/components/radio-button) so they function as a single form control.\n---\n\n\n### **Events:**\n - **syn-change** - Emitted when the radio group's selected value changes.\n- **syn-input** - Emitted when the radio group receives user input.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity(): _boolean_** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The default slot where `<syn-radio>` or `<syn-radio-button>` elements are placed.\n- **label** - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.\n- **help-text** - Text that describes how to use the radio group. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The input's wrapper.\n- **form-control-help-text** - The help text's wrapper.\n- **button-group** - The button group that wraps radio buttons.\n- **button-group__base** - The button group's `base` part.",
821
848
  "attributes": [
822
849
  {
823
850
  "name": "label",
@@ -978,7 +1005,7 @@
978
1005
  },
979
1006
  {
980
1007
  "name": "syn-switch",
981
- "description": "Switches allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **syn-blur** - Emitted when the control loses focus.\n- **syn-change** - Emitted when the control's checked state changes.\n- **syn-input** - Emitted when the control receives input.\n- **syn-focus** - Emitted when the control gains focus.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the switch.\n- **focus(options: _FocusOptions_)** - Sets focus on the switch.\n- **blur()** - Removes focus from the switch.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The switch's label.\n\n### **CSS Properties:**\n - **--width** - The width of the switch. _(default: undefined)_\n- **--height** - The height of the switch. _(default: undefined)_\n- **--thumb-size** - The size of the thumb. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The control that houses the switch's thumb.\n- **thumb** - The switch's thumb.\n- **label** - The switch's label.",
1008
+ "description": "Switches allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **syn-blur** - Emitted when the control loses focus.\n- **syn-change** - Emitted when the control's checked state changes.\n- **syn-input** - Emitted when the control receives input.\n- **syn-focus** - Emitted when the control gains focus.\n- **syn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the switch.\n- **focus(options: _FocusOptions_)** - Sets focus on the switch.\n- **blur()** - Removes focus from the switch.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The switch's label.\n- **help-text** - Text that describes how to use the switch. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Properties:**\n - **--width** - The width of the switch. _(default: undefined)_\n- **--height** - The height of the switch. _(default: undefined)_\n- **--thumb-size** - The size of the thumb. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The control that houses the switch's thumb.\n- **thumb** - The switch's thumb.\n- **label** - The switch's label.\n- **form-control-help-text** - The help text's wrapper.",
982
1009
  "attributes": [
983
1010
  { "name": "title", "values": [] },
984
1011
  {
@@ -1019,6 +1046,11 @@
1019
1046
  "name": "required",
1020
1047
  "description": "Makes the switch a required field.",
1021
1048
  "values": []
1049
+ },
1050
+ {
1051
+ "name": "help-text",
1052
+ "description": "The switch's help text. If you need to display HTML, use the `help-text` slot instead.",
1053
+ "values": []
1022
1054
  }
1023
1055
  ],
1024
1056
  "references": [
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "url": "https://www.sick.com"
5
5
  },
6
6
  "name": "@synergy-design-system/components",
7
- "version": "1.8.0",
7
+ "version": "1.10.0",
8
8
  "description": "",
9
9
  "repository": {
10
10
  "type": "git",
@@ -58,7 +58,6 @@
58
58
  "change-case": "^5.4.2",
59
59
  "command-line-args": "^5.2.1",
60
60
  "comment-parser": "^1.4.1",
61
- "custom-element-jet-brains-integration": "^1.4.3",
62
61
  "custom-element-vs-code-integration": "^1.2.2",
63
62
  "del": "^7.1.0",
64
63
  "esbuild": "^0.20.0",
@@ -91,7 +90,7 @@
91
90
  "vue-tsc": "^1.8.27",
92
91
  "@synergy-design-system/eslint-config-syn": "0.1.0",
93
92
  "@synergy-design-system/stylelint-config-syn": "0.1.0",
94
- "@synergy-design-system/tokens": "1.7.0"
93
+ "@synergy-design-system/tokens": "1.8.0"
95
94
  },
96
95
  "release": {
97
96
  "branches": [
@@ -158,7 +157,6 @@
158
157
  "composed-offset-position": "^0.0.4",
159
158
  "lit": "^3.1.2"
160
159
  },
161
- "web-types": "./dist/web-types.json",
162
160
  "scripts": {
163
161
  "build": "node scripts/build.js",
164
162
  "test": "web-test-runner --group default",
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/textarea/textarea.styles.ts"],
4
- "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { css } from 'lit';\nimport customStyles from './textarea.custom.styles.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport formControlStyles from '../../styles/form-control.styles.js';\n\nexport default css`\n\t/* stylelint-disable */\n ${componentStyles}\n ${formControlStyles}\n\n :host {\n display: block;\n }\n\n .textarea {\n display: flex;\n align-items: center;\n position: relative;\n width: 100%;\n font-family: var(--syn-input-font-family);\n font-weight: var(--syn-input-font-weight);\n line-height: var(--syn-line-height-normal);\n letter-spacing: var(--syn-input-letter-spacing);\n vertical-align: middle;\n transition:\n var(--syn-transition-fast) color,\n var(--syn-transition-fast) border,\n var(--syn-transition-fast) box-shadow,\n var(--syn-transition-fast) background-color;\n cursor: text;\n }\n\n /* Standard textareas */\n .textarea--standard {\n background-color: var(--syn-input-background-color);\n border: solid var(--syn-input-border-width) var(--syn-input-border-color);\n }\n\n .textarea--standard:hover:not(.textarea--disabled) {\n background-color: var(--syn-input-background-color-hover);\n border-color: var(--syn-input-border-color-hover);\n }\n .textarea--standard:hover:not(.textarea--disabled) .textarea__control {\n color: var(--syn-input-color-hover);\n }\n\n .textarea--standard.textarea--focused:not(.textarea--disabled) {\n background-color: var(--syn-input-background-color-focus);\n border-color: var(--syn-input-border-color-focus);\n color: var(--syn-input-color-focus);\n box-shadow: 0 0 0 var(--syn-focus-ring-width) var(--syn-input-focus-ring-color);\n }\n\n .textarea--standard.textarea--focused:not(.textarea--disabled) .textarea__control {\n color: var(--syn-input-color-focus);\n }\n\n .textarea--standard.textarea--disabled {\n background-color: var(--syn-input-background-color-disabled);\n border-color: var(--syn-input-border-color-disabled);\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .textarea--standard.textarea--disabled .textarea__control {\n color: var(--syn-input-color-disabled);\n }\n\n .textarea--standard.textarea--disabled .textarea__control::placeholder {\n color: var(--syn-input-placeholder-color-disabled);\n }\n\n /* Readonly textareas */\n .textarea--readonly {\n border: none;\n background-color: var(--syn-input-readonly-background-color);\n color: var(--syn-input-color);\n }\n\n .textarea--readonly:hover:not(.textarea--disabled) {\n background-color: var(--syn-input-readonly-background-color-hover);\n }\n\n .textarea--readonly.textarea--focused:not(.textarea--disabled) {\n background-color: var(--syn-input-readonly-background-color-focus);\n outline: var(--syn-focus-ring);\n outline-offset: var(--syn-focus-ring-offset);\n }\n\n .textarea--readonly.textarea--disabled {\n background-color: var(--syn-input-readonly-background-color-disabled);\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .textarea__control {\n flex: 1 1 auto;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: 1.4;\n color: var(--syn-input-color);\n border: none;\n background: none;\n box-shadow: none;\n cursor: inherit;\n -webkit-appearance: none;\n }\n\n .textarea__control::-webkit-search-decoration,\n .textarea__control::-webkit-search-cancel-button,\n .textarea__control::-webkit-search-results-button,\n .textarea__control::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n\n .textarea__control::placeholder {\n color: var(--syn-input-placeholder-color);\n user-select: none;\n -webkit-user-select: none;\n }\n\n .textarea__control:focus {\n outline: none;\n }\n\n /*\n * Size modifiers\n */\n\n .textarea--small {\n border-radius: var(--syn-input-border-radius-small);\n font-size: var(--syn-input-font-size-small);\n }\n\n .textarea--small .textarea__control {\n padding: 0.5em var(--syn-input-spacing-small);\n }\n\n .textarea--medium {\n border-radius: var(--syn-input-border-radius-medium);\n font-size: var(--syn-input-font-size-medium);\n }\n\n .textarea--medium .textarea__control {\n padding: 0.5em var(--syn-input-spacing-medium);\n }\n\n .textarea--large {\n border-radius: var(--syn-input-border-radius-large);\n font-size: var(--syn-input-font-size-large);\n }\n\n .textarea--large .textarea__control {\n padding: 0.5em var(--syn-input-spacing-large);\n }\n\n /*\n * Resize types\n */\n\n .textarea--resize-none .textarea__control {\n resize: none;\n }\n\n .textarea--resize-vertical .textarea__control {\n resize: vertical;\n }\n\n .textarea--resize-auto .textarea__control {\n height: auto;\n resize: none;\n overflow-y: hidden;\n }\n\n ${customStyles}\n`;\n\n"],
5
- "mappings": ";;;;;;;;;;;AAMA,SAAS,WAAW;AAKpB,IAAO,0BAAQ;AAAA;AAAA,IAEX,wBAAe;AAAA,IACf,2BAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuKjB,8BAAY;AAAA;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/icon-button/icon-button.styles.ts"],
4
- "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { css } from 'lit';\nimport customStyles from './icon-button.custom.styles.js';\nimport componentStyles from '../../styles/component.styles.js';\n\nexport default css`\n\t/* stylelint-disable */\n ${componentStyles}\n\n :host {\n display: inline-block;\n color: var(--syn-color-neutral-600);\n }\n\n .icon-button {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n background: none;\n border: none;\n border-radius: var(--syn-border-radius-medium);\n font-size: inherit;\n color: inherit;\n padding: var(--syn-spacing-x-small);\n cursor: pointer;\n transition: var(--syn-transition-x-fast) color;\n -webkit-appearance: none;\n }\n\n .icon-button:hover:not(.icon-button--disabled),\n .icon-button:focus-visible:not(.icon-button--disabled) {\n color: var(--syn-color-primary-600);\n }\n\n .icon-button:active:not(.icon-button--disabled) {\n color: var(--syn-color-primary-700);\n }\n\n .icon-button:focus {\n outline: none;\n }\n\n .icon-button--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .icon-button:focus-visible {\n outline: var(--syn-focus-ring);\n outline-offset: var(--syn-focus-ring-offset);\n }\n\n .icon-button__icon {\n pointer-events: none;\n }\n\n ${customStyles}\n`;\n\n"],
5
- "mappings": ";;;;;;;;AAMA,SAAS,WAAW;AAIpB,IAAO,6BAAQ;AAAA;AAAA,IAEX,wBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiDf,iCAAY;AAAA;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/internal/animate.ts", "../../src/internal/offset.ts", "../../src/internal/scroll.ts", "../../src/internal/event.ts"],
4
- "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\n/**\n * Animates an element using keyframes. Returns a promise that resolves after the animation completes or gets canceled.\n */\nexport function animateTo(el: HTMLElement, keyframes: Keyframe[], options?: KeyframeAnimationOptions) {\n return new Promise(resolve => {\n if (options?.duration === Infinity) {\n throw new Error('Promise-based animations must be finite.');\n }\n\n const animation = el.animate(keyframes, {\n ...options,\n duration: prefersReducedMotion() ? 0 : options!.duration\n });\n\n animation.addEventListener('cancel', resolve, { once: true });\n animation.addEventListener('finish', resolve, { once: true });\n });\n}\n\n/** Parses a CSS duration and returns the number of milliseconds. */\nexport function parseDuration(delay: number | string) {\n delay = delay.toString().toLowerCase();\n\n if (delay.indexOf('ms') > -1) {\n return parseFloat(delay);\n }\n\n if (delay.indexOf('s') > -1) {\n return parseFloat(delay) * 1000;\n }\n\n return parseFloat(delay);\n}\n\n/** Tells if the user has enabled the \"reduced motion\" setting in their browser or OS. */\nexport function prefersReducedMotion() {\n const query = window.matchMedia('(prefers-reduced-motion: reduce)');\n return query.matches;\n}\n\n/**\n * Stops all active animations on the target element. Returns a promise that resolves after all animations are canceled.\n */\nexport function stopAnimations(el: HTMLElement) {\n return Promise.all(\n el.getAnimations().map(animation => {\n return new Promise(resolve => {\n const handleAnimationEvent = requestAnimationFrame(resolve);\n\n animation.addEventListener('cancel', () => handleAnimationEvent, { once: true });\n animation.addEventListener('finish', () => handleAnimationEvent, { once: true });\n animation.cancel();\n });\n })\n );\n}\n\n/**\n * We can't animate `height: auto`, but we can calculate the height and shim keyframes by replacing it with the\n * element's scrollHeight before the animation.\n */\nexport function shimKeyframesHeightAuto(keyframes: Keyframe[], calculatedHeight: number) {\n return keyframes.map(keyframe => ({\n ...keyframe,\n height: keyframe.height === 'auto' ? `${calculatedHeight}px` : keyframe.height\n }));\n}\n", "// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\n/**\n * Returns an element's offset relative to its parent. Similar to element.offsetTop and element.offsetLeft, except the\n * parent doesn't have to be positioned relative or absolute.\n *\n * NOTE: This was created to work around what appears to be a bug in Chrome where a slotted element's offsetParent seems\n * to ignore elements inside the surrounding shadow DOM: https://bugs.chromium.org/p/chromium/issues/detail?id=920069\n */\nexport function getOffset(element: HTMLElement, parent: HTMLElement) {\n return {\n top: Math.round(element.getBoundingClientRect().top - parent.getBoundingClientRect().top),\n left: Math.round(element.getBoundingClientRect().left - parent.getBoundingClientRect().left)\n };\n}\n", "// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { getOffset } from './offset.js';\n\nconst locks = new Set();\n\n/** Returns the width of the document's scrollbar */\nfunction getScrollbarWidth() {\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n}\n\n/**\n * Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\n * without premature unlocking.\n */\nexport function lockBodyScrolling(lockingEl: HTMLElement) {\n locks.add(lockingEl);\n\n // When the first lock is created, set the scroll lock size to match the scrollbar's width to prevent content from\n // shifting. We only do this on the first lock because the scrollbar width will measure zero after overflow is hidden.\n if (!document.body.classList.contains('syn-scroll-lock')) {\n const scrollbarWidth = getScrollbarWidth(); // must be measured before the `syn-scroll-lock` class is applied\n document.body.classList.add('syn-scroll-lock');\n document.body.style.setProperty('--syn-scroll-lock-size', `${scrollbarWidth}px`);\n }\n}\n\n/**\n * Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.\n */\nexport function unlockBodyScrolling(lockingEl: HTMLElement) {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n document.body.classList.remove('syn-scroll-lock');\n document.body.style.removeProperty('--syn-scroll-lock-size');\n }\n}\n\n/** Scrolls an element into view of its container. If the element is already in view, nothing will happen. */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n behavior: 'smooth' | 'auto' = 'smooth'\n) {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (offsetLeft < minX) {\n container.scrollTo({ left: offsetLeft, behavior });\n } else if (offsetLeft + element.clientWidth > maxX) {\n container.scrollTo({ left: offsetLeft - container.offsetWidth + element.clientWidth, behavior });\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (offsetTop < minY) {\n container.scrollTo({ top: offsetTop, behavior });\n } else if (offsetTop + element.clientHeight > maxY) {\n container.scrollTo({ top: offsetTop - container.offsetHeight + element.clientHeight, behavior });\n }\n }\n}\n", "// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\n/** Waits for a specific event to be emitted from an element. Ignores events that bubble up from child elements. */\nexport function waitForEvent(el: HTMLElement, eventName: string) {\n return new Promise<void>(resolve => {\n function done(event: Event) {\n if (event.target === el) {\n el.removeEventListener(eventName, done);\n resolve();\n }\n }\n\n el.addEventListener(eventName, done);\n });\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/internal/form.ts"],
4
- "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { SynergyFormControl } from '../internal/synergy-element.js';\nimport type SynButton from '../components/button/button.js';\n\n//\n// We store a WeakMap of forms + controls so we can keep references to all Synergy controls within a given form. As\n// elements connect and disconnect to/from the DOM, their containing form is used as the key and the form control is\n// added and removed from the form's set, respectively.\n//\nexport const formCollections: WeakMap<HTMLFormElement, Set<SynergyFormControl>> = new WeakMap();\n\n//\n// We store a WeakMap of reportValidity() overloads so we can override it when form controls connect to the DOM and\n// restore the original behavior when they disconnect.\n//\nconst reportValidityOverloads: WeakMap<HTMLFormElement, () => boolean> = new WeakMap();\nconst checkValidityOverloads: WeakMap<HTMLFormElement, () => boolean> = new WeakMap();\n\n//\n// We store a Set of controls that users have interacted with. This allows us to determine the interaction state\n// without littering the DOM with additional data attributes.\n//\nconst userInteractedControls: WeakSet<SynergyFormControl> = new WeakSet();\n\n//\n// We store a WeakMap of interactions for each form control so we can track when all conditions are met for validation.\n//\nconst interactions = new WeakMap<SynergyFormControl, string[]>();\n\nexport interface FormControlControllerOptions {\n /** A function that returns the form containing the form control. */\n form: (input: SynergyFormControl) => HTMLFormElement | null;\n /** A function that returns the form control's name, which will be submitted with the form data. */\n name: (input: SynergyFormControl) => string;\n /** A function that returns the form control's current value. */\n value: (input: SynergyFormControl) => unknown | unknown[];\n /** A function that returns the form control's default value. */\n defaultValue: (input: SynergyFormControl) => unknown | unknown[];\n /** A function that returns the form control's current disabled state. If disabled, the value won't be submitted. */\n disabled: (input: SynergyFormControl) => boolean;\n /**\n * A function that maps to the form control's reportValidity() function. When the control is invalid, this will\n * prevent submission and trigger the browser's constraint violation warning.\n */\n reportValidity: (input: SynergyFormControl) => boolean;\n\n /**\n * A function that maps to the form control's `checkValidity()` function. When the control is invalid, this will return false.\n * this is helpful is you want to check validation without triggering the native browser constraint violation warning.\n */\n checkValidity: (input: SynergyFormControl) => boolean;\n /** A function that sets the form control's value */\n setValue: (input: SynergyFormControl, value: unknown) => void;\n /**\n * An array of event names to listen to. When all events in the list are emitted, the control will receive validity\n * states such as user-valid and user-invalid.user interacted validity states. */\n assumeInteractionOn: string[];\n}\n\n/** A reactive controller to allow form controls to participate in form submission, validation, etc. */\nexport class FormControlController implements ReactiveController {\n host: SynergyFormControl & ReactiveControllerHost;\n form?: HTMLFormElement | null;\n options: FormControlControllerOptions;\n\n constructor(host: ReactiveControllerHost & SynergyFormControl, options?: Partial<FormControlControllerOptions>) {\n (this.host = host).addController(this);\n this.options = {\n form: input => {\n // If there's a form attribute, use it to find the target form by id\n // Controls may not always reflect the 'form' property. For example, `<syn-button>` doesn't reflect.\n const formId = input.form;\n\n if (formId) {\n const root = input.getRootNode() as Document | ShadowRoot;\n\n const form = root.getElementById(formId);\n\n if (form) {\n return form as HTMLFormElement;\n }\n }\n\n return input.closest('form');\n },\n name: input => input.name,\n value: input => input.value,\n defaultValue: input => input.defaultValue,\n disabled: input => input.disabled ?? false,\n reportValidity: input => (typeof input.reportValidity === 'function' ? input.reportValidity() : true),\n checkValidity: input => (typeof input.checkValidity === 'function' ? input.checkValidity() : true),\n setValue: (input, value: string) => (input.value = value),\n assumeInteractionOn: ['syn-input'],\n ...options\n };\n }\n\n hostConnected() {\n const form = this.options.form(this.host);\n\n if (form) {\n this.attachForm(form);\n }\n\n // Listen for interactions\n interactions.set(this.host, []);\n this.options.assumeInteractionOn.forEach(event => {\n this.host.addEventListener(event, this.handleInteraction);\n });\n }\n\n hostDisconnected() {\n this.detachForm();\n\n // Clean up interactions\n interactions.delete(this.host);\n this.options.assumeInteractionOn.forEach(event => {\n this.host.removeEventListener(event, this.handleInteraction);\n });\n }\n\n hostUpdated() {\n const form = this.options.form(this.host);\n\n // Detach if the form no longer exists\n if (!form) {\n this.detachForm();\n }\n\n // If the form has changed, reattach it\n if (form && this.form !== form) {\n this.detachForm();\n this.attachForm(form);\n }\n\n if (this.host.hasUpdated) {\n this.setValidity(this.host.validity.valid);\n }\n }\n\n private attachForm(form?: HTMLFormElement) {\n if (form) {\n this.form = form;\n\n // Add this element to the form's collection\n if (formCollections.has(this.form)) {\n formCollections.get(this.form)!.add(this.host);\n } else {\n formCollections.set(this.form, new Set<SynergyFormControl>([this.host]));\n }\n\n this.form.addEventListener('formdata', this.handleFormData);\n this.form.addEventListener('submit', this.handleFormSubmit);\n this.form.addEventListener('reset', this.handleFormReset);\n\n // Overload the form's reportValidity() method so it looks at Synergy form controls\n if (!reportValidityOverloads.has(this.form)) {\n reportValidityOverloads.set(this.form, this.form.reportValidity);\n this.form.reportValidity = () => this.reportFormValidity();\n }\n\n // Overload the form's checkValidity() method so it looks at Synergy form controls\n if (!checkValidityOverloads.has(this.form)) {\n checkValidityOverloads.set(this.form, this.form.checkValidity);\n this.form.checkValidity = () => this.checkFormValidity();\n }\n } else {\n this.form = undefined;\n }\n }\n\n private detachForm() {\n if (!this.form) return;\n\n const formCollection = formCollections.get(this.form);\n\n if (!formCollection) {\n return;\n }\n\n // Remove this host from the form's collection\n formCollection.delete(this.host);\n\n // Check to make sure there's no other form controls in the collection. If we do this\n // without checking if any other controls are still in the collection, then we will wipe out the\n // validity checks for all other elements.\n // see: https://github.com/synergy-design-system/synergy/issues/1703\n if (formCollection.size <= 0) {\n this.form.removeEventListener('formdata', this.handleFormData);\n this.form.removeEventListener('submit', this.handleFormSubmit);\n this.form.removeEventListener('reset', this.handleFormReset);\n\n // Remove the overload and restore the original method\n if (reportValidityOverloads.has(this.form)) {\n this.form.reportValidity = reportValidityOverloads.get(this.form)!;\n reportValidityOverloads.delete(this.form);\n }\n\n if (checkValidityOverloads.has(this.form)) {\n this.form.checkValidity = checkValidityOverloads.get(this.form)!;\n checkValidityOverloads.delete(this.form);\n }\n\n // So it looks weird here to not always set the form to undefined. But I _think_ if we unattach this.form here,\n // we end up in this fun spot where future validity checks don't have a reference to the form validity handler.\n // First form element in sets the validity handler. So we can't clean up `this.form` until there are no other form elements in the form.\n this.form = undefined;\n }\n }\n\n private handleFormData = (event: FormDataEvent) => {\n const disabled = this.options.disabled(this.host);\n const name = this.options.name(this.host);\n const value = this.options.value(this.host);\n\n // For buttons, we only submit the value if they were the submitter. This is currently done in doAction() by\n // injecting the name/value on a temporary button, so we can just skip them here.\n const isButton = this.host.tagName.toLowerCase() === 'syn-button';\n\n if (!disabled && !isButton && typeof name === 'string' && name.length > 0 && typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n (value as unknown[]).forEach(val => {\n event.formData.append(name, (val as string | number | boolean).toString());\n });\n } else {\n event.formData.append(name, (value as string | number | boolean).toString());\n }\n }\n };\n\n private handleFormSubmit = (event: Event) => {\n const disabled = this.options.disabled(this.host);\n const reportValidity = this.options.reportValidity;\n\n // Update the interacted state for all controls when the form is submitted\n if (this.form && !this.form.noValidate) {\n formCollections.get(this.form)?.forEach(control => {\n this.setUserInteracted(control, true);\n });\n }\n\n if (this.form && !this.form.noValidate && !disabled && !reportValidity(this.host)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n\n private handleFormReset = () => {\n this.options.setValue(this.host, this.options.defaultValue(this.host));\n this.setUserInteracted(this.host, false);\n interactions.set(this.host, []);\n };\n\n private handleInteraction = (event: Event) => {\n const emittedEvents = interactions.get(this.host)!;\n\n if (!emittedEvents.includes(event.type)) {\n emittedEvents.push(event.type);\n }\n\n // Mark it as user-interacted as soon as all associated events have been emitted\n if (emittedEvents.length === this.options.assumeInteractionOn.length) {\n this.setUserInteracted(this.host, true);\n }\n };\n\n private checkFormValidity = () => {\n //\n // This is very similar to the `reportFormValidity` function, but it does not trigger native constraint validation\n // Allow the user to simply check if the form is valid and handling validity in their own way.\n //\n // We preserve the original method in a WeakMap, but we don't call it from the overload because that would trigger\n // validations in an unexpected order. When the element disconnects, we revert to the original behavior. This won't\n // be necessary once we can use ElementInternals.\n //\n // Note that we're also honoring the form's novalidate attribute.\n //\n if (this.form && !this.form.noValidate) {\n // This seems sloppy, but checking all elements will cover native inputs, Synergy inputs, and other custom\n // elements that support the constraint validation API.\n const elements = this.form.querySelectorAll<HTMLInputElement>('*');\n\n for (const element of elements) {\n if (typeof element.checkValidity === 'function') {\n if (!element.checkValidity()) {\n return false;\n }\n }\n }\n }\n\n return true;\n };\n\n private reportFormValidity = () => {\n //\n // Synergy form controls work hard to act like regular form controls. They support the Constraint Validation API\n // and its associated methods such as setCustomValidity() and reportValidity(). However, the HTMLFormElement also\n // has a reportValidity() method that will trigger validation on all child controls. Since we're not yet using\n // ElementInternals, we need to overload this method so it looks for any element with the reportValidity() method.\n //\n // We preserve the original method in a WeakMap, but we don't call it from the overload because that would trigger\n // validations in an unexpected order. When the element disconnects, we revert to the original behavior. This won't\n // be necessary once we can use ElementInternals.\n //\n // Note that we're also honoring the form's novalidate attribute.\n //\n if (this.form && !this.form.noValidate) {\n // This seems sloppy, but checking all elements will cover native inputs, Synergy inputs, and other custom\n // elements that support the constraint validation API.\n const elements = this.form.querySelectorAll<HTMLInputElement>('*');\n\n for (const element of elements) {\n if (typeof element.reportValidity === 'function') {\n if (!element.reportValidity()) {\n return false;\n }\n }\n }\n }\n\n return true;\n };\n\n private setUserInteracted(el: SynergyFormControl, hasInteracted: boolean) {\n if (hasInteracted) {\n userInteractedControls.add(el);\n } else {\n userInteractedControls.delete(el);\n }\n\n el.requestUpdate();\n }\n\n private doAction(type: 'submit' | 'reset', submitter?: HTMLInputElement | SynButton) {\n if (this.form) {\n const button = document.createElement('button');\n button.type = type;\n button.style.position = 'absolute';\n button.style.width = '0';\n button.style.height = '0';\n button.style.clipPath = 'inset(50%)';\n button.style.overflow = 'hidden';\n button.style.whiteSpace = 'nowrap';\n\n // Pass name, value, and form attributes through to the temporary button\n if (submitter) {\n button.name = submitter.name;\n button.value = submitter.value;\n\n ['formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget'].forEach(attr => {\n if (submitter.hasAttribute(attr)) {\n button.setAttribute(attr, submitter.getAttribute(attr)!);\n }\n });\n }\n\n this.form.append(button);\n button.click();\n button.remove();\n }\n }\n\n /** Returns the associated `<form>` element, if one exists. */\n getForm() {\n return this.form ?? null;\n }\n\n /** Resets the form, restoring all the control to their default value */\n reset(submitter?: HTMLInputElement | SynButton) {\n this.doAction('reset', submitter);\n }\n\n /** Submits the form, triggering validation and form data injection. */\n submit(submitter?: HTMLInputElement | SynButton) {\n // Calling form.submit() bypasses the submit event and constraint validation. To prevent this, we can inject a\n // native submit button into the form, \"click\" it, then remove it to simulate a standard form submission.\n this.doAction('submit', submitter);\n }\n\n /**\n * Synchronously sets the form control's validity. Call this when you know the future validity but need to update\n * the host element immediately, i.e. before Lit updates the component in the next update.\n */\n setValidity(isValid: boolean) {\n const host = this.host;\n const hasInteracted = Boolean(userInteractedControls.has(host));\n const required = Boolean(host.required);\n\n //\n // We're mapping the following \"states\" to data attributes. In the future, we can use ElementInternals.states to\n // create a similar mapping, but instead of [data-invalid] it will look like :--invalid.\n //\n // See this RFC for more details: https://github.com/synergy-design-system/synergy/issues/1011\n //\n host.toggleAttribute('data-required', required);\n host.toggleAttribute('data-optional', !required);\n host.toggleAttribute('data-invalid', !isValid);\n host.toggleAttribute('data-valid', isValid);\n host.toggleAttribute('data-user-invalid', !isValid && hasInteracted);\n host.toggleAttribute('data-user-valid', isValid && hasInteracted);\n }\n\n /**\n * Updates the form control's validity based on the current value of `host.validity.valid`. Call this when anything\n * that affects constraint validation changes so the component receives the correct validity states.\n */\n updateValidity() {\n const host = this.host;\n this.setValidity(host.validity.valid);\n }\n\n /**\n * Dispatches a non-bubbling, cancelable custom event of type `syn-invalid`.\n * If the `syn-invalid` event will be cancelled then the original `invalid`\n * event (which may have been passed as argument) will also be cancelled.\n * If no original `invalid` event has been passed then the `syn-invalid`\n * event will be cancelled before being dispatched.\n */\n emitInvalidEvent(originalInvalidEvent?: Event) {\n const slInvalidEvent = new CustomEvent<Record<PropertyKey, never>>('syn-invalid', {\n bubbles: false,\n composed: false,\n cancelable: true,\n detail: {}\n });\n\n if (!originalInvalidEvent) {\n slInvalidEvent.preventDefault();\n }\n\n if (!this.host.dispatchEvent(slInvalidEvent)) {\n originalInvalidEvent?.preventDefault();\n }\n }\n}\n\n/*\n * Predefined common validity states.\n * All of them are read-only.\n */\n\n// A validity state object that represents `valid`\nexport const validValidityState: ValidityState = Object.freeze({\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valid: true,\n valueMissing: false\n});\n\n// A validity state object that represents `value missing`\nexport const valueMissingValidityState: ValidityState = Object.freeze({\n ...validValidityState,\n valid: false,\n valueMissing: true\n});\n\n// A validity state object that represents a custom error\nexport const customErrorValidityState: ValidityState = Object.freeze({\n ...validValidityState,\n valid: false,\n customError: true\n});\n"],
5
- "mappings": "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",
6
- "names": []
7
- }