@synergy-design-system/mcp 2.15.0 → 3.0.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 (531) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +826 -303
  3. package/dist/bin/start.js +57 -6
  4. package/dist/middleware/compose.d.ts +15 -0
  5. package/dist/middleware/compose.js +10 -0
  6. package/dist/middleware/compression.d.ts +19 -0
  7. package/dist/middleware/compression.js +35 -0
  8. package/dist/middleware/error-handler.d.ts +13 -0
  9. package/dist/middleware/error-handler.js +42 -0
  10. package/dist/middleware/index.d.ts +9 -0
  11. package/dist/middleware/index.js +8 -0
  12. package/dist/middleware/logging.d.ts +14 -0
  13. package/dist/middleware/logging.js +64 -0
  14. package/dist/middleware/types.d.ts +20 -0
  15. package/dist/middleware/types.js +4 -0
  16. package/dist/resources/asset-list.d.ts +7 -0
  17. package/dist/resources/asset-list.js +34 -0
  18. package/dist/resources/component-cluster-list.d.ts +7 -0
  19. package/dist/resources/component-cluster-list.js +30 -0
  20. package/dist/resources/component-list.d.ts +7 -0
  21. package/dist/resources/component-list.js +31 -0
  22. package/dist/resources/index.d.ts +5 -0
  23. package/dist/resources/index.js +5 -0
  24. package/dist/resources/styles-list.d.ts +7 -0
  25. package/dist/resources/styles-list.js +31 -0
  26. package/dist/resources/templates-list.d.ts +7 -0
  27. package/dist/resources/templates-list.js +28 -0
  28. package/dist/server.js +5 -1
  29. package/dist/tools/asset-info.js +41 -85
  30. package/dist/tools/asset-list.js +22 -31
  31. package/dist/tools/component-cluster-list.d.ts +6 -0
  32. package/dist/tools/component-cluster-list.js +30 -0
  33. package/dist/tools/component-info.js +38 -21
  34. package/dist/tools/component-list.js +35 -30
  35. package/dist/tools/davinci-migration-info.d.ts +2 -0
  36. package/dist/tools/davinci-migration-info.js +21 -0
  37. package/dist/tools/davinci-migration-list.d.ts +2 -0
  38. package/dist/tools/davinci-migration-list.js +20 -0
  39. package/dist/tools/index.d.ts +6 -5
  40. package/dist/tools/index.js +6 -5
  41. package/dist/tools/migration-info.js +12 -37
  42. package/dist/tools/migration-list.js +7 -13
  43. package/dist/tools/setup.d.ts +6 -0
  44. package/dist/tools/setup.js +31 -0
  45. package/dist/tools/styles-info.d.ts +1 -2
  46. package/dist/tools/styles-info.js +24 -20
  47. package/dist/tools/styles-list.js +19 -33
  48. package/dist/tools/template-info.js +19 -20
  49. package/dist/tools/template-list.d.ts +1 -1
  50. package/dist/tools/template-list.js +17 -32
  51. package/dist/tools/{tokens.d.ts → token-info.d.ts} +2 -2
  52. package/dist/tools/token-info.js +31 -0
  53. package/dist/tools/tokens-list.d.ts +6 -0
  54. package/dist/tools/tokens-list.js +52 -0
  55. package/dist/transports/http.d.ts +14 -0
  56. package/dist/transports/http.js +157 -0
  57. package/dist/transports/index.d.ts +23 -0
  58. package/dist/transports/index.js +23 -0
  59. package/dist/transports/stdio.d.ts +10 -0
  60. package/dist/transports/stdio.js +21 -0
  61. package/dist/types/tool-response.d.ts +13 -0
  62. package/dist/types/tool-response.js +7 -0
  63. package/dist/utilities/cli.d.ts +27 -0
  64. package/dist/utilities/cli.js +170 -0
  65. package/dist/utilities/compression.d.ts +7 -0
  66. package/dist/utilities/compression.js +45 -0
  67. package/dist/utilities/config.d.ts +122 -80
  68. package/dist/utilities/config.js +212 -81
  69. package/dist/utilities/davinci.d.ts +12 -0
  70. package/dist/utilities/davinci.js +55 -0
  71. package/dist/utilities/index.d.ts +10 -10
  72. package/dist/utilities/index.js +10 -10
  73. package/dist/utilities/local-file-logger.d.ts +2 -0
  74. package/dist/utilities/local-file-logger.js +22 -0
  75. package/dist/utilities/logger.d.ts +12 -0
  76. package/dist/utilities/logger.js +30 -0
  77. package/dist/utilities/logging-context.d.ts +8 -0
  78. package/dist/utilities/logging-context.js +7 -0
  79. package/dist/utilities/logging-service.d.ts +2 -0
  80. package/dist/utilities/logging-service.js +24 -0
  81. package/dist/utilities/logging-types.d.ts +19 -0
  82. package/dist/utilities/metadata.d.ts +10 -17
  83. package/dist/utilities/metadata.js +34 -51
  84. package/dist/utilities/migration.d.ts +2 -1
  85. package/dist/utilities/migration.js +33 -30
  86. package/dist/utilities/rules.d.ts +8 -0
  87. package/dist/utilities/rules.js +37 -0
  88. package/dist/utilities/server.d.ts +7 -0
  89. package/dist/utilities/server.js +12 -0
  90. package/dist/utilities/token-counter.d.ts +14 -0
  91. package/dist/utilities/token-counter.js +53 -0
  92. package/package.json +18 -28
  93. package/rules/asset-info.md +10 -0
  94. package/rules/asset-list.md +10 -0
  95. package/rules/component-cluster-list.md +5 -0
  96. package/{metadata/static/angular/index.md → rules/component-info-angular.md} +2 -1
  97. package/{metadata/static/react/index.md → rules/component-info-react.md} +2 -1
  98. package/{metadata/static/vue/index.md → rules/component-info-vue.md} +4 -1
  99. package/{metadata/static/component-list/index.md → rules/component-list.md} +5 -7
  100. package/rules/styles-info.md +9 -0
  101. package/{metadata/static/styles/index.md → rules/styles-list.md} +0 -2
  102. package/{metadata/static/templates/index.md → rules/template-info.md} +0 -1
  103. package/rules/template-list.md +7 -0
  104. package/dist/bin/create-checksum.d.ts +0 -2
  105. package/dist/bin/create-checksum.js +0 -24
  106. package/dist/build/assets.d.ts +0 -4
  107. package/dist/build/assets.js +0 -57
  108. package/dist/build/build.js +0 -35
  109. package/dist/build/components.d.ts +0 -4
  110. package/dist/build/components.js +0 -133
  111. package/dist/build/fonts.d.ts +0 -4
  112. package/dist/build/fonts.js +0 -49
  113. package/dist/build/frameworks.d.ts +0 -4
  114. package/dist/build/frameworks.js +0 -61
  115. package/dist/build/static.d.ts +0 -4
  116. package/dist/build/static.js +0 -65
  117. package/dist/build/styles.d.ts +0 -4
  118. package/dist/build/styles.js +0 -58
  119. package/dist/build/tokens.d.ts +0 -4
  120. package/dist/build/tokens.js +0 -59
  121. package/dist/tools/davinci-migration.d.ts +0 -3
  122. package/dist/tools/davinci-migration.js +0 -66
  123. package/dist/tools/font-info.d.ts +0 -6
  124. package/dist/tools/font-info.js +0 -35
  125. package/dist/tools/framework-info.d.ts +0 -7
  126. package/dist/tools/framework-info.js +0 -58
  127. package/dist/tools/tokens.js +0 -24
  128. package/dist/tools/version.d.ts +0 -7
  129. package/dist/tools/version.js +0 -53
  130. package/dist/utilities/assets.d.ts +0 -2
  131. package/dist/utilities/assets.js +0 -3
  132. package/dist/utilities/checksum.d.ts +0 -36
  133. package/dist/utilities/checksum.js +0 -94
  134. package/dist/utilities/components.d.ts +0 -25
  135. package/dist/utilities/components.js +0 -86
  136. package/dist/utilities/file.d.ts +0 -12
  137. package/dist/utilities/file.js +0 -31
  138. package/dist/utilities/fonts.d.ts +0 -2
  139. package/dist/utilities/fonts.js +0 -3
  140. package/dist/utilities/stdio.d.ts +0 -14
  141. package/dist/utilities/stdio.js +0 -60
  142. package/dist/utilities/storybook/build-docs.d.ts +0 -2
  143. package/dist/utilities/storybook/build-docs.js +0 -43
  144. package/dist/utilities/storybook/configs.d.ts +0 -13
  145. package/dist/utilities/storybook/configs.js +0 -85
  146. package/dist/utilities/storybook/docs-scraper.d.ts +0 -26
  147. package/dist/utilities/storybook/docs-scraper.js +0 -96
  148. package/dist/utilities/storybook/index.d.ts +0 -5
  149. package/dist/utilities/storybook/index.js +0 -4
  150. package/dist/utilities/storybook/scraper.d.ts +0 -14
  151. package/dist/utilities/storybook/scraper.js +0 -243
  152. package/dist/utilities/storybook/storybook-manager.d.ts +0 -29
  153. package/dist/utilities/storybook/storybook-manager.js +0 -138
  154. package/dist/utilities/storybook/types.d.ts +0 -22
  155. package/dist/utilities/storybook/types.js +0 -1
  156. package/dist/utilities/styles.d.ts +0 -6
  157. package/dist/utilities/styles.js +0 -24
  158. package/dist/utilities/templates.d.ts +0 -12
  159. package/dist/utilities/templates.js +0 -28
  160. package/dist/utilities/tokens.d.ts +0 -1
  161. package/dist/utilities/tokens.js +0 -21
  162. package/dist/utilities/version.d.ts +0 -28
  163. package/dist/utilities/version.js +0 -21
  164. package/metadata/checksum.txt +0 -1
  165. package/metadata/davinci-migration/migration-guide.md +0 -1859
  166. package/metadata/packages/angular/LIMITATIONS.md +0 -32
  167. package/metadata/packages/angular/README.md +0 -393
  168. package/metadata/packages/assets/BREAKING_CHANGES.md +0 -305
  169. package/metadata/packages/assets/CHANGELOG.md +0 -374
  170. package/metadata/packages/assets/README.md +0 -103
  171. package/metadata/packages/components/components/syn-accordion/component.angular.ts +0 -80
  172. package/metadata/packages/components/components/syn-accordion/component.react.ts +0 -30
  173. package/metadata/packages/components/components/syn-accordion/component.styles.ts +0 -15
  174. package/metadata/packages/components/components/syn-accordion/component.ts +0 -111
  175. package/metadata/packages/components/components/syn-accordion/component.vue +0 -64
  176. package/metadata/packages/components/components/syn-alert/component.angular.ts +0 -169
  177. package/metadata/packages/components/components/syn-alert/component.react.ts +0 -60
  178. package/metadata/packages/components/components/syn-alert/component.styles.ts +0 -203
  179. package/metadata/packages/components/components/syn-alert/component.ts +0 -322
  180. package/metadata/packages/components/components/syn-alert/component.vue +0 -135
  181. package/metadata/packages/components/components/syn-badge/component.angular.ts +0 -53
  182. package/metadata/packages/components/components/syn-badge/component.custom.styles.ts +0 -62
  183. package/metadata/packages/components/components/syn-badge/component.react.ts +0 -29
  184. package/metadata/packages/components/components/syn-badge/component.styles.ts +0 -52
  185. package/metadata/packages/components/components/syn-badge/component.ts +0 -58
  186. package/metadata/packages/components/components/syn-badge/component.vue +0 -53
  187. package/metadata/packages/components/components/syn-breadcrumb/component.angular.ts +0 -58
  188. package/metadata/packages/components/components/syn-breadcrumb/component.custom.styles.ts +0 -5
  189. package/metadata/packages/components/components/syn-breadcrumb/component.react.ts +0 -32
  190. package/metadata/packages/components/components/syn-breadcrumb/component.styles.ts +0 -11
  191. package/metadata/packages/components/components/syn-breadcrumb/component.ts +0 -103
  192. package/metadata/packages/components/components/syn-breadcrumb/component.vue +0 -58
  193. package/metadata/packages/components/components/syn-breadcrumb-item/component.angular.ts +0 -88
  194. package/metadata/packages/components/components/syn-breadcrumb-item/component.custom.styles.ts +0 -78
  195. package/metadata/packages/components/components/syn-breadcrumb-item/component.react.ts +0 -37
  196. package/metadata/packages/components/components/syn-breadcrumb-item/component.styles.ts +0 -88
  197. package/metadata/packages/components/components/syn-breadcrumb-item/component.ts +0 -132
  198. package/metadata/packages/components/components/syn-breadcrumb-item/component.vue +0 -76
  199. package/metadata/packages/components/components/syn-button/component.angular.ts +0 -318
  200. package/metadata/packages/components/components/syn-button/component.custom.styles.ts +0 -245
  201. package/metadata/packages/components/components/syn-button/component.react.ts +0 -56
  202. package/metadata/packages/components/components/syn-button/component.styles.ts +0 -361
  203. package/metadata/packages/components/components/syn-button/component.ts +0 -315
  204. package/metadata/packages/components/components/syn-button/component.vue +0 -204
  205. package/metadata/packages/components/components/syn-button-group/component.angular.ts +0 -79
  206. package/metadata/packages/components/components/syn-button-group/component.custom.styles.ts +0 -5
  207. package/metadata/packages/components/components/syn-button-group/component.react.ts +0 -29
  208. package/metadata/packages/components/components/syn-button-group/component.styles.ts +0 -14
  209. package/metadata/packages/components/components/syn-button-group/component.ts +0 -171
  210. package/metadata/packages/components/components/syn-button-group/component.vue +0 -67
  211. package/metadata/packages/components/components/syn-card/component.angular.ts +0 -83
  212. package/metadata/packages/components/components/syn-card/component.custom.styles.ts +0 -60
  213. package/metadata/packages/components/components/syn-card/component.react.ts +0 -41
  214. package/metadata/packages/components/components/syn-card/component.styles.ts +0 -70
  215. package/metadata/packages/components/components/syn-card/component.ts +0 -65
  216. package/metadata/packages/components/components/syn-card/component.vue +0 -73
  217. package/metadata/packages/components/components/syn-checkbox/component.angular.ts +0 -273
  218. package/metadata/packages/components/components/syn-checkbox/component.react.ts +0 -64
  219. package/metadata/packages/components/components/syn-checkbox/component.styles.ts +0 -183
  220. package/metadata/packages/components/components/syn-checkbox/component.ts +0 -287
  221. package/metadata/packages/components/components/syn-checkbox/component.vue +0 -191
  222. package/metadata/packages/components/components/syn-combobox/component.angular.ts +0 -516
  223. package/metadata/packages/components/components/syn-combobox/component.react.ts +0 -118
  224. package/metadata/packages/components/components/syn-combobox/component.styles.ts +0 -393
  225. package/metadata/packages/components/components/syn-combobox/component.ts +0 -1684
  226. package/metadata/packages/components/components/syn-combobox/component.vue +0 -350
  227. package/metadata/packages/components/components/syn-details/component.angular.ts +0 -186
  228. package/metadata/packages/components/components/syn-details/component.react.ts +0 -65
  229. package/metadata/packages/components/components/syn-details/component.styles.ts +0 -181
  230. package/metadata/packages/components/components/syn-details/component.ts +0 -261
  231. package/metadata/packages/components/components/syn-details/component.vue +0 -136
  232. package/metadata/packages/components/components/syn-dialog/component.angular.ts +0 -201
  233. package/metadata/packages/components/components/syn-dialog/component.react.ts +0 -91
  234. package/metadata/packages/components/components/syn-dialog/component.styles.ts +0 -130
  235. package/metadata/packages/components/components/syn-dialog/component.ts +0 -367
  236. package/metadata/packages/components/components/syn-dialog/component.vue +0 -169
  237. package/metadata/packages/components/components/syn-divider/component.angular.ts +0 -55
  238. package/metadata/packages/components/components/syn-divider/component.react.ts +0 -29
  239. package/metadata/packages/components/components/syn-divider/component.styles.ts +0 -22
  240. package/metadata/packages/components/components/syn-divider/component.ts +0 -34
  241. package/metadata/packages/components/components/syn-divider/component.vue +0 -51
  242. package/metadata/packages/components/components/syn-drawer/component.angular.ts +0 -234
  243. package/metadata/packages/components/components/syn-drawer/component.custom.styles.ts +0 -78
  244. package/metadata/packages/components/components/syn-drawer/component.react.ts +0 -98
  245. package/metadata/packages/components/components/syn-drawer/component.styles.ts +0 -158
  246. package/metadata/packages/components/components/syn-drawer/component.ts +0 -489
  247. package/metadata/packages/components/components/syn-drawer/component.vue +0 -188
  248. package/metadata/packages/components/components/syn-dropdown/component.angular.ts +0 -208
  249. package/metadata/packages/components/components/syn-dropdown/component.react.ts +0 -59
  250. package/metadata/packages/components/components/syn-dropdown/component.styles.ts +0 -51
  251. package/metadata/packages/components/components/syn-dropdown/component.ts +0 -469
  252. package/metadata/packages/components/components/syn-dropdown/component.vue +0 -152
  253. package/metadata/packages/components/components/syn-file/component.angular.ts +0 -372
  254. package/metadata/packages/components/components/syn-file/component.react.ts +0 -85
  255. package/metadata/packages/components/components/syn-file/component.styles.ts +0 -197
  256. package/metadata/packages/components/components/syn-file/component.ts +0 -645
  257. package/metadata/packages/components/components/syn-file/component.vue +0 -256
  258. package/metadata/packages/components/components/syn-header/component.angular.ts +0 -149
  259. package/metadata/packages/components/components/syn-header/component.react.ts +0 -68
  260. package/metadata/packages/components/components/syn-header/component.styles.ts +0 -143
  261. package/metadata/packages/components/components/syn-header/component.ts +0 -310
  262. package/metadata/packages/components/components/syn-header/component.vue +0 -126
  263. package/metadata/packages/components/components/syn-icon/component.angular.ts +0 -115
  264. package/metadata/packages/components/components/syn-icon/component.custom.styles.ts +0 -5
  265. package/metadata/packages/components/components/syn-icon/component.react.ts +0 -41
  266. package/metadata/packages/components/components/syn-icon/component.styles.ts +0 -18
  267. package/metadata/packages/components/components/syn-icon/component.ts +0 -227
  268. package/metadata/packages/components/components/syn-icon/component.vue +0 -100
  269. package/metadata/packages/components/components/syn-icon-button/component.angular.ts +0 -185
  270. package/metadata/packages/components/components/syn-icon-button/component.custom.styles.ts +0 -79
  271. package/metadata/packages/components/components/syn-icon-button/component.react.ts +0 -42
  272. package/metadata/packages/components/components/syn-icon-button/component.styles.ts +0 -52
  273. package/metadata/packages/components/components/syn-icon-button/component.ts +0 -147
  274. package/metadata/packages/components/components/syn-icon-button/component.vue +0 -132
  275. package/metadata/packages/components/components/syn-input/component.angular.ts +0 -608
  276. package/metadata/packages/components/components/syn-input/component.custom.styles.ts +0 -278
  277. package/metadata/packages/components/components/syn-input/component.react.ts +0 -91
  278. package/metadata/packages/components/components/syn-input/component.styles.ts +0 -280
  279. package/metadata/packages/components/components/syn-input/component.ts +0 -941
  280. package/metadata/packages/components/components/syn-input/component.vue +0 -370
  281. package/metadata/packages/components/components/syn-menu/component.angular.ts +0 -52
  282. package/metadata/packages/components/components/syn-menu/component.react.ts +0 -36
  283. package/metadata/packages/components/components/syn-menu/component.styles.ts +0 -37
  284. package/metadata/packages/components/components/syn-menu/component.ts +0 -191
  285. package/metadata/packages/components/components/syn-menu/component.vue +0 -48
  286. package/metadata/packages/components/components/syn-menu-item/component.angular.ts +0 -121
  287. package/metadata/packages/components/components/syn-menu-item/component.react.ts +0 -45
  288. package/metadata/packages/components/components/syn-menu-item/component.styles.ts +0 -285
  289. package/metadata/packages/components/components/syn-menu-item/component.ts +0 -201
  290. package/metadata/packages/components/components/syn-menu-item/component.vue +0 -91
  291. package/metadata/packages/components/components/syn-menu-label/component.angular.ts +0 -48
  292. package/metadata/packages/components/components/syn-menu-label/component.react.ts +0 -35
  293. package/metadata/packages/components/components/syn-menu-label/component.styles.ts +0 -31
  294. package/metadata/packages/components/components/syn-menu-label/component.ts +0 -46
  295. package/metadata/packages/components/components/syn-menu-label/component.vue +0 -41
  296. package/metadata/packages/components/components/syn-nav-item/component.angular.ts +0 -242
  297. package/metadata/packages/components/components/syn-nav-item/component.react.ts +0 -82
  298. package/metadata/packages/components/components/syn-nav-item/component.styles.ts +0 -333
  299. package/metadata/packages/components/components/syn-nav-item/component.ts +0 -491
  300. package/metadata/packages/components/components/syn-nav-item/component.vue +0 -182
  301. package/metadata/packages/components/components/syn-optgroup/component.angular.ts +0 -79
  302. package/metadata/packages/components/components/syn-optgroup/component.react.ts +0 -41
  303. package/metadata/packages/components/components/syn-optgroup/component.styles.ts +0 -61
  304. package/metadata/packages/components/components/syn-optgroup/component.ts +0 -176
  305. package/metadata/packages/components/components/syn-optgroup/component.vue +0 -71
  306. package/metadata/packages/components/components/syn-option/component.angular.ts +0 -79
  307. package/metadata/packages/components/components/syn-option/component.react.ts +0 -37
  308. package/metadata/packages/components/components/syn-option/component.styles.ts +0 -165
  309. package/metadata/packages/components/components/syn-option/component.ts +0 -191
  310. package/metadata/packages/components/components/syn-option/component.vue +0 -71
  311. package/metadata/packages/components/components/syn-pagination/component.angular.ts +0 -201
  312. package/metadata/packages/components/components/syn-pagination/component.react.ts +0 -56
  313. package/metadata/packages/components/components/syn-pagination/component.styles.ts +0 -128
  314. package/metadata/packages/components/components/syn-pagination/component.ts +0 -452
  315. package/metadata/packages/components/components/syn-pagination/component.vue +0 -144
  316. package/metadata/packages/components/components/syn-popup/component.angular.ts +0 -372
  317. package/metadata/packages/components/components/syn-popup/component.react.ts +0 -55
  318. package/metadata/packages/components/components/syn-popup/component.styles.ts +0 -70
  319. package/metadata/packages/components/components/syn-popup/component.ts +0 -582
  320. package/metadata/packages/components/components/syn-popup/component.vue +0 -233
  321. package/metadata/packages/components/components/syn-prio-nav/component.angular.ts +0 -67
  322. package/metadata/packages/components/components/syn-prio-nav/component.react.ts +0 -54
  323. package/metadata/packages/components/components/syn-prio-nav/component.styles.ts +0 -48
  324. package/metadata/packages/components/components/syn-prio-nav/component.ts +0 -288
  325. package/metadata/packages/components/components/syn-prio-nav/component.vue +0 -60
  326. package/metadata/packages/components/components/syn-progress-bar/component.angular.ts +0 -85
  327. package/metadata/packages/components/components/syn-progress-bar/component.custom.styles.ts +0 -24
  328. package/metadata/packages/components/components/syn-progress-bar/component.react.ts +0 -37
  329. package/metadata/packages/components/components/syn-progress-bar/component.styles.ts +0 -87
  330. package/metadata/packages/components/components/syn-progress-bar/component.ts +0 -67
  331. package/metadata/packages/components/components/syn-progress-bar/component.vue +0 -71
  332. package/metadata/packages/components/components/syn-progress-ring/component.angular.ts +0 -72
  333. package/metadata/packages/components/components/syn-progress-ring/component.custom.styles.ts +0 -19
  334. package/metadata/packages/components/components/syn-progress-ring/component.react.ts +0 -37
  335. package/metadata/packages/components/components/syn-progress-ring/component.styles.ts +0 -70
  336. package/metadata/packages/components/components/syn-progress-ring/component.ts +0 -83
  337. package/metadata/packages/components/components/syn-progress-ring/component.vue +0 -66
  338. package/metadata/packages/components/components/syn-radio/component.angular.ts +0 -122
  339. package/metadata/packages/components/components/syn-radio/component.react.ts +0 -48
  340. package/metadata/packages/components/components/syn-radio/component.styles.ts +0 -179
  341. package/metadata/packages/components/components/syn-radio/component.ts +0 -131
  342. package/metadata/packages/components/components/syn-radio/component.vue +0 -104
  343. package/metadata/packages/components/components/syn-radio-button/component.angular.ts +0 -123
  344. package/metadata/packages/components/components/syn-radio-button/component.react.ts +0 -49
  345. package/metadata/packages/components/components/syn-radio-button/component.styles.ts +0 -30
  346. package/metadata/packages/components/components/syn-radio-button/component.ts +0 -142
  347. package/metadata/packages/components/components/syn-radio-button/component.vue +0 -105
  348. package/metadata/packages/components/components/syn-radio-group/component.angular.ts +0 -204
  349. package/metadata/packages/components/components/syn-radio-group/component.react.ts +0 -56
  350. package/metadata/packages/components/components/syn-radio-group/component.styles.ts +0 -58
  351. package/metadata/packages/components/components/syn-radio-group/component.ts +0 -440
  352. package/metadata/packages/components/components/syn-radio-group/component.vue +0 -158
  353. package/metadata/packages/components/components/syn-range/component.angular.ts +0 -347
  354. package/metadata/packages/components/components/syn-range/component.react.ts +0 -92
  355. package/metadata/packages/components/components/syn-range/component.styles.ts +0 -310
  356. package/metadata/packages/components/components/syn-range/component.ts +0 -933
  357. package/metadata/packages/components/components/syn-range/component.vue +0 -245
  358. package/metadata/packages/components/components/syn-range-tick/component.angular.ts +0 -59
  359. package/metadata/packages/components/components/syn-range-tick/component.react.ts +0 -33
  360. package/metadata/packages/components/components/syn-range-tick/component.styles.ts +0 -34
  361. package/metadata/packages/components/components/syn-range-tick/component.ts +0 -50
  362. package/metadata/packages/components/components/syn-range-tick/component.vue +0 -57
  363. package/metadata/packages/components/components/syn-resize-observer/component.styles.ts +0 -9
  364. package/metadata/packages/components/components/syn-resize-observer/component.ts +0 -91
  365. package/metadata/packages/components/components/syn-select/component.angular.ts +0 -439
  366. package/metadata/packages/components/components/syn-select/component.react.ts +0 -101
  367. package/metadata/packages/components/components/syn-select/component.styles.ts +0 -380
  368. package/metadata/packages/components/components/syn-select/component.ts +0 -1056
  369. package/metadata/packages/components/components/syn-select/component.vue +0 -301
  370. package/metadata/packages/components/components/syn-side-nav/component.angular.ts +0 -210
  371. package/metadata/packages/components/components/syn-side-nav/component.react.ts +0 -95
  372. package/metadata/packages/components/components/syn-side-nav/component.styles.ts +0 -142
  373. package/metadata/packages/components/components/syn-side-nav/component.ts +0 -458
  374. package/metadata/packages/components/components/syn-side-nav/component.vue +0 -188
  375. package/metadata/packages/components/components/syn-spinner/component.angular.ts +0 -44
  376. package/metadata/packages/components/components/syn-spinner/component.custom.styles.ts +0 -32
  377. package/metadata/packages/components/components/syn-spinner/component.react.ts +0 -31
  378. package/metadata/packages/components/components/syn-spinner/component.styles.ts +0 -48
  379. package/metadata/packages/components/components/syn-spinner/component.ts +0 -35
  380. package/metadata/packages/components/components/syn-spinner/component.vue +0 -35
  381. package/metadata/packages/components/components/syn-switch/component.angular.ts +0 -257
  382. package/metadata/packages/components/components/syn-switch/component.react.ts +0 -63
  383. package/metadata/packages/components/components/syn-switch/component.styles.ts +0 -252
  384. package/metadata/packages/components/components/syn-switch/component.ts +0 -279
  385. package/metadata/packages/components/components/syn-switch/component.vue +0 -183
  386. package/metadata/packages/components/components/syn-tab/component.angular.ts +0 -109
  387. package/metadata/packages/components/components/syn-tab/component.custom.styles.ts +0 -94
  388. package/metadata/packages/components/components/syn-tab/component.react.ts +0 -42
  389. package/metadata/packages/components/components/syn-tab/component.styles.ts +0 -70
  390. package/metadata/packages/components/components/syn-tab/component.ts +0 -125
  391. package/metadata/packages/components/components/syn-tab/component.vue +0 -91
  392. package/metadata/packages/components/components/syn-tab-group/component.angular.ts +0 -166
  393. package/metadata/packages/components/components/syn-tab-group/component.custom.styles.ts +0 -218
  394. package/metadata/packages/components/components/syn-tab-group/component.react.ts +0 -58
  395. package/metadata/packages/components/components/syn-tab-group/component.styles.ts +0 -193
  396. package/metadata/packages/components/components/syn-tab-group/component.ts +0 -551
  397. package/metadata/packages/components/components/syn-tab-group/component.vue +0 -126
  398. package/metadata/packages/components/components/syn-tab-panel/component.angular.ts +0 -68
  399. package/metadata/packages/components/components/syn-tab-panel/component.custom.styles.ts +0 -8
  400. package/metadata/packages/components/components/syn-tab-panel/component.react.ts +0 -31
  401. package/metadata/packages/components/components/syn-tab-panel/component.styles.ts +0 -20
  402. package/metadata/packages/components/components/syn-tab-panel/component.ts +0 -60
  403. package/metadata/packages/components/components/syn-tab-panel/component.vue +0 -60
  404. package/metadata/packages/components/components/syn-tag/component.angular.ts +0 -83
  405. package/metadata/packages/components/components/syn-tag/component.custom.styles.ts +0 -121
  406. package/metadata/packages/components/components/syn-tag/component.react.ts +0 -43
  407. package/metadata/packages/components/components/syn-tag/component.styles.ts +0 -58
  408. package/metadata/packages/components/components/syn-tag/component.ts +0 -83
  409. package/metadata/packages/components/components/syn-tag/component.vue +0 -81
  410. package/metadata/packages/components/components/syn-tag-group/component.angular.ts +0 -83
  411. package/metadata/packages/components/components/syn-tag-group/component.react.ts +0 -33
  412. package/metadata/packages/components/components/syn-tag-group/component.styles.ts +0 -49
  413. package/metadata/packages/components/components/syn-tag-group/component.ts +0 -95
  414. package/metadata/packages/components/components/syn-tag-group/component.vue +0 -69
  415. package/metadata/packages/components/components/syn-textarea/component.angular.ts +0 -396
  416. package/metadata/packages/components/components/syn-textarea/component.react.ts +0 -60
  417. package/metadata/packages/components/components/syn-textarea/component.styles.ts +0 -208
  418. package/metadata/packages/components/components/syn-textarea/component.ts +0 -400
  419. package/metadata/packages/components/components/syn-textarea/component.vue +0 -244
  420. package/metadata/packages/components/components/syn-tooltip/component.angular.ts +0 -196
  421. package/metadata/packages/components/components/syn-tooltip/component.react.ts +0 -63
  422. package/metadata/packages/components/components/syn-tooltip/component.styles.ts +0 -62
  423. package/metadata/packages/components/components/syn-tooltip/component.ts +0 -312
  424. package/metadata/packages/components/components/syn-tooltip/component.vue +0 -150
  425. package/metadata/packages/components/components/syn-validate/component.angular.ts +0 -137
  426. package/metadata/packages/components/components/syn-validate/component.react.ts +0 -44
  427. package/metadata/packages/components/components/syn-validate/component.styles.ts +0 -9
  428. package/metadata/packages/components/components/syn-validate/component.ts +0 -590
  429. package/metadata/packages/components/components/syn-validate/component.vue +0 -107
  430. package/metadata/packages/components/migration/BREAKING_CHANGES.md +0 -908
  431. package/metadata/packages/components/static/CHANGELOG.md +0 -2155
  432. package/metadata/packages/components/static/LIMITATIONS.md +0 -433
  433. package/metadata/packages/components/static/README.md +0 -231
  434. package/metadata/packages/fonts/CHANGELOG.md +0 -57
  435. package/metadata/packages/fonts/README.md +0 -164
  436. package/metadata/packages/fonts/package.json +0 -72
  437. package/metadata/packages/react/LIMITATIONS.md +0 -31
  438. package/metadata/packages/react/README.md +0 -262
  439. package/metadata/packages/styles/BREAKING_CHANGES.md +0 -105
  440. package/metadata/packages/styles/CHANGELOG.md +0 -188
  441. package/metadata/packages/styles/README.md +0 -132
  442. package/metadata/packages/styles/index.css +0 -300
  443. package/metadata/packages/styles/link-list.css +0 -47
  444. package/metadata/packages/styles/link.css +0 -81
  445. package/metadata/packages/styles/tables.css +0 -132
  446. package/metadata/packages/styles/typography.css +0 -52
  447. package/metadata/packages/tokens/BREAKING_CHANGES.md +0 -180
  448. package/metadata/packages/tokens/CHANGELOG.md +0 -959
  449. package/metadata/packages/tokens/README.md +0 -435
  450. package/metadata/packages/tokens/dark.css +0 -454
  451. package/metadata/packages/tokens/index.js +0 -2224
  452. package/metadata/packages/tokens/light.css +0 -454
  453. package/metadata/packages/tokens/sick2018_dark.css +0 -454
  454. package/metadata/packages/tokens/sick2018_light.css +0 -454
  455. package/metadata/packages/tokens/sick2025_dark.css +0 -454
  456. package/metadata/packages/tokens/sick2025_light.css +0 -454
  457. package/metadata/packages/vue/LIMITATIONS.md +0 -53
  458. package/metadata/packages/vue/README.md +0 -252
  459. package/metadata/static/assets/index.md +0 -10
  460. package/metadata/static/components/index.md +0 -10
  461. package/metadata/static/components/syn-accordion/docs.md +0 -449
  462. package/metadata/static/components/syn-alert/docs.md +0 -282
  463. package/metadata/static/components/syn-badge/docs.md +0 -106
  464. package/metadata/static/components/syn-breadcrumb/docs.md +0 -265
  465. package/metadata/static/components/syn-breadcrumb-item/docs.md +0 -49
  466. package/metadata/static/components/syn-button/docs.md +0 -472
  467. package/metadata/static/components/syn-button-group/docs.md +0 -259
  468. package/metadata/static/components/syn-card/docs.md +0 -314
  469. package/metadata/static/components/syn-checkbox/docs.md +0 -176
  470. package/metadata/static/components/syn-combobox/docs.md +0 -2633
  471. package/metadata/static/components/syn-details/docs.md +0 -227
  472. package/metadata/static/components/syn-dialog/docs.md +0 -220
  473. package/metadata/static/components/syn-divider/docs.md +0 -77
  474. package/metadata/static/components/syn-drawer/docs.md +0 -269
  475. package/metadata/static/components/syn-dropdown/docs.md +0 -316
  476. package/metadata/static/components/syn-file/docs.md +0 -239
  477. package/metadata/static/components/syn-header/docs.md +0 -209
  478. package/metadata/static/components/syn-icon/docs.md +0 -177
  479. package/metadata/static/components/syn-icon-button/docs.md +0 -142
  480. package/metadata/static/components/syn-input/docs.md +0 -462
  481. package/metadata/static/components/syn-menu/docs.md +0 -162
  482. package/metadata/static/components/syn-menu-item/docs.md +0 -216
  483. package/metadata/static/components/syn-menu-label/docs.md +0 -29
  484. package/metadata/static/components/syn-nav-item/docs.md +0 -166
  485. package/metadata/static/components/syn-optgroup/docs.md +0 -167
  486. package/metadata/static/components/syn-option/docs.md +0 -137
  487. package/metadata/static/components/syn-pagination/docs.md +0 -102
  488. package/metadata/static/components/syn-popup/docs.md +0 -812
  489. package/metadata/static/components/syn-prio-nav/docs.md +0 -54
  490. package/metadata/static/components/syn-progress-bar/docs.md +0 -77
  491. package/metadata/static/components/syn-progress-ring/docs.md +0 -89
  492. package/metadata/static/components/syn-radio/docs.md +0 -178
  493. package/metadata/static/components/syn-radio-group/docs.md +0 -484
  494. package/metadata/static/components/syn-range/docs.md +0 -438
  495. package/metadata/static/components/syn-range-tick/docs.md +0 -110
  496. package/metadata/static/components/syn-select/docs.md +0 -811
  497. package/metadata/static/components/syn-side-nav/docs.md +0 -593
  498. package/metadata/static/components/syn-spinner/docs.md +0 -45
  499. package/metadata/static/components/syn-switch/docs.md +0 -121
  500. package/metadata/static/components/syn-tab/docs.md +0 -47
  501. package/metadata/static/components/syn-tab-group/docs.md +0 -1094
  502. package/metadata/static/components/syn-tab-panel/docs.md +0 -91
  503. package/metadata/static/components/syn-tag/docs.md +0 -50
  504. package/metadata/static/components/syn-tag-group/docs.md +0 -269
  505. package/metadata/static/components/syn-textarea/docs.md +0 -215
  506. package/metadata/static/components/syn-tooltip/docs.md +0 -217
  507. package/metadata/static/components/syn-validate/docs.md +0 -305
  508. package/metadata/static/fonts/index.md +0 -4
  509. package/metadata/static/migration/index.md +0 -57
  510. package/metadata/static/migration/v2-2018-to-v2-2025.md +0 -481
  511. package/metadata/static/migration/v2-2018-to-v3-2018.md +0 -147
  512. package/metadata/static/migration/v2-2018-to-v3-2025.md +0 -150
  513. package/metadata/static/migration/v2-2025-to-v3-2025.md +0 -133
  514. package/metadata/static/setup/icon-usage.md +0 -411
  515. package/metadata/static/setup/prerequisites.md +0 -319
  516. package/metadata/static/styles/syn-body.md +0 -5
  517. package/metadata/static/styles/syn-heading.md +0 -5
  518. package/metadata/static/styles/syn-link-list.md +0 -325
  519. package/metadata/static/styles/syn-link.md +0 -156
  520. package/metadata/static/styles/syn-table-cell.md +0 -127
  521. package/metadata/static/styles/syn-table.md +0 -201
  522. package/metadata/static/styles/syn-weight.md +0 -5
  523. package/metadata/static/templates/appshell.md +0 -2053
  524. package/metadata/static/templates/breadcrumb.md +0 -379
  525. package/metadata/static/templates/footer.md +0 -340
  526. package/metadata/static/templates/forms.md +0 -558
  527. package/metadata/static/templates/localization.md +0 -279
  528. package/metadata/static/templates/table.md +0 -1425
  529. package/metadata/static/templates/tag-group.md +0 -833
  530. /package/dist/{build/build.d.ts → utilities/logging-types.js} +0 -0
  531. /package/{metadata/static/component-info/index.md → rules/component-info.md} +0 -0
