@synergy-design-system/components 1.4.1 → 1.5.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 (169) hide show
  1. package/dist/chunks/chunk.3B24TYVN.js +51 -0
  2. package/dist/chunks/chunk.3B24TYVN.js.map +7 -0
  3. package/dist/chunks/chunk.3HPG73GG.js +132 -0
  4. package/dist/chunks/chunk.3HPG73GG.js.map +7 -0
  5. package/dist/chunks/chunk.4KLCSMRA.js +96 -0
  6. package/dist/chunks/chunk.4KLCSMRA.js.map +7 -0
  7. package/dist/chunks/{chunk.A77SRYT2.js → chunk.4ZO3EKCL.js} +2 -2
  8. package/dist/chunks/{chunk.OSOFK3JT.js → chunk.5NJ7WWJW.js} +2 -2
  9. package/dist/chunks/{chunk.QTQBU2M5.js → chunk.63IJYG6Q.js} +2 -2
  10. package/dist/chunks/chunk.6XU6OLZ3.js +310 -0
  11. package/dist/chunks/chunk.6XU6OLZ3.js.map +7 -0
  12. package/dist/chunks/{chunk.6LIMUIEF.js → chunk.7BHGTNHS.js} +2 -2
  13. package/dist/chunks/chunk.7HS3TULI.js +12 -0
  14. package/dist/chunks/chunk.7HS3TULI.js.map +7 -0
  15. package/dist/chunks/{chunk.GM3M672E.js → chunk.A4YWJJLD.js} +2 -2
  16. package/dist/chunks/{chunk.SPBKTD7Y.js → chunk.AVJQ2BSM.js} +2 -2
  17. package/dist/chunks/chunk.BQG5LF7J.js +47 -0
  18. package/dist/chunks/chunk.BQG5LF7J.js.map +7 -0
  19. package/dist/chunks/{chunk.Z2DLW3SL.js → chunk.C5W2Y6KW.js} +2 -2
  20. package/dist/chunks/{chunk.Z2DLW3SL.js.map → chunk.C5W2Y6KW.js.map} +1 -1
  21. package/dist/chunks/{chunk.FTXTH5TS.js → chunk.CUHMPG7E.js} +3 -3
  22. package/dist/chunks/{chunk.XBVEUULD.js → chunk.DLDE3BC5.js} +2 -2
  23. package/dist/chunks/{chunk.H4N7OLXW.js → chunk.DPTZN6HY.js} +2 -2
  24. package/dist/chunks/{chunk.5VSN3F2E.js → chunk.ELPJP6AL.js} +2 -2
  25. package/dist/chunks/{chunk.Q5UI2GVL.js → chunk.FLCUFEHS.js} +2 -2
  26. package/dist/chunks/chunk.FOTO5B4G.js +12 -0
  27. package/dist/chunks/chunk.FOTO5B4G.js.map +7 -0
  28. package/dist/chunks/{chunk.XRZUXWQE.js → chunk.GAMJZXEL.js} +2 -2
  29. package/dist/chunks/{chunk.WNPKDJ4G.js → chunk.GGNKDYC2.js} +7 -7
  30. package/dist/chunks/{chunk.GEV4IJII.js → chunk.GYDJFPHM.js} +2 -2
  31. package/dist/chunks/{chunk.JYBYORNL.js → chunk.IESSP23D.js} +6 -6
  32. package/dist/chunks/{chunk.JMETBEU6.js → chunk.IYKQTZIY.js} +3 -3
  33. package/dist/chunks/{chunk.KWUT7GQA.js → chunk.JEOPTEUQ.js} +3 -3
  34. package/dist/chunks/{chunk.ND73VYBT.js → chunk.JLTYAQFG.js} +2 -2
  35. package/dist/chunks/chunk.JN7CLMQZ.js +53 -0
  36. package/dist/chunks/chunk.JN7CLMQZ.js.map +7 -0
  37. package/dist/chunks/{chunk.6TJHEFXA.js → chunk.JQWJ7PHD.js} +2 -2
  38. package/dist/chunks/chunk.JXOHBU6V.js +334 -0
  39. package/dist/chunks/chunk.JXOHBU6V.js.map +7 -0
  40. package/dist/chunks/chunk.KG52EHDB.js +60 -0
  41. package/dist/chunks/chunk.KG52EHDB.js.map +7 -0
  42. package/dist/chunks/{chunk.AR7MHBEC.js → chunk.LL3V6HVM.js} +2 -2
  43. package/dist/chunks/{chunk.H3LRV4ST.js → chunk.LTCRPIZ5.js} +2 -2
  44. package/dist/chunks/{chunk.MTDXRKO3.js → chunk.OPVDSHPD.js} +2 -2
  45. package/dist/chunks/chunk.OWMT6OL2.js +82 -0
  46. package/dist/chunks/chunk.OWMT6OL2.js.map +7 -0
  47. package/dist/chunks/{chunk.76T4PEW3.js → chunk.PQLAXTRQ.js} +3 -3
  48. package/dist/chunks/{chunk.KQCYBRJJ.js → chunk.RU7P5HHF.js} +2 -2
  49. package/dist/chunks/chunk.SS46QCYH.js +811 -0
  50. package/dist/chunks/chunk.SS46QCYH.js.map +7 -0
  51. package/dist/chunks/{chunk.5Y446GHK.js → chunk.TY5F2VTK.js} +2 -2
  52. package/dist/chunks/{chunk.LL3W2QAU.js → chunk.UGYBBM5O.js} +3 -3
  53. package/dist/chunks/chunk.UXUMV3TL.js +12 -0
  54. package/dist/chunks/chunk.UXUMV3TL.js.map +7 -0
  55. package/dist/chunks/chunk.W6V7TPGK.js +104 -0
  56. package/dist/chunks/chunk.W6V7TPGK.js.map +7 -0
  57. package/dist/chunks/{chunk.T5GFDZAG.js → chunk.Y6HNLEFW.js} +2 -2
  58. package/dist/components/button/button.component.js +5 -5
  59. package/dist/components/button/button.js +6 -6
  60. package/dist/components/button-group/button-group.component.js +2 -2
  61. package/dist/components/button-group/button-group.js +3 -3
  62. package/dist/components/checkbox/checkbox.component.js +3 -3
  63. package/dist/components/checkbox/checkbox.js +4 -4
  64. package/dist/components/divider/divider.component.js +2 -2
  65. package/dist/components/divider/divider.js +3 -3
  66. package/dist/components/icon/icon.component.js +2 -2
  67. package/dist/components/icon/icon.js +3 -3
  68. package/dist/components/icon-button/icon-button.component.js +3 -3
  69. package/dist/components/icon-button/icon-button.js +4 -4
  70. package/dist/components/input/input.component.js +4 -4
  71. package/dist/components/input/input.js +5 -5
  72. package/dist/components/optgroup/optgroup.component.d.ts +47 -0
  73. package/dist/components/optgroup/optgroup.component.js +16 -0
  74. package/dist/components/optgroup/optgroup.component.js.map +7 -0
  75. package/dist/components/optgroup/optgroup.d.ts +8 -0
  76. package/dist/components/optgroup/optgroup.js +17 -0
  77. package/dist/components/optgroup/optgroup.js.map +7 -0
  78. package/dist/components/optgroup/optgroup.styles.d.ts +2 -0
  79. package/dist/components/optgroup/optgroup.styles.js +8 -0
  80. package/dist/components/optgroup/optgroup.styles.js.map +7 -0
  81. package/dist/components/option/option.component.d.ts +51 -0
  82. package/dist/components/option/option.component.js +22 -0
  83. package/dist/components/option/option.component.js.map +7 -0
  84. package/dist/components/option/option.custom.styles.d.ts +2 -0
  85. package/dist/components/option/option.custom.styles.js +8 -0
  86. package/dist/components/option/option.custom.styles.js.map +7 -0
  87. package/dist/components/option/option.d.ts +8 -0
  88. package/dist/components/option/option.js +23 -0
  89. package/dist/components/option/option.js.map +7 -0
  90. package/dist/components/option/option.styles.d.ts +2 -0
  91. package/dist/components/option/option.styles.js +10 -0
  92. package/dist/components/option/option.styles.js.map +7 -0
  93. package/dist/components/popup/popup.component.d.ts +139 -0
  94. package/dist/components/popup/popup.component.js +11 -0
  95. package/dist/components/popup/popup.component.js.map +7 -0
  96. package/dist/components/popup/popup.styles.d.ts +2 -0
  97. package/dist/components/popup/popup.styles.js +9 -0
  98. package/dist/components/popup/popup.styles.js.map +7 -0
  99. package/dist/components/radio/radio.component.js +3 -3
  100. package/dist/components/radio/radio.js +4 -4
  101. package/dist/components/radio-button/radio-button.component.js +2 -2
  102. package/dist/components/radio-button/radio-button.js +3 -3
  103. package/dist/components/radio-group/radio-group.component.js +3 -3
  104. package/dist/components/radio-group/radio-group.js +4 -4
  105. package/dist/components/select/select.component.d.ts +180 -0
  106. package/dist/components/select/select.component.js +35 -0
  107. package/dist/components/select/select.component.js.map +7 -0
  108. package/dist/components/select/select.custom.styles.d.ts +2 -0
  109. package/dist/components/select/select.custom.styles.js +8 -0
  110. package/dist/components/select/select.custom.styles.js.map +7 -0
  111. package/dist/components/select/select.d.ts +8 -0
  112. package/dist/components/select/select.js +36 -0
  113. package/dist/components/select/select.js.map +7 -0
  114. package/dist/components/select/select.styles.d.ts +2 -0
  115. package/dist/components/select/select.styles.js +11 -0
  116. package/dist/components/select/select.styles.js.map +7 -0
  117. package/dist/components/spinner/spinner.component.js +2 -2
  118. package/dist/components/switch/switch.component.js +2 -2
  119. package/dist/components/switch/switch.js +3 -3
  120. package/dist/components/tag/tag.component.js +4 -4
  121. package/dist/components/tag/tag.js +5 -5
  122. package/dist/components/textarea/textarea.component.js +2 -2
  123. package/dist/components/textarea/textarea.js +3 -3
  124. package/dist/custom-elements.json +2376 -556
  125. package/dist/events/events.d.ts +5 -0
  126. package/dist/events/syn-after-hide.d.ts +6 -0
  127. package/dist/events/syn-after-show.d.ts +6 -0
  128. package/dist/events/syn-hide.d.ts +6 -0
  129. package/dist/events/syn-reposition.d.ts +6 -0
  130. package/dist/events/syn-show.d.ts +6 -0
  131. package/dist/internal/animate.d.ts +22 -0
  132. package/dist/internal/event.d.ts +2 -0
  133. package/dist/internal/offset.d.ts +11 -0
  134. package/dist/internal/scroll.d.ts +11 -0
  135. package/dist/synergy.d.ts +3 -0
  136. package/dist/synergy.js +61 -38
  137. package/dist/utilities/animation-registry.d.ts +24 -0
  138. package/dist/utilities/animation-registry.js +12 -0
  139. package/dist/utilities/animation-registry.js.map +7 -0
  140. package/dist/vscode.html-custom-data.json +304 -17
  141. package/dist/web-types.json +664 -30
  142. package/package.json +6 -3
  143. /package/dist/chunks/{chunk.A77SRYT2.js.map → chunk.4ZO3EKCL.js.map} +0 -0
  144. /package/dist/chunks/{chunk.OSOFK3JT.js.map → chunk.5NJ7WWJW.js.map} +0 -0
  145. /package/dist/chunks/{chunk.QTQBU2M5.js.map → chunk.63IJYG6Q.js.map} +0 -0
  146. /package/dist/chunks/{chunk.6LIMUIEF.js.map → chunk.7BHGTNHS.js.map} +0 -0
  147. /package/dist/chunks/{chunk.GM3M672E.js.map → chunk.A4YWJJLD.js.map} +0 -0
  148. /package/dist/chunks/{chunk.SPBKTD7Y.js.map → chunk.AVJQ2BSM.js.map} +0 -0
  149. /package/dist/chunks/{chunk.FTXTH5TS.js.map → chunk.CUHMPG7E.js.map} +0 -0
  150. /package/dist/chunks/{chunk.XBVEUULD.js.map → chunk.DLDE3BC5.js.map} +0 -0
  151. /package/dist/chunks/{chunk.H4N7OLXW.js.map → chunk.DPTZN6HY.js.map} +0 -0
  152. /package/dist/chunks/{chunk.5VSN3F2E.js.map → chunk.ELPJP6AL.js.map} +0 -0
  153. /package/dist/chunks/{chunk.Q5UI2GVL.js.map → chunk.FLCUFEHS.js.map} +0 -0
  154. /package/dist/chunks/{chunk.XRZUXWQE.js.map → chunk.GAMJZXEL.js.map} +0 -0
  155. /package/dist/chunks/{chunk.WNPKDJ4G.js.map → chunk.GGNKDYC2.js.map} +0 -0
  156. /package/dist/chunks/{chunk.GEV4IJII.js.map → chunk.GYDJFPHM.js.map} +0 -0
  157. /package/dist/chunks/{chunk.JYBYORNL.js.map → chunk.IESSP23D.js.map} +0 -0
  158. /package/dist/chunks/{chunk.JMETBEU6.js.map → chunk.IYKQTZIY.js.map} +0 -0
  159. /package/dist/chunks/{chunk.KWUT7GQA.js.map → chunk.JEOPTEUQ.js.map} +0 -0
  160. /package/dist/chunks/{chunk.ND73VYBT.js.map → chunk.JLTYAQFG.js.map} +0 -0
  161. /package/dist/chunks/{chunk.6TJHEFXA.js.map → chunk.JQWJ7PHD.js.map} +0 -0
  162. /package/dist/chunks/{chunk.AR7MHBEC.js.map → chunk.LL3V6HVM.js.map} +0 -0
  163. /package/dist/chunks/{chunk.H3LRV4ST.js.map → chunk.LTCRPIZ5.js.map} +0 -0
  164. /package/dist/chunks/{chunk.MTDXRKO3.js.map → chunk.OPVDSHPD.js.map} +0 -0
  165. /package/dist/chunks/{chunk.76T4PEW3.js.map → chunk.PQLAXTRQ.js.map} +0 -0
  166. /package/dist/chunks/{chunk.KQCYBRJJ.js.map → chunk.RU7P5HHF.js.map} +0 -0
  167. /package/dist/chunks/{chunk.5Y446GHK.js.map → chunk.TY5F2VTK.js.map} +0 -0
  168. /package/dist/chunks/{chunk.LL3W2QAU.js.map → chunk.UGYBBM5O.js.map} +0 -0
  169. /package/dist/chunks/{chunk.T5GFDZAG.js.map → chunk.Y6HNLEFW.js.map} +0 -0
@@ -616,6 +616,146 @@
616
616
  }
617
617
  ]
618
618
  },