@@ -1,590 +0,0 @@
1
- import type { CSSResultGroup, PropertyValues } from 'lit';
2
- import { html } from 'lit';
3
- import {
4
- property,
5
- query,
6
- queryAssignedElements,
7
- state,
8
- } from 'lit/decorators.js';
9
- import { ifDefined } from 'lit/directives/if-defined.js';
10
- import componentStyles from '../../styles/component.styles.js';
11
- import SynergyElement from '../../internal/synergy-element.js';
12
- import type SynInput from '../input/input.component.js';
13
- import { watch } from '../../internal/watch.js';
14
- import SynAlert from '../alert/alert.component.js';
15
- import SynTooltip from '../tooltip/tooltip.component.js';
16
- import {
17
- alertSizeForInput,
18
- getActualInputElement,
19
- getEventNameForElement,
20
- isBlurEvent,
21
- isInvalidEvent,
22
- isSynergyElement,
23
- normalizeEventAttribute,
24
- } from './utility.js';
25
- import styles from './validate.styles.js';
26
- import { enableDefaultSettings } from '../../utilities/defaultSettings/decorator.js';
27
-
28
- /**
29
- * Utility function that renders the default slot content.
30
- * This is needed to avoid code duplication when rendering the default slot in both the tooltip and the regular render function.
31
- */
32
- const renderDefaultSlot = () => html`
33
- <slot
34
- class="validate__input-wrapper"
35
- part="input-wrapper"
36
- ></slot>
37
- `;
38
-
39
- /**
40
- * @summary Validate provides form field validation messages in a unified way.
41
- * It does this by using [the native browser validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)
42
- * and showing the validation message in a consistent, user defined way.
43
- * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-validate--docs
44
- * @dependency syn-alert
45
- * @dependency syn-tooltip
46
- *
47
- * @slot - The form field that should be validated.
48
- * Avoid slotting in more than one element, as subsequent ones will be ignored.
49
- *
50
- * @csspart base - The component's base wrapper.
51
- * @csspart input-wrapper - The container that wraps the form field.
52
- *
53
- * @csspart alert - The syn-alert that is shown when the variant is set to "inline".
54
- * @csspart alert__base - The container that wraps the alert.
55
- * @csspart alert__message - The container that wraps the alert message.
56
- * @csspart alert__icon - The container that wraps the alert icon.
57
- *
58
- * @csspart tooltip - The syn-tooltip that is shown when the variant is set to "tooltip".
59
- * @csspart tooltip__base - The container that wraps the tooltip.
60
- * @csspart tooltip__popup - The container that wraps the tooltip popup.
61
- * @csspart tooltip__arrow - The container that wraps the tooltip arrow.
62
- * @csspart tooltip__body - The container that wraps the tooltip body.
63
- */
64
- @enableDefaultSettings('SynValidate')
65
- export default class SynValidate extends SynergyElement {
66
- static styles: CSSResultGroup = [componentStyles, styles];
67
-
68
- static dependencies = {
69
- 'syn-alert': SynAlert,
70
- 'syn-tooltip': SynTooltip,
71
- };
72
-
73
- controller = new AbortController();
74
-
75
- observer: MutationObserver;
76
-
77
- sizeObserver: MutationObserver;
78
-
79
- @queryAssignedElements() private slottedChildren: HTMLElement[];
80
-
81
- @query('syn-tooltip') private tooltipElement?: SynTooltip;
82
-
83
- @state() validationMessage = '';
84
-
85
- @state() eagerFirstMount = true;
86
-
87
- @state() isInternalTriggeredInvalid = false;
88
-
89
- @state() isValid = true;
90
-
91
- @state() alertSize?: SynInput['size'];
92
-
93
- @state() hasFocus = false;
94
-
95
- /**
96
- * The variant that should be used to show validation alerts.
97
- *
98
- * The following variants are supported:
99
- * - **native** (default): Uses the native browser validation, usually a browser tooltip.
100
- * - **tooltip**: Show the validation message as a tooltip using a `<syn-tooltip>`.
101
- * - **inline**: Show the validation message underneath the element, using a `<syn-alert>`
102
- */
103
- @property({ reflect: true }) variant: 'native' | 'tooltip' | 'inline' = 'native';
104
-
105
- /** Do not show the error icon when using the inline variant validation */
106
- @property({ attribute: 'hide-icon', reflect: true, type: Boolean }) hideIcon = false;
107
-
108
- /**
109
- * Defines the events that trigger the validation.
110
- * `invalid` will always automatically be included.
111
- * You may also use the `live` keyword to validate on every input change.
112
- * `live` will make sure to listen to the `invalid`, `input` and `blur` events.
113
- *
114
- * Please have a look at the [documentation for native form validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)
115
- * and [the use of form invalid events](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event) for further information.
116
- *
117
- * @example ```html
118
- * <!-- Validate on invalid and change events (invalid, change) -->
119
- * <syn-validate on="invalid change"></syn-validate>
120
- *
121
- * <!-- Validate on live events (invalid, blur, input)-->
122
- * <syn-validate on="live"></syn-validate>
123
- *
124
- * <!-- Validate on live and custom events (invalid, blur, input, focus, change) -->
125
- * <syn-validate on="live focus change"></syn-validate>
126
- * ```
127
- */
128
- @property({ reflect: true }) on: string = '';
129
-
130
- /**
131
- * Custom validation message to be displayed when the input is invalid.
132
- * Will override the default browser validation message.
133
- * Set to an empty string to reset the validation message.
134
- */
135
- @property({ attribute: 'custom-validation-message', type: String }) customValidationMessage = '';
136
-
137
- /**
138
- * Set this to true to validate the input immediately when it is rendered.
139
- * Best used with a `variant` of `inline`.
140
- * When setting eager, the input will not be focused automatically.
141
- *
142
- * When using a `variant` of `native` the browser will focus
143
- * the last eager field as it is using a tooltip.
144
- * In this case it is better to just provide one eager field.
145
- */
146
- @property({ type: Boolean }) eager = false;
147
-
148
- // Automatically refresh all event listeners when the on property changes.
149
- @watch('on', { waitUntilFirstUpdate: true })
150
- handleListenerChange() {
151
- this.updateEvents();
152
- }
153
-
154
- @watch('eager', { waitUntilFirstUpdate: false })
155
- async handleEagerChange() {
156
- if (this.eager) {
157
- const input = this.getInput();
158
- await this.updateComplete;
159
- input?.reportValidity();
160
- this.eagerFirstMount = true;
161
- } else {
162
- this.eagerFirstMount = false;
163
- }
164
- }
165
-
166
- // Synchronize the validation message on the wrapped input with the custom message
167
- @watch('customValidationMessage', { waitUntilFirstUpdate: true })
168
- handleCustomValidationMessageChange() {
169
- const input = this.getInput();
170
- if (input) {
171
- this.setCustomValidationMessage(input);
172
- this.setValidationMessage(input);
173
- }
174
- }
175
-
176
- /**
177
- * Returns the validity state of the input component.
178
- * `true` for valid and `false` for invalid.
179
- */
180
- getValidity() {
181
- return this.isValid;
182
- }
183
-
184
- /**
185
- * Get the input element to validate. Defined as the first slotted element
186
- * @returns The input element or undefined if not found
187
- */
188
- private getInput() {
189
- const input = this.slottedChildren[0];
190
- return input ? input as HTMLInputElement : undefined;
191
- }
192
-
193
- private setAlertSize() {
194
- this.alertSize = alertSizeForInput(this.getInput());
195
- }
196
-
197
- /**
198
- * Get the event names to listen for.
199
- * If the input is a synergy element, will use syn- prefixes.
200
- * @returns The event names to listen for
201
- */
202
- // eslint-disable-next-line complexity
203
- private getUsedEventNames() {
204
- const input = this.getInput();
205
-
206
- // If there is no input, skip before doing any harm
207
- if (!input) {
208
- return [];
209
- }
210
-
211
- // Make sure to always use an array of events
212
- // This is needed because on may be a special value like "live"
213
- const on = normalizeEventAttribute(this.on);
214
-
215
- // Filter makes sure to remove empty values, e.g.
216
- // <syn-validate on=""></syn-validate>
217
- const [...events] = on.filter(Boolean);
218
-
219
- // Make sure to always have an invalid event
220
- if (!events.includes('invalid')) {
221
- events.push('invalid');
222
- }
223
-
224
- // Special handling for the live keyword:
225
- // live always means on input and blur
226
- if (events.includes('live')) {
227
- events.push('input');
228
- events.push('blur');
229
- }
230
-
231
- // Make sure to remove duplicated events and the live property
232
- // and map the events to the correct event names
233
- return Array.from(new Set(
234
- events
235
- .filter(e => e !== 'live')
236
- .map(e => getEventNameForElement(input, e)),
237
- ));
238
- }
239
-
240
- /**
241
- * Update the events on the input element.
242
- */
243
- private updateEvents() {
244
- this.controller.abort();
245
- this.controller = new AbortController();
246
- const input = this.getInput();
247
-
248
- if (!input) {
249
- return;
250
- }
251
-
252
- const events = this.getUsedEventNames();
253
- events.forEach(eventName => {
254
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
255
- input.addEventListener(eventName, this.validate, {
256
- capture: isInvalidEvent(eventName),
257
- signal: this.controller.signal,
258
- });
259
- });
260
-
261
- // If the change event is not included,
262
- // make sure to attach a custom listener that resets the validation message
263
- // This is needed as the custom message may be set on change
264
- const usedChangeEvent = getEventNameForElement(input, 'change');
265
- if (!events.includes(usedChangeEvent)) {
266
- input.addEventListener(usedChangeEvent, this.internalRevalidate, {
267
- signal: this.controller.signal,
268
- });
269
- }
270
-
271
- // #664: Add focus/blur listeners specifically for tooltip variant
272
- // This is needed because we want to show the tooltip on focus and hide it on blur, but only when using the tooltip variant.
273
- // Otherwise, this would interfere with the native validation tooltip, which also relies on focus and blur events.
274
- const focusEvent = getEventNameForElement(input, 'focus');
275
- const blurEvent = getEventNameForElement(input, 'blur');
276
-
277
- input.addEventListener(focusEvent, this.handleInputFocus, {
278
- signal: this.controller.signal,
279
- });
280
-
281
- input.addEventListener(blurEvent, this.handleInputBlur, {
282
- signal: this.controller.signal,
283
- });
284
- }
285
-
286
- /**
287
- * #851: Get the validation message that should be displayed to the user.
288
- * Prioritizes customValidationMessage over the internal validationMessage state.
289
- * This is needed because frameworks may clear the internal validation message on
290
- * dynamically rendered elements, but the customValidationMessage is still valid.
291
- */
292
- private getDisplayValidationMessage(): string {
293
- return this.customValidationMessage || this.validationMessage;
294
- }
295
-
296
- private setValidationMessage(input: HTMLInputElement) {
297
- const { customValidationMessage } = this;
298
- const validationMessage = customValidationMessage || input.validationMessage;
299
- this.validationMessage = validationMessage;
300
- }
301
-
302
- /**
303
- * Set the custom validation message to the input. This will make sure to either:
304
- * - use the custom message if one is set or
305
- * - use the default message if the custom message is empty
306
- */
307
- private setCustomValidationMessage(input: HTMLInputElement) {
308
- // Set the custom validation message on the input only once, when the customValidationMessage
309
- // is changed. Otherwise there could be problems with `variant="native"` and `on="live"` or
310
- // `on="blur"`, because the browser popup will never disappear even if clicking somewhere else.
311
- input.setCustomValidity(this.customValidationMessage);
312
- }
313
-
314
- /**
315
- * Set the validation message from the input element
316
- * @param e The event that was received
317
- */
318
- private internalRevalidate = (e: Event) => {
319
- const input = e.currentTarget as HTMLInputElement;
320
- if (input.validity?.valid) {
321
- this.validationMessage = '';
322
- }
323
- };
324
-
325
- /**
326
- * Handle focus/blur events for tooltip variant
327
- */
328
- private handleInputFocus = () => {
329
- this.hasFocus = true;
330
- };
331
-
332
- private handleInputBlur = () => {
333
- this.hasFocus = false;
334
- };
335
-
336
- /**
337
- * Handle the blur event during validation
338
- */
339
- // eslint-disable-next-line class-methods-use-this
340
- private handleFocus(input: HTMLInputElement) {
341
- const activeElement = document.activeElement! as HTMLInputElement;
342
- const activeElementIsWrapped = activeElement.closest('syn-validate');
343
-
344
- if (!activeElement.validity?.valid && activeElementIsWrapped) {
345
- // The active element is invalid do not scroll
346
- return;
347
- }
348
-
349
- input.scrollIntoView({ block: 'nearest' });
350
- input.focus();
351
- }
352
-
353
- /**
354
- * Triggers a validation run, showing the validation message if needed.
355
- */
356
- // eslint-disable-next-line complexity
357
- private validate = async (e: Event) => {
358
- // Make sure to stop the validate component from going into an endless cycle of triggering
359
- if (isInvalidEvent(e.type) && this.variant === 'native' && this.isInternalTriggeredInvalid === true) {
360
- this.isInternalTriggeredInvalid = false;
361
- return;
362
- }
363
-
364
- // Make sure to always prevent the invalid event when not using native validation
365
- if (isInvalidEvent(e.type) && this.variant !== 'native') {
366
- e.preventDefault();
367
- e.stopPropagation();
368
- }
369
-
370
- const input = e.currentTarget as HTMLInputElement;
371
- if (isSynergyElement(input)) {
372
- // When using a synergy element, we need to wait for it to be ready!
373
- // This is needed as the validity state of the element may not be set yet.
374
- await input.updateComplete;
375
- }
376
- this.isValid = input.validity?.valid;
377
-
378
- // When we are using eager, make sure to skip focus on the first mount
379
- if (this.eager && this.eagerFirstMount) {
380
- this.eagerFirstMount = false;
381
- this.setValidationMessage(input);
382
- return;
383
- }
384
-
385
- // If the active element that has focus is placed in a validate component,
386
- // make sure to not loose focus.
387
- if (!this.isValid && !isBlurEvent(e.type)) {
388
- this.handleFocus(input);
389
- }
390
-
391
- this.setValidationMessage(input);
392
-
393
- // Trigger reportValidity when using native validation, so the browser popup is also shown
394
- // for other events than `invalid`. All events except the blur event, should trigger this.
395
- if (!isBlurEvent(e.type) && this.variant === 'native') {
396
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
397
- this.updateComplete.then(() => {
398
- this.isInternalTriggeredInvalid = true;
399
- input.reportValidity();
400
- });
401
- }
402
- };
403
-
404
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
405
- async firstUpdated(changedProperties: PropertyValues) {
406
- super.firstUpdated(changedProperties);
407
- this.updateEvents();
408
-
409
- // #713: Make sure to set the custom validation message on mount
410
- // When we have a custom element, we need to wait for it to be ready!
411
- const input = this.getInput();
412
-
413
- if (this.customValidationMessage) {
414
- if (isSynergyElement(input)) {
415
- await input.updateComplete;
416
- }
417
- input?.setCustomValidity(this.customValidationMessage);
418
- }
419
-
420
- // Make sure to run validation on mount if eager is set
421
- if (this.eager) {
422
- await this.updateComplete;
423
- this.isValid = input?.validity?.valid ?? false;
424
- input?.reportValidity();
425
- }
426
- }
427
-
428
- connectedCallback() {
429
- super.connectedCallback();
430
-
431
- // #1119: Update alert size when the input size changes
432
- // Note that we need to create our own observer here,
433
- // as the size attribute may be changed on the input element directly,
434
- // which would not be captured by the synergy-element observer.
435
- this.sizeObserver = new MutationObserver(entries => {
436
- const input = this.getInput();
437
-
438
- if (!input) {
439
- return;
440
- }
441
-
442
- const hasSizeChanged = entries
443
- .filter(({ target }) => target === input)
444
- .every(
445
- entry => entry.attributeName === 'size',
446
- );
447
-
448
- if (hasSizeChanged) {
449
- this.setAlertSize();
450
- }
451
- });
452
-
453
- this.sizeObserver.observe(this, {
454
- attributeFilter: ['size'],
455
- attributes: true,
456
- subtree: true,
457
- });
458
-
459
- // #717: Make sure to remove to rerun validation when
460
- // disabled or readonly properties change on the input
461
- this.observer = new MutationObserver(entries => {
462
- const input = this.getInput();
463
-
464
- if (!input) {
465
- return;
466
- }
467
-
468
- // Check if the input is disabled or readonly
469
- const hasDisabledOrReadonly = entries
470
- .filter(({ target }) => target === input)
471
- .every(entry => {
472
- const target = entry.target as HTMLInputElement;
473
- return target.hasAttribute('disabled') || target.hasAttribute('readonly');
474
- });
475
-
476
- if (hasDisabledOrReadonly) {
477
- this.isValid = true;
478
- this.validationMessage = '';
479
- } else {
480
- // When using a synergy element, we need to check the validity after the element is updated,
481
- // as we cannot rely on the validity state of the element itself.
482
- // Unfortunately, this depends on used browser :(.
483
- const waitForPromise = isSynergyElement(input)
484
- ? input.updateComplete
485
- : Promise.resolve();
486
-
487
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
488
- waitForPromise.then(() => {
489
- this.isValid = input?.validity?.valid ?? false;
490
- this.validationMessage = input?.validationMessage ?? '';
491
- });
492
- }
493
- });
494
-
495
- this.observer.observe(this, {
496
- attributeFilter: ['disabled', 'readonly'],
497
- attributes: true,
498
- subtree: true,
499
- });
500
- }
501
-
502
- disconnectedCallback() {
503
- super.disconnectedCallback();
504
- this.controller.abort();
505
- this?.observer?.disconnect();
506
- this?.sizeObserver?.disconnect();
507
- }
508
-
509
- updated(changedProperties: PropertyValues) {
510
- super.updated(changedProperties);
511
-
512
- // #664: Make sure to update the syn-tooltip if the validation state changes when using the tooltip variant
513
- if (this.variant !== 'tooltip') {
514
- return;
515
- }
516
-
517
- const tooltip = this.tooltipElement;
518
-
519
- if (!tooltip) {
520
- return;
521
- }
522
-
523
- // When we have a valid tooltip,
524
- // we need to update the content and show or hide it based on the validation state and focus state.
525
- // We have to do this manually, as there is a problem when updating open and content at the same time.
526
- // The order is critical: fill before showing, don´t update the content during hide.
527
- const displayMessage = this.getDisplayValidationMessage();
528
- const shouldShowTooltip = !this.isValid && displayMessage && this.hasFocus;
529
-
530
- if (shouldShowTooltip) {
531
- tooltip.content = displayMessage;
532
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
533
- tooltip.show();
534
- } else {
535
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
536
- tooltip.hide();
537
- }
538
- }
539
-
540
- private renderInlineValidation() {
541
- const messageToShow = this.getDisplayValidationMessage();
542
-
543
- if (this.variant !== 'inline' || !messageToShow) {
544
- return '';
545
- }
546
-
547
- return html`
548
- <syn-alert
549
- open
550
- exportparts="base:alert__base,message:alert__message,icon:alert__icon"
551
- part="alert"
552
- size=${ifDefined(this.alertSize)}
553
- variant="danger"
554
- >
555
- ${!this.hideIcon
556
- ? html`<syn-icon slot="icon" name="status-error" library="system"></syn-icon>`
557
- : ''
558
- }
559
- ${messageToShow}
560
- </syn-alert>
561
- `;
562
- }
563
-
564
- render() {
565
- // #664: When using the tooltip variant, we need to wrap the default slot in a tooltip when the input is invalid and has a validation message.
566
- const slotContent = this.variant === 'tooltip'
567
- ? html`
568
- <syn-tooltip
569
- .anchor=${getActualInputElement(this.getInput()) as Element ?? undefined}
570
- exportparts="base:tooltip__base,base__popup:tooltip__popup,base__arrow:tooltip__arrow,body:tooltip__body"
571
- .open=${this.eager ? !this.isValid && this.getDisplayValidationMessage().length > 0 : false}
572
- part="tooltip"
573
- placement="bottom"
574
- trigger="manual"
575
- >
576
- ${renderDefaultSlot()}
577
- </syn-tooltip>
578
- ` : renderDefaultSlot();
579
-
580
- return html`
581
- <div
582
- class="validate"
583
- part="base"
584
- >
585
- ${slotContent}
586
- ${this.renderInlineValidation()}
587
- </div>
588
- `;
589
- }
590
- }
@@ -1,107 +0,0 @@
1
- <script setup lang="ts">
2
- // ---------------------------------------------------------------------
3
- // 🔒 AUTOGENERATED @synergy-design-system/vue wrappers for @synergy-design-system/components
4
- // Please do not edit this file directly!
5
- // It will get recreated when running pnpm build.
6
- // ---------------------------------------------------------------------
7
-
8
- /**
9
- * @summary Validate provides form field validation messages in a unified way.
10
- * It does this by using [the native browser validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)
11
- * and showing the validation message in a consistent, user defined way.
12
- * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-validate--docs
13
- * @dependency syn-alert
14
- * @dependency syn-tooltip
15
- *
16
- * @slot - The form field that should be validated.
17
- * Avoid slotting in more than one element, as subsequent ones will be ignored.
18
- *
19
- * @csspart base - The component's base wrapper.
20
- * @csspart input-wrapper - The container that wraps the form field.
21
- *
22
- * @csspart alert - The syn-alert that is shown when the variant is set to "inline".
23
- * @csspart alert__base - The container that wraps the alert.
24
- * @csspart alert__message - The container that wraps the alert message.
25
- * @csspart alert__icon - The container that wraps the alert icon.
26
- *
27
- * @csspart tooltip - The syn-tooltip that is shown when the variant is set to "tooltip".
28
- * @csspart tooltip__base - The container that wraps the tooltip.
29
- * @csspart tooltip__popup - The container that wraps the tooltip popup.
30
- * @csspart tooltip__arrow - The container that wraps the tooltip arrow.
31
- * @csspart tooltip__body - The container that wraps the tooltip body.
32
- */
33
- import { computed, ref } from 'vue';
34
- import '@synergy-design-system/components/components/validate/validate.js';
35
-
36
- import type { SynValidate } from '@synergy-design-system/components';
37
-
38
- // DOM Reference to the element
39
- const nativeElement = ref<SynValidate>();
40
-
41
- defineExpose({
42
- nativeElement,
43
- });
44
-
45
- // Map attributes
46
- const props = defineProps<{
47
- /**
48
- * The variant that should be used to show validation alerts.
49
-
50
- The following variants are supported:
51
- - **native** (default): Uses the native browser validation, usually a browser tooltip.
52
- - **tooltip**: Show the validation message as a tooltip using a `<syn-tooltip>`.
53
- - **inline**: Show the validation message underneath the element, using a `<syn-alert>`
54
- */
55
- variant?: SynValidate['variant'];
56
-
57
- /**
58
- * Do not show the error icon when using the inline variant validation
59
- */
60
- hideIcon?: SynValidate['hideIcon'];
61
-
62
- /**
63
- * Defines the events that trigger the validation.
64
- `invalid` will always automatically be included.
65
- You may also use the `live` keyword to validate on every input change.
66
- `live` will make sure to listen to the `invalid`, `input` and `blur` events.
67
-
68
- Please have a look at the [documentation for native form validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation)
69
- and [the use of form invalid events](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event) for further information.
70
- */
71
- on?: SynValidate['on'];
72
-
73
- /**
74
- * Custom validation message to be displayed when the input is invalid.
75
- Will override the default browser validation message.
76
- Set to an empty string to reset the validation message.
77
- */
78
- customValidationMessage?: SynValidate['customValidationMessage'];
79
-
80
- /**
81
- * Set this to true to validate the input immediately when it is rendered.
82
- Best used with a `variant` of `inline`.
83
- When setting eager, the input will not be focused automatically.
84
-
85
- When using a `variant` of `native` the browser will focus
86
- the last eager field as it is using a tooltip.
87
- In this case it is better to just provide one eager field.
88
- */
89
- eager?: SynValidate['eager'];
90
- }>();
91
-
92
- // Make sure prop binding only forwards the props that are actually there.
93
- // This is needed because :param="param" also adds an empty attribute
94
- // when using web-components, which breaks optional arguments like size in SynInput
95
- // @see https://github.com/vuejs/core/issues/5190#issuecomment-1003112498
96
- const visibleProps = computed(() =>
97
- Object.fromEntries(
98
- Object.entries(props).filter(([, value]) => typeof value !== 'undefined'),
99
- ),
100
- );
101
- </script>
102
-
103
- <template>
104
- <syn-validate v-bind="visibleProps" ref="nativeElement">
105
- <slot></slot>
106
- </syn-validate>
107
- </template>