619
+ {
620
+ "kind": "javascript-module",
621
+ "path": "components/button-group/button-group.js",
622
+ "declarations": [
623
+ {
624
+ "kind": "class",
625
+ "description": "",
626
+ "name": "SynButtonGroup",
627
+ "cssParts": [
628
+ {
629
+ "description": "The component's base wrapper.",
630
+ "name": "base"
631
+ }
632
+ ],
633
+ "slots": [
634
+ {
635
+ "description": "One or more `<syn-button>` elements to display in the button group.",
636
+ "name": ""
637
+ }
638
+ ],
639
+ "members": [
640
+ {
641
+ "kind": "field",
642
+ "name": "defaultSlot",
643
+ "type": {
644
+ "text": "HTMLSlotElement"
645
+ }
646
+ },
647
+ {
648
+ "kind": "field",
649
+ "name": "disableRole",
650
+ "type": {
651
+ "text": "boolean"
652
+ },
653
+ "default": "false"
654
+ },
655
+ {
656
+ "kind": "field",
657
+ "name": "label",
658
+ "type": {
659
+ "text": "string"
660
+ },
661
+ "default": "''",
662
+ "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.",
663
+ "attribute": "label"
664
+ },
665
+ {
666
+ "kind": "method",
667
+ "name": "handleFocus",
668
+ "privacy": "private",
669
+ "parameters": [
670
+ {
671
+ "name": "event",
672
+ "type": {
673
+ "text": "Event"
674
+ }
675
+ }
676
+ ]
677
+ },
678
+ {
679
+ "kind": "method",
680
+ "name": "handleBlur",
681
+ "privacy": "private",
682
+ "parameters": [
683
+ {
684
+ "name": "event",
685
+ "type": {
686
+ "text": "Event"
687
+ }
688
+ }
689
+ ]
690
+ },
691
+ {
692
+ "kind": "method",
693
+ "name": "handleMouseOver",
694
+ "privacy": "private",
695
+ "parameters": [
696
+ {
697
+ "name": "event",
698
+ "type": {
699
+ "text": "Event"
700
+ }
701
+ }
702
+ ]
703
+ },
704
+ {
705
+ "kind": "method",
706
+ "name": "handleMouseOut",
707
+ "privacy": "private",
708
+ "parameters": [
709
+ {
710
+ "name": "event",
711
+ "type": {
712
+ "text": "Event"
713
+ }
714
+ }
715
+ ]
716
+ },
717
+ {
718
+ "kind": "method",
719
+ "name": "handleSlotChange",
720
+ "privacy": "private"
721
+ }
722
+ ],
723
+ "attributes": [
724
+ {
725
+ "name": "label",
726
+ "type": {
727
+ "text": "string"
728
+ },
729
+ "default": "''",
730
+ "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.",
731
+ "fieldName": "label"
732
+ }
733
+ ],
734
+ "superclass": {
735
+ "name": "SynergyElement",
736
+ "module": "/src/internal/synergy-element.js"
737
+ },
738
+ "summary": "Button groups can be used to group related buttons into sections.",
739
+ "tagNameWithoutPrefix": "button-group",
740
+ "tagName": "syn-button-group",
741
+ "customElement": true,
742
+ "jsDoc": "/**\n * @summary Button groups can be used to group related buttons into sections.\n * @documentation https://synergy.style/components/button-group\n * @status stable\n * @since 2.0\n *\n * @slot - One or more `<syn-button>` elements to display in the button group.\n *\n * @csspart base - The component's base wrapper.\n */",
743
+ "documentation": "https://synergy.style/components/button-group",
744
+ "status": "stable",
745
+ "since": "2.0"
746
+ }
747
+ ],
748
+ "exports": [
749
+ {
750
+ "kind": "js",
751
+ "name": "default",
752
+ "declaration": {
753
+ "name": "SynButtonGroup",
754
+ "module": "components/button-group/button-group.js"
755
+ }
756
+ }
757
+ ]
758
+ },
619
759
  {
620
760
  "kind": "javascript-module",
621
761
  "path": "components/checkbox/checkbox.js",
@@ -1050,261 +1190,121 @@
1050
1190
  },
1051
1191
  {
1052
1192
  "kind": "javascript-module",
1053
- "path": "components/button-group/button-group.js",
1193
+ "path": "components/divider/divider.js",
1054
1194
  "declarations": [
1055
1195
  {
1056
1196
  "kind": "class",
1057
1197
  "description": "",
1058
- "name": "SynButtonGroup",
1059
- "cssParts": [
1198
+ "name": "SynDivider",
1199
+ "cssProperties": [
1060
1200
  {
1061
- "description": "The component's base wrapper.",
1062
- "name": "base"
1063
- }
1064
- ],
1065
- "slots": [
1201
+ "description": "The color of the divider.",
1202
+ "name": "--color"
1203
+ },
1066
1204
  {
1067
- "description": "One or more `<syn-button>` elements to display in the button group.",
1068
- "name": ""
1205
+ "description": "The width of the divider.",
1206
+ "name": "--width"
1207
+ },
1208
+ {
1209
+ "description": "The spacing of the divider.",
1210
+ "name": "--spacing"
1069
1211
  }
1070
1212
  ],
1071
1213
  "members": [
1072
1214
  {
1073
1215
  "kind": "field",
1074
- "name": "defaultSlot",
1216
+ "name": "vertical",
1075
1217
  "type": {
1076
- "text": "HTMLSlotElement"
1077
- }
1218
+ "text": "boolean"
1219
+ },
1220
+ "default": "false",
1221
+ "description": "Draws the divider in a vertical orientation.",
1222
+ "attribute": "vertical",
1223
+ "reflects": true
1078
1224
  },
1079
1225
  {
1080
- "kind": "field",
1081
- "name": "disableRole",
1226
+ "kind": "method",
1227
+ "name": "handleVerticalChange"
1228
+ }
1229
+ ],
1230
+ "attributes": [
1231
+ {
1232
+ "name": "vertical",
1082
1233
  "type": {
1083
1234
  "text": "boolean"
1084
1235
  },
1085
- "default": "false"
1236
+ "default": "false",
1237
+ "description": "Draws the divider in a vertical orientation.",
1238
+ "fieldName": "vertical"
1239
+ }
1240
+ ],
1241
+ "superclass": {
1242
+ "name": "SynergyElement",
1243
+ "module": "/src/internal/synergy-element.js"
1244
+ },
1245
+ "summary": "Dividers are used to visually separate or group elements.",
1246
+ "tagNameWithoutPrefix": "divider",
1247
+ "tagName": "syn-divider",
1248
+ "customElement": true,
1249
+ "jsDoc": "/**\n * @summary Dividers are used to visually separate or group elements.\n * @documentation https://synergy.style/components/divider\n * @status stable\n * @since 2.0\n *\n * @cssproperty --color - The color of the divider.\n * @cssproperty --width - The width of the divider.\n * @cssproperty --spacing - The spacing of the divider.\n */",
1250
+ "documentation": "https://synergy.style/components/divider",
1251
+ "status": "stable",
1252
+ "since": "2.0"
1253
+ }
1254
+ ],
1255
+ "exports": [
1256
+ {
1257
+ "kind": "js",
1258
+ "name": "default",
1259
+ "declaration": {
1260
+ "name": "SynDivider",
1261
+ "module": "components/divider/divider.js"
1262
+ }
1263
+ }
1264
+ ]
1265
+ },
1266
+ {
1267
+ "kind": "javascript-module",
1268
+ "path": "components/icon/icon.js",
1269
+ "declarations": [
1270
+ {
1271
+ "kind": "class",
1272
+ "description": "",
1273
+ "name": "SynIcon",
1274
+ "cssParts": [
1275
+ {
1276
+ "description": "The internal SVG element.",
1277
+ "name": "svg"
1086
1278
  },
1279
+ {
1280
+ "description": "The <use> element generated when using `spriteSheet: true`",
1281
+ "name": "use"
1282
+ }
1283
+ ],
1284
+ "members": [
1087
1285
  {
1088
1286
  "kind": "field",
1089
- "name": "label",
1287
+ "name": "initialRender",
1090
1288
  "type": {
1091
- "text": "string"
1289
+ "text": "boolean"
1092
1290
  },
1093
- "default": "''",
1094
- "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.",
1095
- "attribute": "label"
1291
+ "privacy": "private",
1292
+ "default": "false"
1096
1293
  },
1097
1294
  {
1098
1295
  "kind": "method",
1099
- "name": "handleFocus",
1296
+ "name": "resolveIcon",
1100
1297
  "privacy": "private",
1298
+ "return": {
1299
+ "type": {
1300
+ "text": "Promise<SVGResult>"
1301
+ }
1302
+ },
1101
1303
  "parameters": [
1102
1304
  {
1103
- "name": "event",
1305
+ "name": "url",
1104
1306
  "type": {
1105
- "text": "Event"
1106
- }
1107
- }
1108
- ]
1109
- },
1110
- {
1111
- "kind": "method",
1112
- "name": "handleBlur",
1113
- "privacy": "private",
1114
- "parameters": [
1115
- {
1116
- "name": "event",
1117
- "type": {
1118
- "text": "Event"
1119
- }
1120
- }
1121
- ]
1122
- },
1123
- {
1124
- "kind": "method",
1125
- "name": "handleMouseOver",
1126
- "privacy": "private",
1127
- "parameters": [
1128
- {
1129
- "name": "event",
1130
- "type": {
1131
- "text": "Event"
1132
- }
1133
- }
1134
- ]
1135
- },
1136
- {
1137
- "kind": "method",
1138
- "name": "handleMouseOut",
1139
- "privacy": "private",
1140
- "parameters": [
1141
- {
1142
- "name": "event",
1143
- "type": {
1144
- "text": "Event"
1145
- }
1146
- }
1147
- ]
1148
- },
1149
- {
1150
- "kind": "method",
1151
- "name": "handleSlotChange",
1152
- "privacy": "private"
1153
- }
1154
- ],
1155
- "attributes": [
1156
- {
1157
- "name": "label",
1158
- "type": {
1159
- "text": "string"
1160
- },
1161
- "default": "''",
1162
- "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.",
1163
- "fieldName": "label"
1164
- }
1165
- ],
1166
- "superclass": {
1167
- "name": "SynergyElement",
1168
- "module": "/src/internal/synergy-element.js"
1169
- },
1170
- "summary": "Button groups can be used to group related buttons into sections.",
1171
- "tagNameWithoutPrefix": "button-group",
1172
- "tagName": "syn-button-group",
1173
- "customElement": true,
1174
- "jsDoc": "/**\n * @summary Button groups can be used to group related buttons into sections.\n * @documentation https://synergy.style/components/button-group\n * @status stable\n * @since 2.0\n *\n * @slot - One or more `<syn-button>` elements to display in the button group.\n *\n * @csspart base - The component's base wrapper.\n */",
1175
- "documentation": "https://synergy.style/components/button-group",
1176
- "status": "stable",
1177
- "since": "2.0"
1178
- }
1179
- ],
1180
- "exports": [
1181
- {
1182
- "kind": "js",
1183
- "name": "default",
1184
- "declaration": {
1185
- "name": "SynButtonGroup",
1186
- "module": "components/button-group/button-group.js"
1187
- }
1188
- }
1189
- ]
1190
- },
1191
- {
1192
- "kind": "javascript-module",
1193
- "path": "components/divider/divider.js",
1194
- "declarations": [
1195
- {
1196
- "kind": "class",
1197
- "description": "",
1198
- "name": "SynDivider",
1199
- "cssProperties": [
1200
- {
1201
- "description": "The color of the divider.",
1202
- "name": "--color"
1203
- },
1204
- {
1205
- "description": "The width of the divider.",
1206
- "name": "--width"
1207
- },
1208
- {
1209
- "description": "The spacing of the divider.",
1210
- "name": "--spacing"
1211
- }
1212
- ],
1213
- "members": [
1214
- {
1215
- "kind": "field",
1216
- "name": "vertical",
1217
- "type": {
1218
- "text": "boolean"
1219
- },
1220
- "default": "false",
1221
- "description": "Draws the divider in a vertical orientation.",
1222
- "attribute": "vertical",
1223
- "reflects": true
1224
- },
1225
- {
1226
- "kind": "method",
1227
- "name": "handleVerticalChange"
1228
- }
1229
- ],
1230
- "attributes": [
1231
- {
1232
- "name": "vertical",
1233
- "type": {
1234
- "text": "boolean"
1235
- },
1236
- "default": "false",
1237
- "description": "Draws the divider in a vertical orientation.",
1238
- "fieldName": "vertical"
1239
- }
1240
- ],
1241
- "superclass": {
1242
- "name": "SynergyElement",
1243
- "module": "/src/internal/synergy-element.js"
1244
- },
1245
- "summary": "Dividers are used to visually separate or group elements.",
1246
- "tagNameWithoutPrefix": "divider",
1247
- "tagName": "syn-divider",
1248
- "customElement": true,
1249
- "jsDoc": "/**\n * @summary Dividers are used to visually separate or group elements.\n * @documentation https://synergy.style/components/divider\n * @status stable\n * @since 2.0\n *\n * @cssproperty --color - The color of the divider.\n * @cssproperty --width - The width of the divider.\n * @cssproperty --spacing - The spacing of the divider.\n */",
1250
- "documentation": "https://synergy.style/components/divider",
1251
- "status": "stable",
1252
- "since": "2.0"
1253
- }
1254
- ],
1255
- "exports": [
1256
- {
1257
- "kind": "js",
1258
- "name": "default",
1259
- "declaration": {
1260
- "name": "SynDivider",
1261
- "module": "components/divider/divider.js"
1262
- }
1263
- }
1264
- ]
1265
- },
1266
- {
1267
- "kind": "javascript-module",
1268
- "path": "components/icon/icon.js",
1269
- "declarations": [
1270
- {
1271
- "kind": "class",
1272
- "description": "",
1273
- "name": "SynIcon",
1274
- "cssParts": [
1275
- {
1276
- "description": "The internal SVG element.",
1277
- "name": "svg"
1278
- },
1279
- {
1280
- "description": "The <use> element generated when using `spriteSheet: true`",
1281
- "name": "use"
1282
- }
1283
- ],
1284
- "members": [
1285
- {
1286
- "kind": "field",
1287
- "name": "initialRender",
1288
- "type": {
1289
- "text": "boolean"
1290
- },
1291
- "privacy": "private",
1292
- "default": "false"
1293
- },
1294
- {
1295
- "kind": "method",
1296
- "name": "resolveIcon",
1297
- "privacy": "private",
1298
- "return": {
1299
- "type": {
1300
- "text": "Promise<SVGResult>"
1301
- }
1302
- },
1303
- "parameters": [
1304
- {
1305
- "name": "url",
1306
- "type": {
1307
- "text": "string"
1307
+ "text": "string"
1308
1308
  }
1309
1309
  },
1310
1310
  {
@@ -2751,38 +2751,60 @@
2751
2751
  },
2752
2752
  {
2753
2753
  "kind": "javascript-module",
2754
- "path": "components/radio/radio.js",
2754
+ "path": "components/optgroup/optgroup.js",
2755
2755
  "declarations": [
2756
2756
  {
2757
2757
  "kind": "class",
2758
2758
  "description": "",
2759
- "name": "SynRadio",
2759
+ "name": "SynOptgroup",
2760
+ "cssProperties": [
2761
+ {
2762
+ "description": "Display property of the divider. Defaults to \"block\"",
2763
+ "name": "--display-divider"
2764
+ }
2765
+ ],
2760
2766
  "cssParts": [
2761
2767
  {
2762
2768
  "description": "The component's base wrapper.",
2763
2769
  "name": "base"
2764
2770
  },
2765
2771
  {
2766
- "description": "The circular container that wraps the radio's checked state.",
2767
- "name": "control"
2772
+ "description": "The container that wraps prefix, label and base",
2773
+ "name": "label-container"
2768
2774
  },
2769
2775
  {
2770
- "description": "The radio control when the radio is checked.",
2771
- "name": "control--checked"
2776
+ "description": "The divider that is displayed above the content",
2777
+ "name": "divider"
2772
2778
  },
2773
2779
  {
2774
- "description": "The checked icon, an `<syn-icon>` element.",
2775
- "name": "checked-icon"
2780
+ "description": "The container that wraps the prefix.",
2781
+ "name": "prefix"
2776
2782
  },
2777
2783
  {
2778
- "description": "The container that wraps the radio's label.",
2779
- "name": "label"
2784
+ "description": "The container that wraps the suffix.",
2785
+ "name": "suffix"
2786
+ },
2787
+ {
2788
+ "description": "The container that wraps the <syn-option> elements.",
2789
+ "name": "options"
2780
2790
  }
2781
2791
  ],
2782
2792
  "slots": [
2783
2793
  {
2784
- "description": "The radio's label.",
2794
+ "description": "The given options. Must be `<syn-option>` elements.",
2785
2795
  "name": ""
2796
+ },
2797
+ {
2798
+ "description": "A presentational prefix icon or similar element.",
2799
+ "name": "prefix"
2800
+ },
2801
+ {
2802
+ "description": "The label for the optgroup",
2803
+ "name": "label"
2804
+ },
2805
+ {
2806
+ "description": "A presentational suffix icon or similar element.",
2807
+ "name": "suffix"
2786
2808
  }
2787
2809
  ],
2788
2810
  "members": [
@@ -2793,141 +2815,88 @@
2793
2815
  "text": "object"
2794
2816
  },
2795
2817
  "static": true,
2796
- "default": "{ 'syn-icon': SynIcon }"
2818
+ "default": "{\n 'syn-divider': SynDivider,\n }"
2797
2819
  },
2798
2820
  {
2799
2821
  "kind": "field",
2800
- "name": "checked",
2822
+ "name": "hasSlotController",
2823
+ "privacy": "private",
2824
+ "readonly": true,
2825
+ "default": "new HasSlotController(this, '[default]', 'prefix', 'suffix', 'label')"
2826
+ },
2827
+ {
2828
+ "kind": "field",
2829
+ "name": "defaultSlot",
2801
2830
  "type": {
2802
- "text": "boolean"
2803
- },
2804
- "default": "false"
2831
+ "text": "HTMLSlotElement"
2832
+ }
2833
+ },
2834
+ {
2835
+ "kind": "method",
2836
+ "name": "handleDisableOptions",
2837
+ "privacy": "private",
2838
+ "description": "Syncs the disabled prop for all slotted syn-options when it is triggered"
2805
2839
  },
2806
2840
  {
2807
2841
  "kind": "field",
2808
- "name": "hasFocus",
2842
+ "name": "disabled",
2809
2843
  "type": {
2810
2844
  "text": "boolean"
2811
2845
  },
2812
- "privacy": "protected",
2813
- "default": "false"
2846
+ "default": "false",
2847
+ "description": "Disables all options in the optgroup.",
2848
+ "attribute": "disabled",
2849
+ "reflects": true
2814
2850
  },
2815
2851
  {
2816
2852
  "kind": "field",
2817
- "name": "value",
2853
+ "name": "label",
2818
2854
  "type": {
2819
2855
  "text": "string"
2820
2856
  },
2821
- "description": "The radio's value. When selected, the radio group will receive this value.",
2822
- "attribute": "value"
2823
- },
2824
- {
2825
- "kind": "field",
2826
- "name": "size",
2827
- "type": {
2828
- "text": "'small' | 'medium' | 'large'"
2829
- },
2830
- "default": "'medium'",
2831
- "description": "The radio's size. When used inside a radio group, the size will be determined by the radio group's size so this\nattribute can typically be omitted.",
2832
- "attribute": "size",
2833
- "reflects": true
2834
- },
2835
- {
2836
- "kind": "field",
2837
- "name": "disabled",
2838
- "type": {
2839
- "text": "boolean"
2840
- },
2841
- "default": "false",
2842
- "description": "Disables the radio.",
2843
- "attribute": "disabled",
2844
- "reflects": true
2845
- },
2846
- {
2847
- "kind": "field",
2848
- "name": "handleBlur",
2849
- "privacy": "private"
2850
- },
2851
- {
2852
- "kind": "field",
2853
- "name": "handleClick",
2854
- "privacy": "private"
2855
- },
2856
- {
2857
- "kind": "field",
2858
- "name": "handleFocus",
2859
- "privacy": "private"
2860
- },
2861
- {
2862
- "kind": "method",
2863
- "name": "setInitialAttributes",
2864
- "privacy": "private"
2865
- },
2866
- {
2867
- "kind": "method",
2868
- "name": "handleCheckedChange"
2857
+ "default": "''",
2858
+ "description": "The optgroups label. If you need to display HTML, use the `label` slot instead.",
2859
+ "attribute": "label"
2869
2860
  },
2870
2861
  {
2871
2862
  "kind": "method",
2872
2863
  "name": "handleDisabledChange"
2873
2864
  }
2874
2865
  ],
2875
- "events": [
2876
- {
2877
- "description": "Emitted when the control loses focus.",
2878
- "name": "syn-blur",
2879
- "reactName": "onSynBlur",
2880
- "eventName": "SynBlurEvent"
2881
- },
2882
- {
2883
- "description": "Emitted when the control gains focus.",
2884
- "name": "syn-focus",
2885
- "reactName": "onSynFocus",
2886
- "eventName": "SynFocusEvent"
2887
- }
2888
- ],
2889
2866
  "attributes": [
2890
- {
2891
- "name": "value",
2892
- "type": {
2893
- "text": "string"
2894
- },
2895
- "description": "The radio's value. When selected, the radio group will receive this value.",
2896
- "fieldName": "value"
2897
- },
2898
- {
2899
- "name": "size",
2900
- "type": {
2901
- "text": "'small' | 'medium' | 'large'"
2902
- },
2903
- "default": "'medium'",
2904
- "description": "The radio's size. When used inside a radio group, the size will be determined by the radio group's size so this\nattribute can typically be omitted.",
2905
- "fieldName": "size"
2906
- },
2907
2867
  {
2908
2868
  "name": "disabled",
2909
2869
  "type": {
2910
2870
  "text": "boolean"
2911
2871
  },
2912
2872
  "default": "false",
2913
- "description": "Disables the radio.",
2873
+ "description": "Disables all options in the optgroup.",
2914
2874
  "fieldName": "disabled"
2875
+ },
2876
+ {
2877
+ "name": "label",
2878
+ "type": {
2879
+ "text": "string"
2880
+ },
2881
+ "default": "''",
2882
+ "description": "The optgroups label. If you need to display HTML, use the `label` slot instead.",
2883
+ "fieldName": "label"
2915
2884
  }
2916
2885
  ],
2917
2886
  "superclass": {
2918
2887
  "name": "SynergyElement",
2919
2888
  "module": "/src/internal/synergy-element.js"
2920
2889
  },
2921
- "summary": "Radios allow the user to select a single option from a group.",
2922
- "tagNameWithoutPrefix": "radio",
2923
- "tagName": "syn-radio",
2890
+ "summary": "The <syn-optgroup> element creates a grouping for <syn-option>s within a <syn-select>.",
2891
+ "tagNameWithoutPrefix": "optgroup",
2892
+ "tagName": "syn-optgroup",
2924
2893
  "customElement": true,
2925
- "jsDoc": "/**\n * @summary Radios allow the user to select a single option from a group.\n * @documentation https://synergy.style/components/radio\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon\n *\n * @slot - The radio's label.\n *\n * @event syn-blur - Emitted when the control loses focus.\n * @event syn-focus - Emitted when the control gains focus.\n *\n * @csspart base - The component's base wrapper.\n * @csspart control - The circular container that wraps the radio's checked state.\n * @csspart control--checked - The radio control when the radio is checked.\n * @csspart checked-icon - The checked icon, an `<syn-icon>` element.\n * @csspart label - The container that wraps the radio's label.\n */",
2926
- "documentation": "https://synergy.style/components/radio",
2894
+ "jsDoc": "/**\n * @summary The <syn-optgroup> element creates a grouping for <syn-option>s within a <syn-select>.\n * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-optgroup--docs\n * @status stable\n * @since 1.3.0\n *\n * @dependency syn-divider\n *\n * @slot - The given options. Must be `<syn-option>` elements.\n * @slot prefix - A presentational prefix icon or similar element.\n * @slot label - The label for the optgroup\n * @slot suffix - A presentational suffix icon or similar element.\n *\n * @csspart base - The component's base wrapper.\n * @csspart label-container - The container that wraps prefix, label and base\n * @csspart divider - The divider that is displayed above the content\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n * @csspart options - The container that wraps the <syn-option> elements.\n *\n * @cssproperty --display-divider - Display property of the divider. Defaults to \"block\"\n */",
2895
+ "documentation": "https://synergy-design-system.github.io/?path=/docs/components-syn-optgroup--docs",
2927
2896
  "status": "stable",
2928
- "since": "2.0",
2897
+ "since": "1.3.0",
2929
2898
  "dependencies": [
2930
- "syn-icon"
2899
+ "syn-divider"
2931
2900
  ]
2932
2901
  }
2933
2902
  ],
@@ -2936,41 +2905,37 @@
2936
2905
  "kind": "js",
2937
2906
  "name": "default",
2938
2907
  "declaration": {
2939
- "name": "SynRadio",
2940
- "module": "components/radio/radio.js"
2908
+ "name": "SynOptgroup",
2909
+ "module": "components/optgroup/optgroup.js"
2941
2910
  }
2942
2911
  }
2943
2912
  ]
2944
2913
  },
2945
2914
  {
2946
2915
  "kind": "javascript-module",
2947
- "path": "components/radio-button/radio-button.js",
2916
+ "path": "components/option/option.js",
2948
2917
  "declarations": [
2949
2918
  {
2950
2919
  "kind": "class",
2951
2920
  "description": "",
2952
- "name": "SynRadioButton",
2921
+ "name": "SynOption",
2953
2922
  "cssParts": [
2954
2923
  {
2955
- "description": "The component's base wrapper.",
2956
- "name": "base"
2924
+ "description": "The checked icon, an `<syn-icon>` element.",
2925
+ "name": "checked-icon"
2957
2926
  },
2958
2927
  {
2959
- "description": "The internal `<button>` element.",
2960
- "name": "button"
2928
+ "description": "The component's base wrapper.",
2929
+ "name": "base"
2961
2930
  },
2962
2931
  {
2963
- "description": "The internal button element when the radio button is checked.",
2964
- "name": "button--checked"
2932
+ "description": "The option's label.",
2933
+ "name": "label"
2965
2934
  },
2966
2935
  {
2967
2936
  "description": "The container that wraps the prefix.",
2968
2937
  "name": "prefix"
2969
2938
  },
2970
- {
2971
- "description": "The container that wraps the radio button's label.",
2972
- "name": "label"
2973
- },
2974
2939
  {
2975
2940
  "description": "The container that wraps the suffix.",
2976
2941
  "name": "suffix"
@@ -2978,101 +2943,109 @@
2978
2943
  ],
2979
2944
  "slots": [
2980
2945
  {
2981
- "description": "The radio button's label.",
2946
+ "description": "The option's label.",
2982
2947
  "name": ""
2983
2948
  },
2984
2949
  {
2985
- "description": "A presentational prefix icon or similar element.",
2950
+ "description": "Used to prepend an icon or similar element to the menu item.",
2986
2951
  "name": "prefix"
2987
2952
  },
2988
2953
  {
2989
- "description": "A presentational suffix icon or similar element.",
2954
+ "description": "Used to append an icon or similar element to the menu item.",
2990
2955
  "name": "suffix"
2991
2956
  }
2992
2957
  ],
2993
2958
  "members": [
2994
2959
  {
2995
2960
  "kind": "field",
2996
- "name": "hasSlotController",
2961
+ "name": "dependencies",
2962
+ "type": {
2963
+ "text": "object"
2964
+ },
2965
+ "static": true,
2966
+ "default": "{ 'syn-icon': SynIcon }"
2967
+ },
2968
+ {
2969
+ "kind": "field",
2970
+ "name": "cachedTextLabel",
2971
+ "type": {
2972
+ "text": "string"
2973
+ },
2974
+ "privacy": "private"
2975
+ },
2976
+ {
2977
+ "kind": "field",
2978
+ "name": "localize",
2997
2979
  "privacy": "private",
2998
2980
  "readonly": true,
2999
- "default": "new HasSlotController(this, '[default]', 'prefix', 'suffix')"
2981
+ "default": "new LocalizeController(this)"
3000
2982
  },
3001
2983
  {
3002
2984
  "kind": "field",
3003
- "name": "input",
2985
+ "name": "defaultSlot",
3004
2986
  "type": {
3005
- "text": "HTMLInputElement"
2987
+ "text": "HTMLSlotElement"
3006
2988
  }
3007
2989
  },
3008
2990
  {
3009
2991
  "kind": "field",
3010
- "name": "hiddenInput",
2992
+ "name": "current",
3011
2993
  "type": {
3012
- "text": "HTMLInputElement"
3013
- }
2994
+ "text": "boolean"
2995
+ },
2996
+ "default": "false"
3014
2997
  },
3015
2998
  {
3016
2999
  "kind": "field",
3017
- "name": "hasFocus",
3000
+ "name": "selected",
3018
3001
  "type": {
3019
3002
  "text": "boolean"
3020
3003
  },
3021
- "privacy": "protected",
3022
3004
  "default": "false"
3023
3005
  },
3024
3006
  {
3025
3007
  "kind": "field",
3026
- "name": "value",
3008
+ "name": "hasHover",
3027
3009
  "type": {
3028
- "text": "string"
3010
+ "text": "boolean"
3029
3011
  },
3030
- "description": "The radio's value. When selected, the radio group will receive this value.",
3031
- "attribute": "value"
3012
+ "default": "false"
3032
3013
  },
3033
3014
  {
3034
3015
  "kind": "field",
3035
- "name": "disabled",
3016
+ "name": "value",
3036
3017
  "type": {
3037
- "text": "boolean"
3018
+ "text": "string"
3038
3019
  },
3039
- "default": "false",
3040
- "description": "Disables the radio button.",
3041
- "attribute": "disabled",
3020
+ "default": "''",
3021
+ "description": "The option's value. When selected, the containing form control will receive this value. The value must be unique\nfrom other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\nmultiple values.",
3022
+ "attribute": "value",
3042
3023
  "reflects": true
3043
3024
  },
3044
3025
  {
3045
3026
  "kind": "field",
3046
- "name": "size",
3027
+ "name": "disabled",
3047
3028
  "type": {
3048
- "text": "'small' | 'medium' | 'large'"
3029
+ "text": "boolean"
3049
3030
  },
3050
- "default": "'medium'",
3051
- "description": "The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so\nthis attribute can typically be omitted.",
3052
- "attribute": "size",
3031
+ "default": "false",
3032
+ "description": "Draws the option in a disabled state, preventing selection.",
3033
+ "attribute": "disabled",
3053
3034
  "reflects": true
3054
3035
  },
3055
3036
  {
3056
3037
  "kind": "method",
3057
- "name": "handleBlur",
3038
+ "name": "handleDefaultSlotChange",
3058
3039
  "privacy": "private"
3059
3040
  },
3060
3041
  {
3061
3042
  "kind": "method",
3062
- "name": "handleClick",
3063
- "privacy": "private",
3064
- "parameters": [
3065
- {
3066
- "name": "e",
3067
- "type": {
3068
- "text": "MouseEvent"
3069
- }
3070
- }
3071
- ]
3043
+ "name": "handleMouseEnter",
3044
+ "privacy": "private"
3072
3045
  },
3073
3046
  {
3074
3047
  "kind": "method",
3075
- "name": "handleFocus",
3048
+ "name": "handleMouseLeave",
3076
3049
  "privacy": "private"
3077
3050
  },
3078
3051
  {
@@ -3081,36 +3054,16 @@
3081
3054
  },
3082
3055
  {
3083
3056
  "kind": "method",
3084
- "name": "focus",
3085
- "parameters": [
3086
- {
3087
- "name": "options",
3088
- "optional": true,
3089
- "type": {
3090
- "text": "FocusOptions"
3091
- }
3092
- }
3093
- ],
3094
- "description": "Sets focus on the radio button."
3057
+ "name": "handleSelectedChange"
3095
3058
  },
3096
3059
  {
3097
3060
  "kind": "method",
3098
- "name": "blur",
3099
- "description": "Removes focus from the radio button."
3100
- }
3101
- ],
3102
- "events": [
3103
- {
3104
- "description": "Emitted when the button loses focus.",
3105
- "name": "syn-blur",
3106
- "reactName": "onSynBlur",
3107
- "eventName": "SynBlurEvent"
3061
+ "name": "handleValueChange"
3108
3062
  },
3109
3063
  {
3110
- "description": "Emitted when the button gains focus.",
3111
- "name": "syn-focus",
3112
- "reactName": "onSynFocus",
3113
- "eventName": "SynFocusEvent"
3064
+ "kind": "method",
3065
+ "name": "getTextLabel",
3066
+ "description": "Returns a plain text label based on the option's content."
3114
3067
  }
3115
3068
  ],
3116
3069
  "attributes": [
@@ -3119,7 +3072,8 @@
3119
3072
  "type": {
3120
3073
  "text": "string"
3121
3074
  },
3122
- "description": "The radio's value. When selected, the radio group will receive this value.",
3075
+ "default": "''",
3076
+ "description": "The option's value. When selected, the containing form control will receive this value. The value must be unique\nfrom other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\nmultiple values.",
3123
3077
  "fieldName": "value"
3124
3078
  },
3125
3079
  {
@@ -3128,31 +3082,25 @@
3128
3082
  "text": "boolean"
3129
3083
  },
3130
3084
  "default": "false",
3131
- "description": "Disables the radio button.",
3085
+ "description": "Draws the option in a disabled state, preventing selection.",
3132
3086
  "fieldName": "disabled"
3133
- },
3134
- {
3135
- "name": "size",
3136
- "type": {
3137
- "text": "'small' | 'medium' | 'large'"
3138
- },
3139
- "default": "'medium'",
3140
- "description": "The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so\nthis attribute can typically be omitted.",
3141
- "fieldName": "size"
3142
3087
  }
3143
3088
  ],
3144
3089
  "superclass": {
3145
3090
  "name": "SynergyElement",
3146
3091
  "module": "/src/internal/synergy-element.js"
3147
3092
  },
3148
- "summary": "Radios buttons allow the user to select a single option from a group using a button-like control.",
3149
- "tagNameWithoutPrefix": "radio-button",
3150
- "tagName": "syn-radio-button",
3093
+ "summary": "Options define the selectable items within various form controls such as [select](/components/select).",
3094
+ "tagNameWithoutPrefix": "option",
3095
+ "tagName": "syn-option",
3151
3096
  "customElement": true,
3152
- "jsDoc": "/**\n * @summary Radios buttons allow the user to select a single option from a group using a button-like control.\n * @documentation https://synergy.style/components/radio-button\n * @status stable\n * @since 2.0\n *\n * @slot - The radio button's label.\n * @slot prefix - A presentational prefix icon or similar element.\n * @slot suffix - A presentational suffix icon or similar element.\n *\n * @event syn-blur - Emitted when the button loses focus.\n * @event syn-focus - Emitted when the button gains focus.\n *\n * @csspart base - The component's base wrapper.\n * @csspart button - The internal `<button>` element.\n * @csspart button--checked - The internal button element when the radio button is checked.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart label - The container that wraps the radio button's label.\n * @csspart suffix - The container that wraps the suffix.\n */",
3153
- "documentation": "https://synergy.style/components/radio-button",
3097
+ "jsDoc": "/**\n * @summary Options define the selectable items within various form controls such as [select](/components/select).\n * @documentation https://synergy.style/components/option\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon\n *\n * @slot - The option's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart checked-icon - The checked icon, an `<syn-icon>` element.\n * @csspart base - The component's base wrapper.\n * @csspart label - The option's label.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n */",
3098
+ "documentation": "https://synergy.style/components/option",
3154
3099
  "status": "stable",
3155
- "since": "2.0"
3100
+ "since": "2.0",
3101
+ "dependencies": [
3102
+ "syn-icon"
3103
+ ]
3156
3104
  }
3157
3105
  ],
3158
3106
  "exports": [
@@ -3160,40 +3108,989 @@
3160
3108
  "kind": "js",
3161
3109
  "name": "default",
3162
3110
  "declaration": {
3163
- "name": "SynRadioButton",
3164
- "module": "components/radio-button/radio-button.js"
3111
+ "name": "SynOption",
3112
+ "module": "components/option/option.js"
3165
3113
  }
3166
3114
  }
3167
3115
  ]
3168
3116
  },
3169
3117
  {
3170
3118
  "kind": "javascript-module",
3171
- "path": "components/radio-group/radio-group.js",
3119
+ "path": "components/popup/popup.js",
3172
3120
  "declarations": [
3173
3121
  {
3174
3122
  "kind": "class",
3175
3123
  "description": "",
3176
- "name": "SynRadioGroup",
3177
- "cssParts": [
3124
+ "name": "SynPopup",
3125
+ "cssProperties": [
3178
3126
  {
3179
- "description": "The form control that wraps the label, input, and help text.",
3180
- "name": "form-control"
3127
+ "description": "The size of the arrow. Note that an arrow won't be shown unless the `arrow` attribute is used.",
3128
+ "name": "--arrow-size",
3129
+ "default": "6px"
3181
3130
  },
3182
3131
  {
3183
- "description": "The label's wrapper.",
3184
- "name": "form-control-label"
3132
+ "description": "The color of the arrow.",
3133
+ "name": "--arrow-color",
3134
+ "default": "var(--syn-color-neutral-0)"
3185
3135
  },
3186
3136
  {
3187
- "description": "The input's wrapper.",
3188
- "name": "form-control-input"
3137
+ "description": "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`.",
3138
+ "name": "--auto-size-available-width"
3189
3139
  },
3190
3140
  {
3191
- "description": "The help text's wrapper.",
3192
- "name": "form-control-help-text"
3193
- },
3141
+ "description": "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`.",
3142
+ "name": "--auto-size-available-height"
3143
+ }
3144
+ ],
3145
+ "cssParts": [
3194
3146
  {
3195
- "description": "The button group that wraps radio buttons.",
3196
- "name": "button-group"
3147
+ "description": "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.",
3148
+ "name": "arrow"
3149
+ },
3150
+ {
3151
+ "description": "The popup's container. Useful for setting a background color, box shadow, etc.",
3152
+ "name": "popup"
3153
+ }
3154
+ ],
3155
+ "slots": [
3156
+ {
3157
+ "description": "The popup's content.",
3158
+ "name": ""
3159
+ },
3160
+ {
3161
+ "description": "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.",
3162
+ "name": "anchor"
3163
+ }
3164
+ ],
3165
+ "members": [
3166
+ {
3167
+ "kind": "field",
3168
+ "name": "anchorEl",
3169
+ "type": {
3170
+ "text": "Element | VirtualElement | null"
3171
+ },
3172
+ "privacy": "private"
3173
+ },
3174
+ {
3175
+ "kind": "field",
3176
+ "name": "cleanup",
3177
+ "type": {
3178
+ "text": "ReturnType<typeof autoUpdate> | undefined"
3179
+ },
3180
+ "privacy": "private"
3181
+ },
3182
+ {
3183
+ "kind": "field",
3184
+ "name": "popup",
3185
+ "type": {
3186
+ "text": "HTMLElement"
3187
+ },
3188
+ "description": "A reference to the internal popup container. Useful for animating and styling the popup with JavaScript."
3189
+ },
3190
+ {
3191
+ "kind": "field",
3192
+ "name": "arrowEl",
3193
+ "type": {
3194
+ "text": "HTMLElement"
3195
+ },
3196
+ "privacy": "private"
3197
+ },
3198
+ {
3199
+ "kind": "field",
3200
+ "name": "anchor",
3201
+ "type": {
3202
+ "text": "Element | string | VirtualElement"
3203
+ },
3204
+ "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide the anchor\nelement `id`, a DOM element reference, or a `VirtualElement`. If the anchor lives inside the popup, use the\n`anchor` slot instead.",
3205
+ "attribute": "anchor"
3206
+ },
3207
+ {
3208
+ "kind": "field",
3209
+ "name": "active",
3210
+ "type": {
3211
+ "text": "boolean"
3212
+ },
3213
+ "default": "false",
3214
+ "description": "Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.",
3215
+ "attribute": "active",
3216
+ "reflects": true
3217
+ },
3218
+ {
3219
+ "kind": "field",
3220
+ "name": "placement",
3221
+ "type": {
3222
+ "text": "| 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end'"
3223
+ },
3224
+ "default": "'top'",
3225
+ "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
3226
+ "attribute": "placement",
3227
+ "reflects": true
3228
+ },
3229
+ {
3230
+ "kind": "field",
3231
+ "name": "strategy",
3232
+ "type": {
3233
+ "text": "'absolute' | 'fixed'"
3234
+ },
3235
+ "default": "'absolute'",
3236
+ "description": "Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.",
3237
+ "attribute": "strategy",
3238
+ "reflects": true
3239
+ },
3240
+ {
3241
+ "kind": "field",
3242
+ "name": "distance",
3243
+ "type": {
3244
+ "text": "number"
3245
+ },
3246
+ "default": "0",
3247
+ "description": "The distance in pixels from which to offset the panel away from its anchor.",
3248
+ "attribute": "distance"
3249
+ },
3250
+ {
3251
+ "kind": "field",
3252
+ "name": "skidding",
3253
+ "type": {
3254
+ "text": "number"
3255
+ },
3256
+ "default": "0",
3257
+ "description": "The distance in pixels from which to offset the panel along its anchor.",
3258
+ "attribute": "skidding"
3259
+ },
3260
+ {
3261
+ "kind": "field",
3262
+ "name": "arrow",
3263
+ "type": {
3264
+ "text": "boolean"
3265
+ },
3266
+ "default": "false",
3267
+ "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
3268
+ "attribute": "arrow"
3269
+ },
3270
+ {
3271
+ "kind": "field",
3272
+ "name": "arrowPlacement",
3273
+ "type": {
3274
+ "text": "'start' | 'end' | 'center' | 'anchor'"
3275
+ },
3276
+ "default": "'anchor'",
3277
+ "description": "The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.",
3278
+ "attribute": "arrow-placement"
3279
+ },
3280
+ {
3281
+ "kind": "field",
3282
+ "name": "arrowPadding",
3283
+ "type": {
3284
+ "text": "number"
3285
+ },
3286
+ "default": "10",
3287
+ "description": "The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.",
3288
+ "attribute": "arrow-padding"
3289
+ },
3290
+ {
3291
+ "kind": "field",
3292
+ "name": "flip",
3293
+ "type": {
3294
+ "text": "boolean"
3295
+ },
3296
+ "default": "false",
3297
+ "description": "When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.",
3298
+ "attribute": "flip"
3299
+ },
3300
+ {
3301
+ "kind": "field",
3302
+ "name": "flipFallbackPlacements",
3303
+ "type": {
3304
+ "text": "string"
3305
+ },
3306
+ "default": "''",
3307
+ "description": "If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.",
3308
+ "attribute": "flip-fallback-placements"
3309
+ },
3310
+ {
3311
+ "kind": "field",
3312
+ "name": "flipFallbackStrategy",
3313
+ "type": {
3314
+ "text": "'best-fit' | 'initial'"
3315
+ },
3316
+ "default": "'best-fit'",
3317
+ "description": "When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.",
3318
+ "attribute": "flip-fallback-strategy"
3319
+ },
3320
+ {
3321
+ "kind": "field",
3322
+ "name": "flipBoundary",
3323
+ "type": {
3324
+ "text": "Element | Element[]"
3325
+ },
3326
+ "description": "The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
3327
+ "attribute": "flipBoundary"
3328
+ },
3329
+ {
3330
+ "kind": "field",
3331
+ "name": "flipPadding",
3332
+ "type": {
3333
+ "text": "number"
3334
+ },
3335
+ "default": "0",
3336
+ "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
3337
+ "attribute": "flip-padding"
3338
+ },
3339
+ {
3340
+ "kind": "field",
3341
+ "name": "shift",
3342
+ "type": {
3343
+ "text": "boolean"
3344
+ },
3345
+ "default": "false",
3346
+ "description": "Moves the popup along the axis to keep it in view when clipped.",
3347
+ "attribute": "shift"
3348
+ },
3349
+ {
3350
+ "kind": "field",
3351
+ "name": "shiftBoundary",
3352
+ "type": {
3353
+ "text": "Element | Element[]"
3354
+ },
3355
+ "description": "The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
3356
+ "attribute": "shiftBoundary"
3357
+ },
3358
+ {
3359
+ "kind": "field",
3360
+ "name": "shiftPadding",
3361
+ "type": {
3362
+ "text": "number"
3363
+ },
3364
+ "default": "0",
3365
+ "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
3366
+ "attribute": "shift-padding"
3367
+ },
3368
+ {
3369
+ "kind": "field",
3370
+ "name": "autoSize",
3371
+ "type": {
3372
+ "text": "'horizontal' | 'vertical' | 'both'"
3373
+ },
3374
+ "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
3375
+ "attribute": "auto-size"
3376
+ },
3377
+ {
3378
+ "kind": "field",
3379
+ "name": "sync",
3380
+ "type": {
3381
+ "text": "'width' | 'height' | 'both'"
3382
+ },
3383
+ "description": "Syncs the popup's width or height to that of the anchor element.",
3384
+ "attribute": "sync"
3385
+ },
3386
+ {
3387
+ "kind": "field",
3388
+ "name": "autoSizeBoundary",
3389
+ "type": {
3390
+ "text": "Element | Element[]"
3391
+ },
3392
+ "description": "The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
3393
+ "attribute": "autoSizeBoundary"
3394
+ },
3395
+ {
3396
+ "kind": "field",
3397
+ "name": "autoSizePadding",
3398
+ "type": {
3399
+ "text": "number"
3400
+ },
3401
+ "default": "0",
3402
+ "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
3403
+ "attribute": "auto-size-padding"
3404
+ },
3405
+ {
3406
+ "kind": "method",
3407
+ "name": "handleAnchorChange",
3408
+ "privacy": "private"
3409
+ },
3410
+ {
3411
+ "kind": "method",
3412
+ "name": "start",
3413
+ "privacy": "private"
3414
+ },
3415
+ {
3416
+ "kind": "method",
3417
+ "name": "stop",
3418
+ "privacy": "private",
3419
+ "return": {
3420
+ "type": {
3421
+ "text": "Promise<void>"
3422
+ }
3423
+ }
3424
+ },
3425
+ {
3426
+ "kind": "method",
3427
+ "name": "reposition",
3428
+ "description": "Forces the popup to recalculate and reposition itself."
3429
+ }
3430
+ ],
3431
+ "events": [
3432
+ {
3433
+ "description": "Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it.",
3434
+ "name": "syn-reposition",
3435
+ "reactName": "onSynReposition",
3436
+ "eventName": "SynRepositionEvent"
3437
+ }
3438
+ ],
3439
+ "attributes": [
3440
+ {
3441
+ "name": "anchor",
3442
+ "type": {
3443
+ "text": "Element | string | VirtualElement"
3444
+ },
3445
+ "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide the anchor\nelement `id`, a DOM element reference, or a `VirtualElement`. If the anchor lives inside the popup, use the\n`anchor` slot instead.",
3446
+ "fieldName": "anchor"
3447
+ },
3448
+ {
3449
+ "name": "active",
3450
+ "type": {
3451
+ "text": "boolean"
3452
+ },
3453
+ "default": "false",
3454
+ "description": "Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.",
3455
+ "fieldName": "active"
3456
+ },
3457
+ {
3458
+ "name": "placement",
3459
+ "type": {
3460
+ "text": "| 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end'"
3461
+ },
3462
+ "default": "'top'",
3463
+ "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
3464
+ "fieldName": "placement"
3465
+ },
3466
+ {
3467
+ "name": "strategy",
3468
+ "type": {
3469
+ "text": "'absolute' | 'fixed'"
3470
+ },
3471
+ "default": "'absolute'",
3472
+ "description": "Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.",
3473
+ "fieldName": "strategy"
3474
+ },
3475
+ {
3476
+ "name": "distance",
3477
+ "type": {
3478
+ "text": "number"
3479
+ },
3480
+ "default": "0",
3481
+ "description": "The distance in pixels from which to offset the panel away from its anchor.",
3482
+ "fieldName": "distance"
3483
+ },
3484
+ {
3485
+ "name": "skidding",
3486
+ "type": {
3487
+ "text": "number"
3488
+ },
3489
+ "default": "0",
3490
+ "description": "The distance in pixels from which to offset the panel along its anchor.",
3491
+ "fieldName": "skidding"
3492
+ },
3493
+ {
3494
+ "name": "arrow",
3495
+ "type": {
3496
+ "text": "boolean"
3497
+ },
3498
+ "default": "false",
3499
+ "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
3500
+ "fieldName": "arrow"
3501
+ },
3502
+ {
3503
+ "name": "arrow-placement",
3504
+ "type": {
3505
+ "text": "'start' | 'end' | 'center' | 'anchor'"
3506
+ },
3507
+ "default": "'anchor'",
3508
+ "description": "The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.",
3509
+ "fieldName": "arrowPlacement"
3510
+ },
3511
+ {
3512
+ "name": "arrow-padding",
3513
+ "type": {
3514
+ "text": "number"
3515
+ },
3516
+ "default": "10",
3517
+ "description": "The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.",
3518
+ "fieldName": "arrowPadding"
3519
+ },
3520
+ {
3521
+ "name": "flip",
3522
+ "type": {
3523
+ "text": "boolean"
3524
+ },
3525
+ "default": "false",
3526
+ "description": "When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.",
3527
+ "fieldName": "flip"
3528
+ },
3529
+ {
3530
+ "name": "flip-fallback-placements",
3531
+ "type": {
3532
+ "text": "string"
3533
+ },
3534
+ "default": "''",
3535
+ "description": "If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.",
3536
+ "fieldName": "flipFallbackPlacements"
3537
+ },
3538
+ {
3539
+ "name": "flip-fallback-strategy",
3540
+ "type": {
3541
+ "text": "'best-fit' | 'initial'"
3542
+ },
3543
+ "default": "'best-fit'",
3544
+ "description": "When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.",
3545
+ "fieldName": "flipFallbackStrategy"
3546
+ },
3547
+ {
3548
+ "name": "flipBoundary",
3549
+ "type": {
3550
+ "text": "Element | Element[]"
3551
+ },
3552
+ "description": "The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
3553
+ "fieldName": "flipBoundary"
3554
+ },
3555
+ {
3556
+ "name": "flip-padding",
3557
+ "type": {
3558
+ "text": "number"
3559
+ },
3560
+ "default": "0",
3561
+ "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
3562
+ "fieldName": "flipPadding"
3563
+ },
3564
+ {
3565
+ "name": "shift",
3566
+ "type": {
3567
+ "text": "boolean"
3568
+ },
3569
+ "default": "false",
3570
+ "description": "Moves the popup along the axis to keep it in view when clipped.",
3571
+ "fieldName": "shift"
3572
+ },
3573
+ {
3574
+ "name": "shiftBoundary",
3575
+ "type": {
3576
+ "text": "Element | Element[]"
3577
+ },
3578
+ "description": "The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
3579
+ "fieldName": "shiftBoundary"
3580
+ },
3581
+ {
3582
+ "name": "shift-padding",
3583
+ "type": {
3584
+ "text": "number"
3585
+ },
3586
+ "default": "0",
3587
+ "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
3588
+ "fieldName": "shiftPadding"
3589
+ },
3590
+ {
3591
+ "name": "auto-size",
3592
+ "type": {
3593
+ "text": "'horizontal' | 'vertical' | 'both'"
3594
+ },
3595
+ "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
3596
+ "fieldName": "autoSize"
3597
+ },
3598
+ {
3599
+ "name": "sync",
3600
+ "type": {
3601
+ "text": "'width' | 'height' | 'both'"
3602
+ },
3603
+ "description": "Syncs the popup's width or height to that of the anchor element.",
3604
+ "fieldName": "sync"
3605
+ },
3606
+ {
3607
+ "name": "autoSizeBoundary",
3608
+ "type": {
3609
+ "text": "Element | Element[]"
3610
+ },
3611
+ "description": "The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
3612
+ "fieldName": "autoSizeBoundary"
3613
+ },
3614
+ {
3615
+ "name": "auto-size-padding",
3616
+ "type": {
3617
+ "text": "number"
3618
+ },
3619
+ "default": "0",
3620
+ "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
3621
+ "fieldName": "autoSizePadding"
3622
+ }
3623
+ ],
3624
+ "superclass": {
3625
+ "name": "SynergyElement",
3626
+ "module": "/src/internal/synergy-element.js"
3627
+ },
3628
+ "summary": "Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.",
3629
+ "tagNameWithoutPrefix": "popup",
3630
+ "tagName": "syn-popup",
3631
+ "customElement": true,
3632
+ "jsDoc": "/**\n * @summary Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.\n * @documentation https://synergy.style/components/popup\n * @status stable\n * @since 2.0\n *\n * @event syn-reposition - Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive\n * operations in your listener or consider debouncing it.\n *\n * @slot - The popup's content.\n * @slot anchor - The element the popup will be anchored to. If the anchor lives outside of the popup, you can use the\n * `anchor` attribute or property instead.\n *\n * @csspart arrow - The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are\n * assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and\n * maybe a border or box shadow.\n * @csspart popup - The popup's container. Useful for setting a background color, box shadow, etc.\n *\n * @cssproperty [--arrow-size=6px] - The size of the arrow. Note that an arrow won't be shown unless the `arrow`\n * attribute is used.\n * @cssproperty [--arrow-color=var(--syn-color-neutral-0)] - The color of the arrow.\n * @cssproperty [--auto-size-available-width] - A read-only custom property that determines the amount of width the\n * popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only\n * available when using `auto-size`.\n * @cssproperty [--auto-size-available-height] - A read-only custom property that determines the amount of height the\n * popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only\n * available when using `auto-size`.\n */",
3633
+ "documentation": "https://synergy.style/components/popup",
3634
+ "status": "stable",
3635
+ "since": "2.0"
3636
+ }
3637
+ ],
3638
+ "exports": [
3639
+ {
3640
+ "kind": "js",
3641
+ "name": "default",
3642
+ "declaration": {
3643
+ "name": "SynPopup",
3644
+ "module": "components/popup/popup.js"
3645
+ }
3646
+ }
3647
+ ]
3648
+ },
3649
+ {
3650
+ "kind": "javascript-module",
3651
+ "path": "components/radio/radio.js",
3652
+ "declarations": [
3653
+ {
3654
+ "kind": "class",
3655
+ "description": "",
3656
+ "name": "SynRadio",
3657
+ "cssParts": [
3658
+ {
3659
+ "description": "The component's base wrapper.",
3660
+ "name": "base"
3661
+ },
3662
+ {
3663
+ "description": "The circular container that wraps the radio's checked state.",
3664
+ "name": "control"
3665
+ },
3666
+ {
3667
+ "description": "The radio control when the radio is checked.",
3668
+ "name": "control--checked"
3669
+ },
3670
+ {
3671
+ "description": "The checked icon, an `<syn-icon>` element.",
3672
+ "name": "checked-icon"
3673
+ },
3674
+ {
3675
+ "description": "The container that wraps the radio's label.",
3676
+ "name": "label"
3677
+ }
3678
+ ],
3679
+ "slots": [
3680
+ {
3681
+ "description": "The radio's label.",
3682
+ "name": ""
3683
+ }
3684
+ ],
3685
+ "members": [
3686
+ {
3687
+ "kind": "field",
3688
+ "name": "dependencies",
3689
+ "type": {
3690
+ "text": "object"
3691
+ },
3692
+ "static": true,
3693
+ "default": "{ 'syn-icon': SynIcon }"
3694
+ },
3695
+ {
3696
+ "kind": "field",
3697
+ "name": "checked",
3698
+ "type": {
3699
+ "text": "boolean"
3700
+ },
3701
+ "default": "false"
3702
+ },
3703
+ {
3704
+ "kind": "field",
3705
+ "name": "hasFocus",
3706
+ "type": {
3707
+ "text": "boolean"
3708
+ },
3709
+ "privacy": "protected",
3710
+ "default": "false"
3711
+ },
3712
+ {
3713
+ "kind": "field",
3714
+ "name": "value",
3715
+ "type": {
3716
+ "text": "string"
3717
+ },
3718
+ "description": "The radio's value. When selected, the radio group will receive this value.",
3719
+ "attribute": "value"
3720
+ },
3721
+ {
3722
+ "kind": "field",
3723
+ "name": "size",
3724
+ "type": {
3725
+ "text": "'small' | 'medium' | 'large'"
3726
+ },
3727
+ "default": "'medium'",
3728
+ "description": "The radio's size. When used inside a radio group, the size will be determined by the radio group's size so this\nattribute can typically be omitted.",
3729
+ "attribute": "size",
3730
+ "reflects": true
3731
+ },
3732
+ {
3733
+ "kind": "field",
3734
+ "name": "disabled",
3735
+ "type": {
3736
+ "text": "boolean"
3737
+ },
3738
+ "default": "false",
3739
+ "description": "Disables the radio.",
3740
+ "attribute": "disabled",
3741
+ "reflects": true
3742
+ },
3743
+ {
3744
+ "kind": "field",
3745
+ "name": "handleBlur",
3746
+ "privacy": "private"
3747
+ },
3748
+ {
3749
+ "kind": "field",
3750
+ "name": "handleClick",
3751
+ "privacy": "private"
3752
+ },
3753
+ {
3754
+ "kind": "field",
3755
+ "name": "handleFocus",
3756
+ "privacy": "private"
3757
+ },
3758
+ {
3759
+ "kind": "method",
3760
+ "name": "setInitialAttributes",
3761
+ "privacy": "private"
3762
+ },
3763
+ {
3764
+ "kind": "method",
3765
+ "name": "handleCheckedChange"
3766
+ },
3767
+ {
3768
+ "kind": "method",
3769
+ "name": "handleDisabledChange"
3770
+ }
3771
+ ],
3772
+ "events": [
3773
+ {
3774
+ "description": "Emitted when the control loses focus.",
3775
+ "name": "syn-blur",
3776
+ "reactName": "onSynBlur",
3777
+ "eventName": "SynBlurEvent"
3778
+ },
3779
+ {
3780
+ "description": "Emitted when the control gains focus.",
3781
+ "name": "syn-focus",
3782
+ "reactName": "onSynFocus",
3783
+ "eventName": "SynFocusEvent"
3784
+ }
3785
+ ],
3786
+ "attributes": [
3787
+ {
3788
+ "name": "value",
3789
+ "type": {
3790
+ "text": "string"
3791
+ },
3792
+ "description": "The radio's value. When selected, the radio group will receive this value.",
3793
+ "fieldName": "value"
3794
+ },
3795
+ {
3796
+ "name": "size",
3797
+ "type": {
3798
+ "text": "'small' | 'medium' | 'large'"
3799
+ },
3800
+ "default": "'medium'",
3801
+ "description": "The radio's size. When used inside a radio group, the size will be determined by the radio group's size so this\nattribute can typically be omitted.",
3802
+ "fieldName": "size"
3803
+ },
3804
+ {
3805
+ "name": "disabled",
3806
+ "type": {
3807
+ "text": "boolean"
3808
+ },
3809
+ "default": "false",
3810
+ "description": "Disables the radio.",
3811
+ "fieldName": "disabled"
3812
+ }
3813
+ ],
3814
+ "superclass": {
3815
+ "name": "SynergyElement",
3816
+ "module": "/src/internal/synergy-element.js"
3817
+ },
3818
+ "summary": "Radios allow the user to select a single option from a group.",
3819
+ "tagNameWithoutPrefix": "radio",
3820
+ "tagName": "syn-radio",
3821
+ "customElement": true,
3822
+ "jsDoc": "/**\n * @summary Radios allow the user to select a single option from a group.\n * @documentation https://synergy.style/components/radio\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon\n *\n * @slot - The radio's label.\n *\n * @event syn-blur - Emitted when the control loses focus.\n * @event syn-focus - Emitted when the control gains focus.\n *\n * @csspart base - The component's base wrapper.\n * @csspart control - The circular container that wraps the radio's checked state.\n * @csspart control--checked - The radio control when the radio is checked.\n * @csspart checked-icon - The checked icon, an `<syn-icon>` element.\n * @csspart label - The container that wraps the radio's label.\n */",
3823
+ "documentation": "https://synergy.style/components/radio",
3824
+ "status": "stable",
3825
+ "since": "2.0",
3826
+ "dependencies": [
3827
+ "syn-icon"
3828
+ ]
3829
+ }
3830
+ ],
3831
+ "exports": [
3832
+ {
3833
+ "kind": "js",
3834
+ "name": "default",
3835
+ "declaration": {
3836
+ "name": "SynRadio",
3837
+ "module": "components/radio/radio.js"
3838
+ }
3839
+ }
3840
+ ]
3841
+ },
3842
+ {
3843
+ "kind": "javascript-module",
3844
+ "path": "components/radio-button/radio-button.js",
3845
+ "declarations": [
3846
+ {
3847
+ "kind": "class",
3848
+ "description": "",
3849
+ "name": "SynRadioButton",
3850
+ "cssParts": [
3851
+ {
3852
+ "description": "The component's base wrapper.",
3853
+ "name": "base"
3854
+ },
3855
+ {
3856
+ "description": "The internal `<button>` element.",
3857
+ "name": "button"
3858
+ },
3859
+ {
3860
+ "description": "The internal button element when the radio button is checked.",
3861
+ "name": "button--checked"
3862
+ },
3863
+ {
3864
+ "description": "The container that wraps the prefix.",
3865
+ "name": "prefix"
3866
+ },
3867
+ {
3868
+ "description": "The container that wraps the radio button's label.",
3869
+ "name": "label"
3870
+ },
3871
+ {
3872
+ "description": "The container that wraps the suffix.",
3873
+ "name": "suffix"
3874
+ }
3875
+ ],
3876
+ "slots": [
3877
+ {
3878
+ "description": "The radio button's label.",
3879
+ "name": ""
3880
+ },
3881
+ {
3882
+ "description": "A presentational prefix icon or similar element.",
3883
+ "name": "prefix"
3884
+ },
3885
+ {
3886
+ "description": "A presentational suffix icon or similar element.",
3887
+ "name": "suffix"
3888
+ }
3889
+ ],
3890
+ "members": [
3891
+ {
3892
+ "kind": "field",
3893
+ "name": "hasSlotController",
3894
+ "privacy": "private",
3895
+ "readonly": true,
3896
+ "default": "new HasSlotController(this, '[default]', 'prefix', 'suffix')"
3897
+ },
3898
+ {
3899
+ "kind": "field",
3900
+ "name": "input",
3901
+ "type": {
3902
+ "text": "HTMLInputElement"
3903
+ }
3904
+ },
3905
+ {
3906
+ "kind": "field",
3907
+ "name": "hiddenInput",
3908
+ "type": {
3909
+ "text": "HTMLInputElement"
3910
+ }
3911
+ },
3912
+ {
3913
+ "kind": "field",
3914
+ "name": "hasFocus",
3915
+ "type": {
3916
+ "text": "boolean"
3917
+ },
3918
+ "privacy": "protected",
3919
+ "default": "false"
3920
+ },
3921
+ {
3922
+ "kind": "field",
3923
+ "name": "value",
3924
+ "type": {
3925
+ "text": "string"
3926
+ },
3927
+ "description": "The radio's value. When selected, the radio group will receive this value.",
3928
+ "attribute": "value"
3929
+ },
3930
+ {
3931
+ "kind": "field",
3932
+ "name": "disabled",
3933
+ "type": {
3934
+ "text": "boolean"
3935
+ },
3936
+ "default": "false",
3937
+ "description": "Disables the radio button.",
3938
+ "attribute": "disabled",
3939
+ "reflects": true
3940
+ },
3941
+ {
3942
+ "kind": "field",
3943
+ "name": "size",
3944
+ "type": {
3945
+ "text": "'small' | 'medium' | 'large'"
3946
+ },
3947
+ "default": "'medium'",
3948
+ "description": "The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so\nthis attribute can typically be omitted.",
3949
+ "attribute": "size",
3950
+ "reflects": true
3951
+ },
3952
+ {
3953
+ "kind": "method",
3954
+ "name": "handleBlur",
3955
+ "privacy": "private"
3956
+ },
3957
+ {
3958
+ "kind": "method",
3959
+ "name": "handleClick",
3960
+ "privacy": "private",
3961
+ "parameters": [
3962
+ {
3963
+ "name": "e",
3964
+ "type": {
3965
+ "text": "MouseEvent"
3966
+ }
3967
+ }
3968
+ ]
3969
+ },
3970
+ {
3971
+ "kind": "method",
3972
+ "name": "handleFocus",
3973
+ "privacy": "private"
3974
+ },
3975
+ {
3976
+ "kind": "method",
3977
+ "name": "handleDisabledChange"
3978
+ },
3979
+ {
3980
+ "kind": "method",
3981
+ "name": "focus",
3982
+ "parameters": [
3983
+ {
3984
+ "name": "options",
3985
+ "optional": true,
3986
+ "type": {
3987
+ "text": "FocusOptions"
3988
+ }
3989
+ }
3990
+ ],
3991
+ "description": "Sets focus on the radio button."
3992
+ },
3993
+ {
3994
+ "kind": "method",
3995
+ "name": "blur",
3996
+ "description": "Removes focus from the radio button."
3997
+ }
3998
+ ],
3999
+ "events": [
4000
+ {
4001
+ "description": "Emitted when the button loses focus.",
4002
+ "name": "syn-blur",
4003
+ "reactName": "onSynBlur",
4004
+ "eventName": "SynBlurEvent"
4005
+ },
4006
+ {
4007
+ "description": "Emitted when the button gains focus.",
4008
+ "name": "syn-focus",
4009
+ "reactName": "onSynFocus",
4010
+ "eventName": "SynFocusEvent"
4011
+ }
4012
+ ],
4013
+ "attributes": [
4014
+ {
4015
+ "name": "value",
4016
+ "type": {
4017
+ "text": "string"
4018
+ },
4019
+ "description": "The radio's value. When selected, the radio group will receive this value.",
4020
+ "fieldName": "value"
4021
+ },
4022
+ {
4023
+ "name": "disabled",
4024
+ "type": {
4025
+ "text": "boolean"
4026
+ },
4027
+ "default": "false",
4028
+ "description": "Disables the radio button.",
4029
+ "fieldName": "disabled"
4030
+ },
4031
+ {
4032
+ "name": "size",
4033
+ "type": {
4034
+ "text": "'small' | 'medium' | 'large'"
4035
+ },
4036
+ "default": "'medium'",
4037
+ "description": "The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so\nthis attribute can typically be omitted.",
4038
+ "fieldName": "size"
4039
+ }
4040
+ ],
4041
+ "superclass": {
4042
+ "name": "SynergyElement",
4043
+ "module": "/src/internal/synergy-element.js"
4044
+ },
4045
+ "summary": "Radios buttons allow the user to select a single option from a group using a button-like control.",
4046
+ "tagNameWithoutPrefix": "radio-button",
4047
+ "tagName": "syn-radio-button",
4048
+ "customElement": true,
4049
+ "jsDoc": "/**\n * @summary Radios buttons allow the user to select a single option from a group using a button-like control.\n * @documentation https://synergy.style/components/radio-button\n * @status stable\n * @since 2.0\n *\n * @slot - The radio button's label.\n * @slot prefix - A presentational prefix icon or similar element.\n * @slot suffix - A presentational suffix icon or similar element.\n *\n * @event syn-blur - Emitted when the button loses focus.\n * @event syn-focus - Emitted when the button gains focus.\n *\n * @csspart base - The component's base wrapper.\n * @csspart button - The internal `<button>` element.\n * @csspart button--checked - The internal button element when the radio button is checked.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart label - The container that wraps the radio button's label.\n * @csspart suffix - The container that wraps the suffix.\n */",
4050
+ "documentation": "https://synergy.style/components/radio-button",
4051
+ "status": "stable",
4052
+ "since": "2.0"
4053
+ }
4054
+ ],
4055
+ "exports": [
4056
+ {
4057
+ "kind": "js",
4058
+ "name": "default",
4059
+ "declaration": {
4060
+ "name": "SynRadioButton",
4061
+ "module": "components/radio-button/radio-button.js"
4062
+ }
4063
+ }
4064
+ ]
4065
+ },
4066
+ {
4067
+ "kind": "javascript-module",
4068
+ "path": "components/radio-group/radio-group.js",
4069
+ "declarations": [
4070
+ {
4071
+ "kind": "class",
4072
+ "description": "",
4073
+ "name": "SynRadioGroup",
4074
+ "cssParts": [
4075
+ {
4076
+ "description": "The form control that wraps the label, input, and help text.",
4077
+ "name": "form-control"
4078
+ },
4079
+ {
4080
+ "description": "The label's wrapper.",
4081
+ "name": "form-control-label"
4082
+ },
4083
+ {
4084
+ "description": "The input's wrapper.",
4085
+ "name": "form-control-input"
4086
+ },
4087
+ {
4088
+ "description": "The help text's wrapper.",
4089
+ "name": "form-control-help-text"
4090
+ },
4091
+ {
4092
+ "description": "The button group that wraps radio buttons.",
4093
+ "name": "button-group"
3197
4094
  },
3198
4095
  {
3199
4096
  "description": "The button group's `base` part.",
@@ -3202,12 +4099,501 @@
3202
4099
  ],
3203
4100
  "slots": [
3204
4101
  {
3205
- "description": "The default slot where `<syn-radio>` or `<syn-radio-button>` elements are placed.",
4102
+ "description": "The default slot where `<syn-radio>` or `<syn-radio-button>` elements are placed.",
4103
+ "name": ""
4104
+ },
4105
+ {
4106
+ "description": "The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.",
4107
+ "name": "label"
4108
+ }
4109
+ ],
4110
+ "members": [
4111
+ {
4112
+ "kind": "field",
4113
+ "name": "dependencies",
4114
+ "type": {
4115
+ "text": "object"
4116
+ },
4117
+ "static": true,
4118
+ "default": "{ 'syn-button-group': SynButtonGroup }"
4119
+ },
4120
+ {
4121
+ "kind": "field",
4122
+ "name": "formControlController",
4123
+ "privacy": "protected",
4124
+ "readonly": true,
4125
+ "default": "new FormControlController(this)"
4126
+ },
4127
+ {
4128
+ "kind": "field",
4129
+ "name": "hasSlotController",
4130
+ "privacy": "private",
4131
+ "readonly": true,
4132
+ "default": "new HasSlotController(this, 'help-text', 'label')"
4133
+ },
4134
+ {
4135
+ "kind": "field",
4136
+ "name": "customValidityMessage",
4137
+ "type": {
4138
+ "text": "string"
4139
+ },
4140
+ "privacy": "private",
4141
+ "default": "''"
4142
+ },
4143
+ {
4144
+ "kind": "field",
4145
+ "name": "validationTimeout",
4146
+ "type": {
4147
+ "text": "number"
4148
+ },
4149
+ "privacy": "private"
4150
+ },
4151
+ {
4152
+ "kind": "field",
4153
+ "name": "defaultSlot",
4154
+ "type": {
4155
+ "text": "HTMLSlotElement"
4156
+ }
4157
+ },
4158
+ {
4159
+ "kind": "field",
4160
+ "name": "validationInput",
4161
+ "type": {
4162
+ "text": "HTMLInputElement"
4163
+ }
4164
+ },
4165
+ {
4166
+ "kind": "field",
4167
+ "name": "hasButtonGroup",
4168
+ "type": {
4169
+ "text": "boolean"
4170
+ },
4171
+ "privacy": "private",
4172
+ "default": "false"
4173
+ },
4174
+ {
4175
+ "kind": "field",
4176
+ "name": "errorMessage",
4177
+ "type": {
4178
+ "text": "string"
4179
+ },
4180
+ "privacy": "private",
4181
+ "default": "''"
4182
+ },
4183
+ {
4184
+ "kind": "field",
4185
+ "name": "defaultValue",
4186
+ "type": {
4187
+ "text": "string"
4188
+ },
4189
+ "default": "''"
4190
+ },
4191
+ {
4192
+ "kind": "field",
4193
+ "name": "label",
4194
+ "type": {
4195
+ "text": "string"
4196
+ },
4197
+ "default": "''",
4198
+ "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
4199
+ "attribute": "label"
4200
+ },
4201
+ {
4202
+ "kind": "field",
4203
+ "name": "helpText",
4204
+ "type": {
4205
+ "text": "string"
4206
+ },
4207
+ "default": "''",
4208
+ "description": "The radio groups's help text. If you need to display HTML, use the `help-text` slot instead.",
4209
+ "attribute": "help-text"
4210
+ },
4211
+ {
4212
+ "kind": "field",
4213
+ "name": "name",
4214
+ "type": {
4215
+ "text": "string"
4216
+ },
4217
+ "default": "'option'",
4218
+ "description": "The name of the radio group, submitted as a name/value pair with form data.",
4219
+ "attribute": "name"
4220
+ },
4221
+ {
4222
+ "kind": "field",
4223
+ "name": "value",
4224
+ "type": {
4225
+ "text": "string"
4226
+ },
4227
+ "default": "''",
4228
+ "description": "The current value of the radio group, submitted as a name/value pair with form data.",
4229
+ "attribute": "value",
4230
+ "reflects": true
4231
+ },
4232
+ {
4233
+ "kind": "field",
4234
+ "name": "size",
4235
+ "type": {
4236
+ "text": "'small' | 'medium' | 'large'"
4237
+ },
4238
+ "default": "'medium'",
4239
+ "description": "The radio group's size. This size will be applied to all child radios and radio buttons.",
4240
+ "attribute": "size",
4241
+ "reflects": true
4242
+ },
4243
+ {
4244
+ "kind": "field",
4245
+ "name": "form",
4246
+ "type": {
4247
+ "text": "string"
4248
+ },
4249
+ "default": "''",
4250
+ "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
4251
+ "attribute": "form",
4252
+ "reflects": true
4253
+ },
4254
+ {
4255
+ "kind": "field",
4256
+ "name": "required",
4257
+ "type": {
4258
+ "text": "boolean"
4259
+ },
4260
+ "default": "false",
4261
+ "description": "Ensures a child radio is checked before allowing the containing form to submit.",
4262
+ "attribute": "required",
4263
+ "reflects": true
4264
+ },
4265
+ {
4266
+ "kind": "field",
4267
+ "name": "validity",
4268
+ "description": "Gets the validity state object",
4269
+ "readonly": true
4270
+ },
4271
+ {
4272
+ "kind": "field",
4273
+ "name": "validationMessage",
4274
+ "description": "Gets the validation message",
4275
+ "readonly": true
4276
+ },
4277
+ {
4278
+ "kind": "method",
4279
+ "name": "getAllRadios",
4280
+ "privacy": "private"
4281
+ },
4282
+ {
4283
+ "kind": "method",
4284
+ "name": "handleRadioClick",
4285
+ "privacy": "private",
4286
+ "parameters": [
4287
+ {
4288
+ "name": "event",
4289
+ "type": {
4290
+ "text": "MouseEvent"
4291
+ }
4292
+ }
4293
+ ]
4294
+ },
4295
+ {
4296
+ "kind": "method",
4297
+ "name": "handleKeyDown",
4298
+ "privacy": "private",
4299
+ "parameters": [
4300
+ {
4301
+ "name": "event",
4302
+ "type": {
4303
+ "text": "KeyboardEvent"
4304
+ }
4305
+ }
4306
+ ]
4307
+ },
4308
+ {
4309
+ "kind": "method",
4310
+ "name": "handleLabelClick",
4311
+ "privacy": "private"
4312
+ },
4313
+ {
4314
+ "kind": "method",
4315
+ "name": "handleInvalid",
4316
+ "privacy": "private",
4317
+ "parameters": [
4318
+ {
4319
+ "name": "event",
4320
+ "type": {
4321
+ "text": "Event"
4322
+ }
4323
+ }
4324
+ ]
4325
+ },
4326
+ {
4327
+ "kind": "method",
4328
+ "name": "syncRadioElements",
4329
+ "privacy": "private"
4330
+ },
4331
+ {
4332
+ "kind": "method",
4333
+ "name": "syncRadios",
4334
+ "privacy": "private"
4335
+ },
4336
+ {
4337
+ "kind": "method",
4338
+ "name": "updateCheckedRadio",
4339
+ "privacy": "private"
4340
+ },
4341
+ {
4342
+ "kind": "method",
4343
+ "name": "handleSizeChange"
4344
+ },
4345
+ {
4346
+ "kind": "method",
4347
+ "name": "handleValueChange"
4348
+ },
4349
+ {
4350
+ "kind": "method",
4351
+ "name": "checkValidity",
4352
+ "description": "Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid."
4353
+ },
4354
+ {
4355
+ "kind": "method",
4356
+ "name": "getForm",
4357
+ "return": {
4358
+ "type": {
4359
+ "text": "HTMLFormElement | null"
4360
+ }
4361
+ },
4362
+ "description": "Gets the associated form, if one exists."
4363
+ },
4364
+ {
4365
+ "kind": "method",
4366
+ "name": "reportValidity",
4367
+ "return": {
4368
+ "type": {
4369
+ "text": "boolean"
4370
+ }
4371
+ },
4372
+ "description": "Checks for validity and shows the browser's validation message if the control is invalid."
4373
+ },
4374
+ {
4375
+ "kind": "method",
4376
+ "name": "setCustomValidity",
4377
+ "parameters": [
4378
+ {
4379
+ "name": "message",
4380
+ "default": "''"
4381
+ }
4382
+ ],
4383
+ "description": "Sets a custom validation message. Pass an empty string to restore validity."
4384
+ }
4385
+ ],
4386
+ "events": [
4387
+ {
4388
+ "description": "Emitted when the radio group's selected value changes.",
4389
+ "name": "syn-change",
4390
+ "reactName": "onSynChange",
4391
+ "eventName": "SynChangeEvent"
4392
+ },
4393
+ {
4394
+ "description": "Emitted when the radio group receives user input.",
4395
+ "name": "syn-input",
4396
+ "reactName": "onSynInput",
4397
+ "eventName": "SynInputEvent"
4398
+ },
4399
+ {
4400
+ "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
4401
+ "name": "syn-invalid",
4402
+ "reactName": "onSynInvalid",
4403
+ "eventName": "SynInvalidEvent"
4404
+ }
4405
+ ],
4406
+ "attributes": [
4407
+ {
4408
+ "name": "label",
4409
+ "type": {
4410
+ "text": "string"
4411
+ },
4412
+ "default": "''",
4413
+ "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
4414
+ "fieldName": "label"
4415
+ },
4416
+ {
4417
+ "name": "help-text",
4418
+ "type": {
4419
+ "text": "string"
4420
+ },
4421
+ "default": "''",
4422
+ "description": "The radio groups's help text. If you need to display HTML, use the `help-text` slot instead.",
4423
+ "fieldName": "helpText"
4424
+ },
4425
+ {
4426
+ "name": "name",
4427
+ "type": {
4428
+ "text": "string"
4429
+ },
4430
+ "default": "'option'",
4431
+ "description": "The name of the radio group, submitted as a name/value pair with form data.",
4432
+ "fieldName": "name"
4433
+ },
4434
+ {
4435
+ "name": "value",
4436
+ "type": {
4437
+ "text": "string"
4438
+ },
4439
+ "default": "''",
4440
+ "description": "The current value of the radio group, submitted as a name/value pair with form data.",
4441
+ "fieldName": "value"
4442
+ },
4443
+ {
4444
+ "name": "size",
4445
+ "type": {
4446
+ "text": "'small' | 'medium' | 'large'"
4447
+ },
4448
+ "default": "'medium'",
4449
+ "description": "The radio group's size. This size will be applied to all child radios and radio buttons.",
4450
+ "fieldName": "size"
4451
+ },
4452
+ {
4453
+ "name": "form",
4454
+ "type": {
4455
+ "text": "string"
4456
+ },
4457
+ "default": "''",
4458
+ "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
4459
+ "fieldName": "form"
4460
+ },
4461
+ {
4462
+ "name": "required",
4463
+ "type": {
4464
+ "text": "boolean"
4465
+ },
4466
+ "default": "false",
4467
+ "description": "Ensures a child radio is checked before allowing the containing form to submit.",
4468
+ "fieldName": "required"
4469
+ }
4470
+ ],
4471
+ "superclass": {
4472
+ "name": "SynergyElement",
4473
+ "module": "/src/internal/synergy-element.js"
4474
+ },
4475
+ "summary": "Radio groups are used to group multiple [radios](/components/radio) or [radio buttons](/components/radio-button) so they function as a single form control.",
4476
+ "tagNameWithoutPrefix": "radio-group",
4477
+ "tagName": "syn-radio-group",
4478
+ "customElement": true,
4479
+ "jsDoc": "/**\n * @summary 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 * @documentation https://synergy.style/components/radio-group\n * @status stable\n * @since 2.0\n *\n * @dependency syn-button-group\n *\n * @slot - The default slot where `<syn-radio>` or `<syn-radio-button>` elements are placed.\n * @slot label - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label`\n * attribute.\n *\n * @event syn-change - Emitted when the radio group's selected value changes.\n * @event syn-input - Emitted when the radio group receives user input.\n * @event syn-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The input's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart button-group - The button group that wraps radio buttons.\n * @csspart button-group__base - The button group's `base` part.\n */",
4480
+ "documentation": "https://synergy.style/components/radio-group",
4481
+ "status": "stable",
4482
+ "since": "2.0",
4483
+ "dependencies": [
4484
+ "syn-button-group"
4485
+ ]
4486
+ }
4487
+ ],
4488
+ "exports": [
4489
+ {
4490
+ "kind": "js",
4491
+ "name": "default",
4492
+ "declaration": {
4493
+ "name": "SynRadioGroup",
4494
+ "module": "components/radio-group/radio-group.js"
4495
+ }
4496
+ }
4497
+ ]
4498
+ },
4499
+ {
4500
+ "kind": "javascript-module",
4501
+ "path": "components/select/select.js",
4502
+ "declarations": [
4503
+ {
4504
+ "kind": "class",
4505
+ "description": "",
4506
+ "name": "SynSelect",
4507
+ "cssParts": [
4508
+ {
4509
+ "description": "The form control that wraps the label, input, and help text.",
4510
+ "name": "form-control"
4511
+ },
4512
+ {
4513
+ "description": "The label's wrapper.",
4514
+ "name": "form-control-label"
4515
+ },
4516
+ {
4517
+ "description": "The select's wrapper.",
4518
+ "name": "form-control-input"
4519
+ },
4520
+ {
4521
+ "description": "The help text's wrapper.",
4522
+ "name": "form-control-help-text"
4523
+ },
4524
+ {
4525
+ "description": "The container the wraps the prefix, combobox, clear icon, and expand button.",
4526
+ "name": "combobox"
4527
+ },
4528
+ {
4529
+ "description": "The container that wraps the prefix slot.",
4530
+ "name": "prefix"
4531
+ },
4532
+ {
4533
+ "description": "The element that displays the selected option's label, an `<input>` element.",
4534
+ "name": "display-input"
4535
+ },
4536
+ {
4537
+ "description": "The listbox container where options are slotted.",
4538
+ "name": "listbox"
4539
+ },
4540
+ {
4541
+ "description": "The container that houses option tags when `multiselect` is used.",
4542
+ "name": "tags"
4543
+ },
4544
+ {
4545
+ "description": "The individual tags that represent each multiselect option.",
4546
+ "name": "tag"
4547
+ },
4548
+ {
4549
+ "description": "The tag's base part.",
4550
+ "name": "tag__base"
4551
+ },
4552
+ {
4553
+ "description": "The tag's content part.",
4554
+ "name": "tag__content"
4555
+ },
4556
+ {
4557
+ "description": "The tag's remove button.",
4558
+ "name": "tag__remove-button"
4559
+ },
4560
+ {
4561
+ "description": "The tag's remove button base part.",
4562
+ "name": "tag__remove-button__base"
4563
+ },
4564
+ {
4565
+ "description": "The clear button.",
4566
+ "name": "clear-button"
4567
+ },
4568
+ {
4569
+ "description": "The container that wraps the expand icon.",
4570
+ "name": "expand-icon"
4571
+ }
4572
+ ],
4573
+ "slots": [
4574
+ {
4575
+ "description": "The listbox options. Must be `<syn-option>` elements. You can use `<syn-divider>` to group items visually.",
3206
4576
  "name": ""
3207
4577
  },
3208
4578
  {
3209
- "description": "The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.",
4579
+ "description": "The input's label. Alternatively, you can use the `label` attribute.",
3210
4580
  "name": "label"
4581
+ },
4582
+ {
4583
+ "description": "Used to prepend a presentational icon or similar element to the combobox.",
4584
+ "name": "prefix"
4585
+ },
4586
+ {
4587
+ "description": "An icon to use in lieu of the default clear icon.",
4588
+ "name": "clear-icon"
4589
+ },
4590
+ {
4591
+ "description": "The icon to show when the control is expanded and collapsed. Rotates on open and close.",
4592
+ "name": "expand-icon"
4593
+ },
4594
+ {
4595
+ "description": "Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.",
4596
+ "name": "help-text"
3211
4597
  }
3212
4598
  ],
3213
4599
  "members": [
@@ -3218,14 +4604,14 @@
3218
4604
  "text": "object"
3219
4605
  },
3220
4606
  "static": true,
3221
- "default": "{ 'syn-button-group': SynButtonGroup }"
4607
+ "default": "{\n 'syn-icon': SynIcon,\n 'syn-popup': SynPopup,\n 'syn-tag': SynTag\n }"
3222
4608
  },
3223
4609
  {
3224
4610
  "kind": "field",
3225
4611
  "name": "formControlController",
3226
- "privacy": "protected",
4612
+ "privacy": "private",
3227
4613
  "readonly": true,
3228
- "default": "new FormControlController(this)"
4614
+ "default": "new FormControlController(this, {\n assumeInteractionOn: ['syn-blur', 'syn-input']\n })"
3229
4615
  },
3230
4616
  {
3231
4617
  "kind": "field",
@@ -3236,7 +4622,14 @@
3236
4622
  },
3237
4623
  {
3238
4624
  "kind": "field",
3239
- "name": "customValidityMessage",
4625
+ "name": "localize",
4626
+ "privacy": "private",
4627
+ "readonly": true,
4628
+ "default": "new LocalizeController(this)"
4629
+ },
4630
+ {
4631
+ "kind": "field",
4632
+ "name": "typeToSelectString",
3240
4633
  "type": {
3241
4634
  "text": "string"
3242
4635
  },
@@ -3245,7 +4638,7 @@
3245
4638
  },
3246
4639
  {
3247
4640
  "kind": "field",
3248
- "name": "validationTimeout",
4641
+ "name": "typeToSelectTimeout",
3249
4642
  "type": {
3250
4643
  "text": "number"
3251
4644
  },
@@ -3253,21 +4646,42 @@
3253
4646
  },
3254
4647
  {
3255
4648
  "kind": "field",
3256
- "name": "defaultSlot",
4649
+ "name": "popup",
4650
+ "type": {
4651
+ "text": "SynPopup"
4652
+ }
4653
+ },
4654
+ {
4655
+ "kind": "field",
4656
+ "name": "combobox",
3257
4657
  "type": {
3258
4658
  "text": "HTMLSlotElement"
3259
4659
  }
3260
4660
  },
3261
4661
  {
3262
4662
  "kind": "field",
3263
- "name": "validationInput",
4663
+ "name": "displayInput",
3264
4664
  "type": {
3265
4665
  "text": "HTMLInputElement"
3266
4666
  }
3267
4667
  },
3268
4668
  {
3269
4669
  "kind": "field",
3270
- "name": "hasButtonGroup",
4670
+ "name": "valueInput",
4671
+ "type": {
4672
+ "text": "HTMLInputElement"
4673
+ }
4674
+ },
4675
+ {
4676
+ "kind": "field",
4677
+ "name": "listbox",
4678
+ "type": {
4679
+ "text": "HTMLSlotElement"
4680
+ }
4681
+ },
4682
+ {
4683
+ "kind": "field",
4684
+ "name": "hasFocus",
3271
4685
  "type": {
3272
4686
  "text": "boolean"
3273
4687
  },
@@ -3276,20 +4690,139 @@
3276
4690
  },
3277
4691
  {
3278
4692
  "kind": "field",
3279
- "name": "errorMessage",
4693
+ "name": "displayLabel",
3280
4694
  "type": {
3281
4695
  "text": "string"
3282
4696
  },
3283
- "privacy": "private",
3284
4697
  "default": "''"
3285
4698
  },
4699
+ {
4700
+ "kind": "field",
4701
+ "name": "currentOption",
4702
+ "type": {
4703
+ "text": "SynOption"
4704
+ }
4705
+ },
4706
+ {
4707
+ "kind": "field",
4708
+ "name": "selectedOptions",
4709
+ "type": {
4710
+ "text": "SynOption[]"
4711
+ },
4712
+ "default": "[]"
4713
+ },
4714
+ {
4715
+ "kind": "field",
4716
+ "name": "name",
4717
+ "type": {
4718
+ "text": "string"
4719
+ },
4720
+ "default": "''",
4721
+ "description": "The name of the select, submitted as a name/value pair with form data.",
4722
+ "attribute": "name"
4723
+ },
4724
+ {
4725
+ "kind": "field",
4726
+ "name": "value",
4727
+ "type": {
4728
+ "text": "string | string[]"
4729
+ },
4730
+ "default": "''",
4731
+ "description": "The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the\nvalue attribute will be a space-delimited list of values based on the options selected, and the value property will\nbe an array. **For this reason, values must not contain spaces.**",
4732
+ "attribute": "value"
4733
+ },
3286
4734
  {
3287
4735
  "kind": "field",
3288
4736
  "name": "defaultValue",
4737
+ "type": {
4738
+ "text": "string | string[]"
4739
+ },
4740
+ "default": "''",
4741
+ "description": "The default value of the form control. Primarily used for resetting the form control."
4742
+ },
4743
+ {
4744
+ "kind": "field",
4745
+ "name": "size",
4746
+ "type": {
4747
+ "text": "'small' | 'medium' | 'large'"
4748
+ },
4749
+ "default": "'medium'",
4750
+ "description": "The select's size.",
4751
+ "attribute": "size",
4752
+ "reflects": true
4753
+ },
4754
+ {
4755
+ "kind": "field",
4756
+ "name": "placeholder",
3289
4757
  "type": {
3290
4758
  "text": "string"
3291
4759
  },
3292
- "default": "''"
4760
+ "default": "''",
4761
+ "description": "Placeholder text to show as a hint when the select is empty.",
4762
+ "attribute": "placeholder"
4763
+ },
4764
+ {
4765
+ "kind": "field",
4766
+ "name": "multiple",
4767
+ "type": {
4768
+ "text": "boolean"
4769
+ },
4770
+ "default": "false",
4771
+ "description": "Allows more than one option to be selected.",
4772
+ "attribute": "multiple",
4773
+ "reflects": true
4774
+ },
4775
+ {
4776
+ "kind": "field",
4777
+ "name": "maxOptionsVisible",
4778
+ "type": {
4779
+ "text": "number"
4780
+ },
4781
+ "default": "3",
4782
+ "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
4783
+ "attribute": "max-options-visible"
4784
+ },
4785
+ {
4786
+ "kind": "field",
4787
+ "name": "disabled",
4788
+ "type": {
4789
+ "text": "boolean"
4790
+ },
4791
+ "default": "false",
4792
+ "description": "Disables the select control.",
4793
+ "attribute": "disabled",
4794
+ "reflects": true
4795
+ },
4796
+ {
4797
+ "kind": "field",
4798
+ "name": "clearable",
4799
+ "type": {
4800
+ "text": "boolean"
4801
+ },
4802
+ "default": "false",
4803
+ "description": "Adds a clear button when the select is not empty.",
4804
+ "attribute": "clearable"
4805
+ },
4806
+ {
4807
+ "kind": "field",
4808
+ "name": "open",
4809
+ "type": {
4810
+ "text": "boolean"
4811
+ },
4812
+ "default": "false",
4813
+ "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
4814
+ "attribute": "open",
4815
+ "reflects": true
4816
+ },
4817
+ {
4818
+ "kind": "field",
4819
+ "name": "hoist",
4820
+ "type": {
4821
+ "text": "boolean"
4822
+ },
4823
+ "default": "false",
4824
+ "description": "Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.",
4825
+ "attribute": "hoist"
3293
4826
  },
3294
4827
  {
3295
4828
  "kind": "field",
@@ -3298,9 +4831,20 @@
3298
4831
  "text": "string"
3299
4832
  },
3300
4833
  "default": "''",
3301
- "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
4834
+ "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
3302
4835
  "attribute": "label"
3303
4836
  },
4837
+ {
4838
+ "kind": "field",
4839
+ "name": "placement",
4840
+ "type": {
4841
+ "text": "'top' | 'bottom'"
4842
+ },
4843
+ "default": "'bottom'",
4844
+ "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
4845
+ "attribute": "placement",
4846
+ "reflects": true
4847
+ },
3304
4848
  {
3305
4849
  "kind": "field",
3306
4850
  "name": "helpText",
@@ -3308,111 +4852,248 @@
3308
4852
  "text": "string"
3309
4853
  },
3310
4854
  "default": "''",
3311
- "description": "The radio groups's help text. If you need to display HTML, use the `help-text` slot instead.",
4855
+ "description": "The select's help text. If you need to display HTML, use the `help-text` slot instead.",
3312
4856
  "attribute": "help-text"
3313
4857
  },
3314
4858
  {
3315
4859
  "kind": "field",
3316
- "name": "name",
4860
+ "name": "form",
3317
4861
  "type": {
3318
4862
  "text": "string"
3319
4863
  },
3320
- "default": "'option'",
3321
- "description": "The name of the radio group, submitted as a name/value pair with form data.",
3322
- "attribute": "name"
4864
+ "default": "''",
4865
+ "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
4866
+ "attribute": "form",
4867
+ "reflects": true
3323
4868
  },
3324
4869
  {
3325
4870
  "kind": "field",
3326
- "name": "value",
4871
+ "name": "required",
3327
4872
  "type": {
3328
- "text": "string"
4873
+ "text": "boolean"
3329
4874
  },
3330
- "default": "''",
3331
- "description": "The current value of the radio group, submitted as a name/value pair with form data.",
3332
- "attribute": "value",
4875
+ "default": "false",
4876
+ "description": "The select's required attribute.",
4877
+ "attribute": "required",
3333
4878
  "reflects": true
3334
4879
  },
3335
4880
  {
3336
- "kind": "field",
3337
- "name": "size",
3338
- "type": {
3339
- "text": "'small' | 'medium' | 'large'"
3340
- },
3341
- "default": "'medium'",
3342
- "description": "The radio group's size. This size will be applied to all child radios and radio buttons.",
3343
- "attribute": "size",
3344
- "reflects": true
4881
+ "kind": "field",
4882
+ "name": "getTag",
4883
+ "type": {
4884
+ "text": "(option: SynOption, index: number) => TemplateResult | string | HTMLElement"
4885
+ },
4886
+ "description": "A function that customizes the tags to be rendered when multiple=true. The first argument is the option, the second\nis the current tag's index. The function should return either a Lit TemplateResult or a string containing trusted HTML of the symbol to render at\nthe specified value.",
4887
+ "attribute": "getTag"
4888
+ },
4889
+ {
4890
+ "kind": "field",
4891
+ "name": "validity",
4892
+ "description": "Gets the validity state object",
4893
+ "readonly": true
4894
+ },
4895
+ {
4896
+ "kind": "field",
4897
+ "name": "validationMessage",
4898
+ "description": "Gets the validation message",
4899
+ "readonly": true
4900
+ },
4901
+ {
4902
+ "kind": "method",
4903
+ "name": "addOpenListeners",
4904
+ "privacy": "private"
4905
+ },
4906
+ {
4907
+ "kind": "method",
4908
+ "name": "removeOpenListeners",
4909
+ "privacy": "private"
4910
+ },
4911
+ {
4912
+ "kind": "method",
4913
+ "name": "handleFocus",
4914
+ "privacy": "private"
4915
+ },
4916
+ {
4917
+ "kind": "method",
4918
+ "name": "handleBlur",
4919
+ "privacy": "private"
4920
+ },
4921
+ {
4922
+ "kind": "field",
4923
+ "name": "handleDocumentFocusIn",
4924
+ "privacy": "private"
4925
+ },
4926
+ {
4927
+ "kind": "field",
4928
+ "name": "handleDocumentKeyDown",
4929
+ "privacy": "private"
4930
+ },
4931
+ {
4932
+ "kind": "field",
4933
+ "name": "handleDocumentMouseDown",
4934
+ "privacy": "private"
4935
+ },
4936
+ {
4937
+ "kind": "method",
4938
+ "name": "handleLabelClick",
4939
+ "privacy": "private"
4940
+ },
4941
+ {
4942
+ "kind": "method",
4943
+ "name": "handleComboboxMouseDown",
4944
+ "privacy": "private",
4945
+ "parameters": [
4946
+ {
4947
+ "name": "event",
4948
+ "type": {
4949
+ "text": "MouseEvent"
4950
+ }
4951
+ }
4952
+ ]
4953
+ },
4954
+ {
4955
+ "kind": "method",
4956
+ "name": "handleComboboxKeyDown",
4957
+ "privacy": "private",
4958
+ "parameters": [
4959
+ {
4960
+ "name": "event",
4961
+ "type": {
4962
+ "text": "KeyboardEvent"
4963
+ }
4964
+ }
4965
+ ]
4966
+ },
4967
+ {
4968
+ "kind": "method",
4969
+ "name": "handleClearClick",
4970
+ "privacy": "private",
4971
+ "parameters": [
4972
+ {
4973
+ "name": "event",
4974
+ "type": {
4975
+ "text": "MouseEvent"
4976
+ }
4977
+ }
4978
+ ]
4979
+ },
4980
+ {
4981
+ "kind": "method",
4982
+ "name": "handleClearMouseDown",
4983
+ "privacy": "private",
4984
+ "parameters": [
4985
+ {
4986
+ "name": "event",
4987
+ "type": {
4988
+ "text": "MouseEvent"
4989
+ }
4990
+ }
4991
+ ]
4992
+ },
4993
+ {
4994
+ "kind": "method",
4995
+ "name": "handleOptionClick",
4996
+ "privacy": "private",
4997
+ "parameters": [
4998
+ {
4999
+ "name": "event",
5000
+ "type": {
5001
+ "text": "MouseEvent"
5002
+ }
5003
+ }
5004
+ ]
3345
5005
  },
3346
5006
  {
3347
- "kind": "field",
3348
- "name": "form",
3349
- "type": {
3350
- "text": "string"
3351
- },
3352
- "default": "''",
3353
- "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
3354
- "attribute": "form",
3355
- "reflects": true
5007
+ "kind": "method",
5008
+ "name": "handleDefaultSlotChange",
5009
+ "privacy": "private"
3356
5010
  },
3357
5011
  {
3358
- "kind": "field",
3359
- "name": "required",
3360
- "type": {
3361
- "text": "boolean"
3362
- },
3363
- "default": "false",
3364
- "description": "Ensures a child radio is checked before allowing the containing form to submit.",
3365
- "attribute": "required",
3366
- "reflects": true
5012
+ "kind": "method",
5013
+ "name": "handleTagRemove",
5014
+ "privacy": "private",
5015
+ "parameters": [
5016
+ {
5017
+ "name": "event",
5018
+ "type": {
5019
+ "text": "SynRemoveEvent"
5020
+ }
5021
+ },
5022
+ {
5023
+ "name": "option",
5024
+ "type": {
5025
+ "text": "SynOption"
5026
+ }
5027
+ }
5028
+ ]
3367
5029
  },
3368
5030
  {
3369
- "kind": "field",
3370
- "name": "validity",
3371
- "description": "Gets the validity state object",
3372
- "readonly": true
5031
+ "kind": "method",
5032
+ "name": "getAllOptions",
5033
+ "privacy": "private"
3373
5034
  },
3374
5035
  {
3375
- "kind": "field",
3376
- "name": "validationMessage",
3377
- "description": "Gets the validation message",
3378
- "readonly": true
5036
+ "kind": "method",
5037
+ "name": "getFirstOption",
5038
+ "privacy": "private"
3379
5039
  },
3380
5040
  {
3381
5041
  "kind": "method",
3382
- "name": "getAllRadios",
3383
- "privacy": "private"
5042
+ "name": "setCurrentOption",
5043
+ "privacy": "private",
5044
+ "parameters": [
5045
+ {
5046
+ "name": "option",
5047
+ "type": {
5048
+ "text": "SynOption | null"
5049
+ }
5050
+ }
5051
+ ]
3384
5052
  },
3385
5053
  {
3386
5054
  "kind": "method",
3387
- "name": "handleRadioClick",
5055
+ "name": "setSelectedOptions",
3388
5056
  "privacy": "private",
3389
5057
  "parameters": [
3390
5058
  {
3391
- "name": "event",
5059
+ "name": "option",
3392
5060
  "type": {
3393
- "text": "MouseEvent"
5061
+ "text": "SynOption | SynOption[]"
3394
5062
  }
3395
5063
  }
3396
5064
  ]
3397
5065
  },
3398
5066
  {
3399
5067
  "kind": "method",
3400
- "name": "handleKeyDown",
5068
+ "name": "toggleOptionSelection",
3401
5069
  "privacy": "private",
3402
5070
  "parameters": [
3403
5071
  {
3404
- "name": "event",
5072
+ "name": "option",
3405
5073
  "type": {
3406
- "text": "KeyboardEvent"
5074
+ "text": "SynOption"
5075
+ }
5076
+ },
5077
+ {
5078
+ "name": "force",
5079
+ "optional": true,
5080
+ "type": {
5081
+ "text": "boolean"
3407
5082
  }
3408
5083
  }
3409
5084
  ]
3410
5085
  },
3411
5086
  {
3412
5087
  "kind": "method",
3413
- "name": "handleLabelClick",
5088
+ "name": "selectionChanged",
3414
5089
  "privacy": "private"
3415
5090
  },
5091
+ {
5092
+ "kind": "field",
5093
+ "name": "tags",
5094
+ "privacy": "protected",
5095
+ "readonly": true
5096
+ },
3416
5097
  {
3417
5098
  "kind": "method",
3418
5099
  "name": "handleInvalid",
@@ -3428,26 +5109,25 @@
3428
5109
  },
3429
5110
  {
3430
5111
  "kind": "method",
3431
- "name": "syncRadioElements",
3432
- "privacy": "private"
5112
+ "name": "handleDisabledChange"
3433
5113
  },
3434
5114
  {
3435
5115
  "kind": "method",
3436
- "name": "syncRadios",
3437
- "privacy": "private"
5116
+ "name": "handleValueChange"
3438
5117
  },
3439
5118
  {
3440
5119
  "kind": "method",
3441
- "name": "updateCheckedRadio",
3442
- "privacy": "private"
5120
+ "name": "handleOpenChange"
3443
5121
  },
3444
5122
  {
3445
5123
  "kind": "method",
3446
- "name": "handleSizeChange"
5124
+ "name": "show",
5125
+ "description": "Shows the listbox."
3447
5126
  },
3448
5127
  {
3449
5128
  "kind": "method",
3450
- "name": "handleValueChange"
5129
+ "name": "hide",
5130
+ "description": "Hides the listbox."
3451
5131
  },
3452
5132
  {
3453
5133
  "kind": "method",
@@ -3467,11 +5147,6 @@
3467
5147
  {
3468
5148
  "kind": "method",
3469
5149
  "name": "reportValidity",
3470
- "return": {
3471
- "type": {
3472
- "text": "boolean"
3473
- }
3474
- },
3475
5150
  "description": "Checks for validity and shows the browser's validation message if the control is invalid."
3476
5151
  },
3477
5152
  {
@@ -3480,25 +5155,88 @@
3480
5155
  "parameters": [
3481
5156
  {
3482
5157
  "name": "message",
3483
- "default": "''"
5158
+ "type": {
5159
+ "text": "string"
5160
+ }
3484
5161
  }
3485
5162
  ],
3486
5163
  "description": "Sets a custom validation message. Pass an empty string to restore validity."
5164
+ },
5165
+ {
5166
+ "kind": "method",
5167
+ "name": "focus",
5168
+ "parameters": [
5169
+ {
5170
+ "name": "options",
5171
+ "optional": true,
5172
+ "type": {
5173
+ "text": "FocusOptions"
5174
+ }
5175
+ }
5176
+ ],
5177
+ "description": "Sets focus on the control."
5178
+ },
5179
+ {
5180
+ "kind": "method",
5181
+ "name": "blur",
5182
+ "description": "Removes focus from the control."
3487
5183
  }
3488
5184
  ],
3489
5185
  "events": [
3490
5186
  {
3491
- "description": "Emitted when the radio group's selected value changes.",
5187
+ "description": "Emitted when the control's value changes.",
3492
5188
  "name": "syn-change",
3493
5189
  "reactName": "onSynChange",
3494
5190
  "eventName": "SynChangeEvent"
3495
5191
  },
3496
5192
  {
3497
- "description": "Emitted when the radio group receives user input.",
5193
+ "description": "Emitted when the control's value is cleared.",
5194
+ "name": "syn-clear",
5195
+ "reactName": "onSynClear",
5196
+ "eventName": "SynClearEvent"
5197
+ },
5198
+ {
5199
+ "description": "Emitted when the control receives input.",
3498
5200
  "name": "syn-input",
3499
5201
  "reactName": "onSynInput",
3500
5202
  "eventName": "SynInputEvent"
3501
5203
  },
5204
+ {
5205
+ "description": "Emitted when the control gains focus.",
5206
+ "name": "syn-focus",
5207
+ "reactName": "onSynFocus",
5208
+ "eventName": "SynFocusEvent"
5209
+ },
5210
+ {
5211
+ "description": "Emitted when the control loses focus.",
5212
+ "name": "syn-blur",
5213
+ "reactName": "onSynBlur",
5214
+ "eventName": "SynBlurEvent"
5215
+ },
5216
+ {
5217
+ "description": "Emitted when the select's menu opens.",
5218
+ "name": "syn-show",
5219
+ "reactName": "onSynShow",
5220
+ "eventName": "SynShowEvent"
5221
+ },
5222
+ {
5223
+ "description": "Emitted after the select's menu opens and all animations are complete.",
5224
+ "name": "syn-after-show",
5225
+ "reactName": "onSynAfterShow",
5226
+ "eventName": "SynAfterShowEvent"
5227
+ },
5228
+ {
5229
+ "description": "Emitted when the select's menu closes.",
5230
+ "name": "syn-hide",
5231
+ "reactName": "onSynHide",
5232
+ "eventName": "SynHideEvent"
5233
+ },
5234
+ {
5235
+ "description": "Emitted after the select's menu closes and all animations are complete.",
5236
+ "name": "syn-after-hide",
5237
+ "reactName": "onSynAfterHide",
5238
+ "eventName": "SynAfterHideEvent"
5239
+ },
3502
5240
  {
3503
5241
  "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
3504
5242
  "name": "syn-invalid",
@@ -3508,49 +5246,121 @@
3508
5246
  ],
3509
5247
  "attributes": [
3510
5248
  {
3511
- "name": "label",
5249
+ "name": "name",
3512
5250
  "type": {
3513
5251
  "text": "string"
3514
5252
  },
3515
5253
  "default": "''",
3516
- "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
3517
- "fieldName": "label"
5254
+ "description": "The name of the select, submitted as a name/value pair with form data.",
5255
+ "fieldName": "name"
3518
5256
  },
3519
5257
  {
3520
- "name": "help-text",
5258
+ "name": "value",
3521
5259
  "type": {
3522
- "text": "string"
5260
+ "text": "string | string[]"
3523
5261
  },
3524
5262
  "default": "''",
3525
- "description": "The radio groups's help text. If you need to display HTML, use the `help-text` slot instead.",
3526
- "fieldName": "helpText"
5263
+ "description": "The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the\nvalue attribute will be a space-delimited list of values based on the options selected, and the value property will\nbe an array. **For this reason, values must not contain spaces.**",
5264
+ "fieldName": "value"
3527
5265
  },
3528
5266
  {
3529
- "name": "name",
5267
+ "name": "size",
5268
+ "type": {
5269
+ "text": "'small' | 'medium' | 'large'"
5270
+ },
5271
+ "default": "'medium'",
5272
+ "description": "The select's size.",
5273
+ "fieldName": "size"
5274
+ },
5275
+ {
5276
+ "name": "placeholder",
3530
5277
  "type": {
3531
5278
  "text": "string"
3532
5279
  },
3533
- "default": "'option'",
3534
- "description": "The name of the radio group, submitted as a name/value pair with form data.",
3535
- "fieldName": "name"
5280
+ "default": "''",
5281
+ "description": "Placeholder text to show as a hint when the select is empty.",
5282
+ "fieldName": "placeholder"
3536
5283
  },
3537
5284
  {
3538
- "name": "value",
5285
+ "name": "multiple",
5286
+ "type": {
5287
+ "text": "boolean"
5288
+ },
5289
+ "default": "false",
5290
+ "description": "Allows more than one option to be selected.",
5291
+ "fieldName": "multiple"
5292
+ },
5293
+ {
5294
+ "name": "max-options-visible",
5295
+ "type": {
5296
+ "text": "number"
5297
+ },
5298
+ "default": "3",
5299
+ "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
5300
+ "fieldName": "maxOptionsVisible"
5301
+ },
5302
+ {
5303
+ "name": "disabled",
5304
+ "type": {
5305
+ "text": "boolean"
5306
+ },
5307
+ "default": "false",
5308
+ "description": "Disables the select control.",
5309
+ "fieldName": "disabled"
5310
+ },
5311
+ {
5312
+ "name": "clearable",
5313
+ "type": {
5314
+ "text": "boolean"
5315
+ },
5316
+ "default": "false",
5317
+ "description": "Adds a clear button when the select is not empty.",
5318
+ "fieldName": "clearable"
5319
+ },
5320
+ {
5321
+ "name": "open",
5322
+ "type": {
5323
+ "text": "boolean"
5324
+ },
5325
+ "default": "false",
5326
+ "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
5327
+ "fieldName": "open"
5328
+ },
5329
+ {
5330
+ "name": "hoist",
5331
+ "type": {
5332
+ "text": "boolean"
5333
+ },
5334
+ "default": "false",
5335
+ "description": "Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.",
5336
+ "fieldName": "hoist"
5337
+ },
5338
+ {
5339
+ "name": "label",
3539
5340
  "type": {
3540
5341
  "text": "string"
3541
5342
  },
3542
5343
  "default": "''",
3543
- "description": "The current value of the radio group, submitted as a name/value pair with form data.",
3544
- "fieldName": "value"
5344
+ "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
5345
+ "fieldName": "label"
3545
5346
  },
3546
5347
  {
3547
- "name": "size",
5348
+ "name": "placement",
3548
5349
  "type": {
3549
- "text": "'small' | 'medium' | 'large'"
5350
+ "text": "'top' | 'bottom'"
3550
5351
  },
3551
- "default": "'medium'",
3552
- "description": "The radio group's size. This size will be applied to all child radios and radio buttons.",
3553
- "fieldName": "size"
5352
+ "default": "'bottom'",
5353
+ "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
5354
+ "fieldName": "placement"
5355
+ },
5356
+ {
5357
+ "name": "help-text",
5358
+ "type": {
5359
+ "text": "string"
5360
+ },
5361
+ "default": "''",
5362
+ "description": "The select's help text. If you need to display HTML, use the `help-text` slot instead.",
5363
+ "fieldName": "helpText"
3554
5364
  },
3555
5365
  {
3556
5366
  "name": "form",
@@ -3567,24 +5377,34 @@
3567
5377
  "text": "boolean"
3568
5378
  },
3569
5379
  "default": "false",
3570
- "description": "Ensures a child radio is checked before allowing the containing form to submit.",
5380
+ "description": "The select's required attribute.",
3571
5381
  "fieldName": "required"
5382
+ },
5383
+ {
5384
+ "name": "getTag",
5385
+ "type": {
5386
+ "text": "(option: SynOption, index: number) => TemplateResult | string | HTMLElement"
5387
+ },
5388
+ "description": "A function that customizes the tags to be rendered when multiple=true. The first argument is the option, the second\nis the current tag's index. The function should return either a Lit TemplateResult or a string containing trusted HTML of the symbol to render at\nthe specified value.",
5389
+ "fieldName": "getTag"
3572
5390
  }
3573
5391
  ],
3574
5392
  "superclass": {
3575
5393
  "name": "SynergyElement",
3576
5394
  "module": "/src/internal/synergy-element.js"
3577
5395
  },
3578
- "summary": "Radio groups are used to group multiple [radios](/components/radio) or [radio buttons](/components/radio-button) so they function as a single form control.",
3579
- "tagNameWithoutPrefix": "radio-group",
3580
- "tagName": "syn-radio-group",
5396
+ "summary": "Selects allow you to choose items from a menu of predefined options.",
5397
+ "tagNameWithoutPrefix": "select",
5398
+ "tagName": "syn-select",
3581
5399
  "customElement": true,
3582
- "jsDoc": "/**\n * @summary 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 * @documentation https://synergy.style/components/radio-group\n * @status stable\n * @since 2.0\n *\n * @dependency syn-button-group\n *\n * @slot - The default slot where `<syn-radio>` or `<syn-radio-button>` elements are placed.\n * @slot label - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label`\n * attribute.\n *\n * @event syn-change - Emitted when the radio group's selected value changes.\n * @event syn-input - Emitted when the radio group receives user input.\n * @event syn-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The input's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart button-group - The button group that wraps radio buttons.\n * @csspart button-group__base - The button group's `base` part.\n */",
3583
- "documentation": "https://synergy.style/components/radio-group",
5400
+ "jsDoc": "/**\n * @summary Selects allow you to choose items from a menu of predefined options.\n * @documentation https://synergy.style/components/select\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon\n * @dependency syn-popup\n * @dependency syn-tag\n *\n * @slot - The listbox options. Must be `<syn-option>` elements. You can use `<syn-divider>` to group items visually.\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event syn-change - Emitted when the control's value changes.\n * @event syn-clear - Emitted when the control's value is cleared.\n * @event syn-input - Emitted when the control receives input.\n * @event syn-focus - Emitted when the control gains focus.\n * @event syn-blur - Emitted when the control loses focus.\n * @event syn-show - Emitted when the select's menu opens.\n * @event syn-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event syn-hide - Emitted when the select's menu closes.\n * @event syn-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event syn-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container the wraps the prefix, combobox, clear icon, and expand button.\n * @csspart prefix - The container that wraps the prefix slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tags - The container that houses option tags when `multiselect` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart tag__base - The tag's base part.\n * @csspart tag__content - The tag's content part.\n * @csspart tag__remove-button - The tag's remove button.\n * @csspart tag__remove-button__base - The tag's remove button base part.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n */",
5401
+ "documentation": "https://synergy.style/components/select",
3584
5402
  "status": "stable",
3585
5403
  "since": "2.0",
3586
5404
  "dependencies": [
3587
- "syn-button-group"
5405
+ "syn-icon",
5406
+ "syn-popup",
5407
+ "syn-tag"
3588
5408
  ]
3589
5409
  }
3590
5410
  ],
@@ -3593,8 +5413,8 @@
3593
5413
  "kind": "js",
3594
5414
  "name": "default",
3595
5415
  "declaration": {
3596
- "name": "SynRadioGroup",
3597
- "module": "components/radio-group/radio-group.js"
5416
+ "name": "SynSelect",
5417
+ "module": "components/select/select.js"
3598
5418
  }
3599
5419
  }
3600
5420
  ]
@@ -4971,7 +6791,7 @@
4971
6791
  "package": {
4972
6792
  "name": "@synergy-design-system/components",
4973
6793
  "description": "",
4974
- "version": "1.4.1",
6794
+ "version": "1.5.0",
4975
6795
  "author": {
4976
6796
  "name": "SICK Global UX Foundation",
4977
6797
  "url": "https://www.sick.com"