@synergy-design-system/mcp 2.14.1 → 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 (525) hide show
  1. package/CHANGELOG.md +28 -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 -364
  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-popup/component.angular.ts +0 -372
  312. package/metadata/packages/components/components/syn-popup/component.react.ts +0 -55
  313. package/metadata/packages/components/components/syn-popup/component.styles.ts +0 -70
  314. package/metadata/packages/components/components/syn-popup/component.ts +0 -582
  315. package/metadata/packages/components/components/syn-popup/component.vue +0 -233
  316. package/metadata/packages/components/components/syn-prio-nav/component.angular.ts +0 -67
  317. package/metadata/packages/components/components/syn-prio-nav/component.react.ts +0 -54
  318. package/metadata/packages/components/components/syn-prio-nav/component.styles.ts +0 -48
  319. package/metadata/packages/components/components/syn-prio-nav/component.ts +0 -288
  320. package/metadata/packages/components/components/syn-prio-nav/component.vue +0 -60
  321. package/metadata/packages/components/components/syn-progress-bar/component.angular.ts +0 -85
  322. package/metadata/packages/components/components/syn-progress-bar/component.custom.styles.ts +0 -24
  323. package/metadata/packages/components/components/syn-progress-bar/component.react.ts +0 -37
  324. package/metadata/packages/components/components/syn-progress-bar/component.styles.ts +0 -87
  325. package/metadata/packages/components/components/syn-progress-bar/component.ts +0 -67
  326. package/metadata/packages/components/components/syn-progress-bar/component.vue +0 -71
  327. package/metadata/packages/components/components/syn-progress-ring/component.angular.ts +0 -72
  328. package/metadata/packages/components/components/syn-progress-ring/component.custom.styles.ts +0 -19
  329. package/metadata/packages/components/components/syn-progress-ring/component.react.ts +0 -37
  330. package/metadata/packages/components/components/syn-progress-ring/component.styles.ts +0 -70
  331. package/metadata/packages/components/components/syn-progress-ring/component.ts +0 -83
  332. package/metadata/packages/components/components/syn-progress-ring/component.vue +0 -66
  333. package/metadata/packages/components/components/syn-radio/component.angular.ts +0 -122
  334. package/metadata/packages/components/components/syn-radio/component.react.ts +0 -48
  335. package/metadata/packages/components/components/syn-radio/component.styles.ts +0 -179
  336. package/metadata/packages/components/components/syn-radio/component.ts +0 -131
  337. package/metadata/packages/components/components/syn-radio/component.vue +0 -104
  338. package/metadata/packages/components/components/syn-radio-button/component.angular.ts +0 -123
  339. package/metadata/packages/components/components/syn-radio-button/component.react.ts +0 -49
  340. package/metadata/packages/components/components/syn-radio-button/component.styles.ts +0 -30
  341. package/metadata/packages/components/components/syn-radio-button/component.ts +0 -142
  342. package/metadata/packages/components/components/syn-radio-button/component.vue +0 -105
  343. package/metadata/packages/components/components/syn-radio-group/component.angular.ts +0 -204
  344. package/metadata/packages/components/components/syn-radio-group/component.react.ts +0 -56
  345. package/metadata/packages/components/components/syn-radio-group/component.styles.ts +0 -58
  346. package/metadata/packages/components/components/syn-radio-group/component.ts +0 -440
  347. package/metadata/packages/components/components/syn-radio-group/component.vue +0 -158
  348. package/metadata/packages/components/components/syn-range/component.angular.ts +0 -347
  349. package/metadata/packages/components/components/syn-range/component.react.ts +0 -92
  350. package/metadata/packages/components/components/syn-range/component.styles.ts +0 -310
  351. package/metadata/packages/components/components/syn-range/component.ts +0 -933
  352. package/metadata/packages/components/components/syn-range/component.vue +0 -245
  353. package/metadata/packages/components/components/syn-range-tick/component.angular.ts +0 -59
  354. package/metadata/packages/components/components/syn-range-tick/component.react.ts +0 -33
  355. package/metadata/packages/components/components/syn-range-tick/component.styles.ts +0 -34
  356. package/metadata/packages/components/components/syn-range-tick/component.ts +0 -50
  357. package/metadata/packages/components/components/syn-range-tick/component.vue +0 -57
  358. package/metadata/packages/components/components/syn-resize-observer/component.styles.ts +0 -9
  359. package/metadata/packages/components/components/syn-resize-observer/component.ts +0 -91
  360. package/metadata/packages/components/components/syn-select/component.angular.ts +0 -439
  361. package/metadata/packages/components/components/syn-select/component.react.ts +0 -101
  362. package/metadata/packages/components/components/syn-select/component.styles.ts +0 -380
  363. package/metadata/packages/components/components/syn-select/component.ts +0 -1056
  364. package/metadata/packages/components/components/syn-select/component.vue +0 -301
  365. package/metadata/packages/components/components/syn-side-nav/component.angular.ts +0 -210
  366. package/metadata/packages/components/components/syn-side-nav/component.react.ts +0 -95
  367. package/metadata/packages/components/components/syn-side-nav/component.styles.ts +0 -142
  368. package/metadata/packages/components/components/syn-side-nav/component.ts +0 -458
  369. package/metadata/packages/components/components/syn-side-nav/component.vue +0 -188
  370. package/metadata/packages/components/components/syn-spinner/component.angular.ts +0 -44
  371. package/metadata/packages/components/components/syn-spinner/component.custom.styles.ts +0 -32
  372. package/metadata/packages/components/components/syn-spinner/component.react.ts +0 -31
  373. package/metadata/packages/components/components/syn-spinner/component.styles.ts +0 -48
  374. package/metadata/packages/components/components/syn-spinner/component.ts +0 -35
  375. package/metadata/packages/components/components/syn-spinner/component.vue +0 -35
  376. package/metadata/packages/components/components/syn-switch/component.angular.ts +0 -257
  377. package/metadata/packages/components/components/syn-switch/component.react.ts +0 -63
  378. package/metadata/packages/components/components/syn-switch/component.styles.ts +0 -252
  379. package/metadata/packages/components/components/syn-switch/component.ts +0 -279
  380. package/metadata/packages/components/components/syn-switch/component.vue +0 -183
  381. package/metadata/packages/components/components/syn-tab/component.angular.ts +0 -109
  382. package/metadata/packages/components/components/syn-tab/component.custom.styles.ts +0 -94
  383. package/metadata/packages/components/components/syn-tab/component.react.ts +0 -42
  384. package/metadata/packages/components/components/syn-tab/component.styles.ts +0 -70
  385. package/metadata/packages/components/components/syn-tab/component.ts +0 -125
  386. package/metadata/packages/components/components/syn-tab/component.vue +0 -91
  387. package/metadata/packages/components/components/syn-tab-group/component.angular.ts +0 -166
  388. package/metadata/packages/components/components/syn-tab-group/component.custom.styles.ts +0 -218
  389. package/metadata/packages/components/components/syn-tab-group/component.react.ts +0 -58
  390. package/metadata/packages/components/components/syn-tab-group/component.styles.ts +0 -193
  391. package/metadata/packages/components/components/syn-tab-group/component.ts +0 -551
  392. package/metadata/packages/components/components/syn-tab-group/component.vue +0 -126
  393. package/metadata/packages/components/components/syn-tab-panel/component.angular.ts +0 -68
  394. package/metadata/packages/components/components/syn-tab-panel/component.custom.styles.ts +0 -8
  395. package/metadata/packages/components/components/syn-tab-panel/component.react.ts +0 -31
  396. package/metadata/packages/components/components/syn-tab-panel/component.styles.ts +0 -20
  397. package/metadata/packages/components/components/syn-tab-panel/component.ts +0 -60
  398. package/metadata/packages/components/components/syn-tab-panel/component.vue +0 -60
  399. package/metadata/packages/components/components/syn-tag/component.angular.ts +0 -83
  400. package/metadata/packages/components/components/syn-tag/component.custom.styles.ts +0 -121
  401. package/metadata/packages/components/components/syn-tag/component.react.ts +0 -43
  402. package/metadata/packages/components/components/syn-tag/component.styles.ts +0 -58
  403. package/metadata/packages/components/components/syn-tag/component.ts +0 -83
  404. package/metadata/packages/components/components/syn-tag/component.vue +0 -81
  405. package/metadata/packages/components/components/syn-tag-group/component.angular.ts +0 -83
  406. package/metadata/packages/components/components/syn-tag-group/component.react.ts +0 -33
  407. package/metadata/packages/components/components/syn-tag-group/component.styles.ts +0 -49
  408. package/metadata/packages/components/components/syn-tag-group/component.ts +0 -95
  409. package/metadata/packages/components/components/syn-tag-group/component.vue +0 -69
  410. package/metadata/packages/components/components/syn-textarea/component.angular.ts +0 -396
  411. package/metadata/packages/components/components/syn-textarea/component.react.ts +0 -60
  412. package/metadata/packages/components/components/syn-textarea/component.styles.ts +0 -208
  413. package/metadata/packages/components/components/syn-textarea/component.ts +0 -400
  414. package/metadata/packages/components/components/syn-textarea/component.vue +0 -244
  415. package/metadata/packages/components/components/syn-tooltip/component.angular.ts +0 -196
  416. package/metadata/packages/components/components/syn-tooltip/component.react.ts +0 -63
  417. package/metadata/packages/components/components/syn-tooltip/component.styles.ts +0 -62
  418. package/metadata/packages/components/components/syn-tooltip/component.ts +0 -312
  419. package/metadata/packages/components/components/syn-tooltip/component.vue +0 -150
  420. package/metadata/packages/components/components/syn-validate/component.angular.ts +0 -137
  421. package/metadata/packages/components/components/syn-validate/component.react.ts +0 -44
  422. package/metadata/packages/components/components/syn-validate/component.styles.ts +0 -9
  423. package/metadata/packages/components/components/syn-validate/component.ts +0 -590
  424. package/metadata/packages/components/components/syn-validate/component.vue +0 -107
  425. package/metadata/packages/components/migration/BREAKING_CHANGES.md +0 -908
  426. package/metadata/packages/components/static/CHANGELOG.md +0 -2140
  427. package/metadata/packages/components/static/LIMITATIONS.md +0 -433
  428. package/metadata/packages/components/static/README.md +0 -231
  429. package/metadata/packages/fonts/CHANGELOG.md +0 -57
  430. package/metadata/packages/fonts/README.md +0 -164
  431. package/metadata/packages/fonts/package.json +0 -72
  432. package/metadata/packages/react/LIMITATIONS.md +0 -31
  433. package/metadata/packages/react/README.md +0 -262
  434. package/metadata/packages/styles/BREAKING_CHANGES.md +0 -105
  435. package/metadata/packages/styles/CHANGELOG.md +0 -188
  436. package/metadata/packages/styles/README.md +0 -132
  437. package/metadata/packages/styles/index.css +0 -300
  438. package/metadata/packages/styles/link-list.css +0 -47
  439. package/metadata/packages/styles/link.css +0 -81
  440. package/metadata/packages/styles/tables.css +0 -132
  441. package/metadata/packages/styles/typography.css +0 -52
  442. package/metadata/packages/tokens/BREAKING_CHANGES.md +0 -180
  443. package/metadata/packages/tokens/CHANGELOG.md +0 -949
  444. package/metadata/packages/tokens/README.md +0 -435
  445. package/metadata/packages/tokens/dark.css +0 -454
  446. package/metadata/packages/tokens/index.js +0 -2224
  447. package/metadata/packages/tokens/light.css +0 -454
  448. package/metadata/packages/tokens/sick2018_dark.css +0 -454
  449. package/metadata/packages/tokens/sick2018_light.css +0 -454
  450. package/metadata/packages/tokens/sick2025_dark.css +0 -454
  451. package/metadata/packages/tokens/sick2025_light.css +0 -454
  452. package/metadata/packages/vue/LIMITATIONS.md +0 -53
  453. package/metadata/packages/vue/README.md +0 -252
  454. package/metadata/static/assets/index.md +0 -10
  455. package/metadata/static/components/index.md +0 -10
  456. package/metadata/static/components/syn-accordion/docs.md +0 -449
  457. package/metadata/static/components/syn-alert/docs.md +0 -282
  458. package/metadata/static/components/syn-badge/docs.md +0 -106
  459. package/metadata/static/components/syn-breadcrumb/docs.md +0 -265
  460. package/metadata/static/components/syn-breadcrumb-item/docs.md +0 -49
  461. package/metadata/static/components/syn-button/docs.md +0 -472
  462. package/metadata/static/components/syn-button-group/docs.md +0 -259
  463. package/metadata/static/components/syn-card/docs.md +0 -314
  464. package/metadata/static/components/syn-checkbox/docs.md +0 -176
  465. package/metadata/static/components/syn-combobox/docs.md +0 -2633
  466. package/metadata/static/components/syn-details/docs.md +0 -227
  467. package/metadata/static/components/syn-dialog/docs.md +0 -220
  468. package/metadata/static/components/syn-divider/docs.md +0 -77
  469. package/metadata/static/components/syn-drawer/docs.md +0 -269
  470. package/metadata/static/components/syn-dropdown/docs.md +0 -316
  471. package/metadata/static/components/syn-file/docs.md +0 -239
  472. package/metadata/static/components/syn-header/docs.md +0 -209
  473. package/metadata/static/components/syn-icon/docs.md +0 -177
  474. package/metadata/static/components/syn-icon-button/docs.md +0 -142
  475. package/metadata/static/components/syn-input/docs.md +0 -462
  476. package/metadata/static/components/syn-menu/docs.md +0 -162
  477. package/metadata/static/components/syn-menu-item/docs.md +0 -216
  478. package/metadata/static/components/syn-menu-label/docs.md +0 -29
  479. package/metadata/static/components/syn-nav-item/docs.md +0 -166
  480. package/metadata/static/components/syn-optgroup/docs.md +0 -167
  481. package/metadata/static/components/syn-option/docs.md +0 -137
  482. package/metadata/static/components/syn-popup/docs.md +0 -812
  483. package/metadata/static/components/syn-prio-nav/docs.md +0 -54
  484. package/metadata/static/components/syn-progress-bar/docs.md +0 -77
  485. package/metadata/static/components/syn-progress-ring/docs.md +0 -89
  486. package/metadata/static/components/syn-radio/docs.md +0 -178
  487. package/metadata/static/components/syn-radio-group/docs.md +0 -484
  488. package/metadata/static/components/syn-range/docs.md +0 -438
  489. package/metadata/static/components/syn-range-tick/docs.md +0 -110
  490. package/metadata/static/components/syn-select/docs.md +0 -811
  491. package/metadata/static/components/syn-side-nav/docs.md +0 -593
  492. package/metadata/static/components/syn-spinner/docs.md +0 -45
  493. package/metadata/static/components/syn-switch/docs.md +0 -121
  494. package/metadata/static/components/syn-tab/docs.md +0 -47
  495. package/metadata/static/components/syn-tab-group/docs.md +0 -1094
  496. package/metadata/static/components/syn-tab-panel/docs.md +0 -91
  497. package/metadata/static/components/syn-tag/docs.md +0 -50
  498. package/metadata/static/components/syn-tag-group/docs.md +0 -269
  499. package/metadata/static/components/syn-textarea/docs.md +0 -215
  500. package/metadata/static/components/syn-tooltip/docs.md +0 -217
  501. package/metadata/static/components/syn-validate/docs.md +0 -305
  502. package/metadata/static/fonts/index.md +0 -4
  503. package/metadata/static/migration/index.md +0 -57
  504. package/metadata/static/migration/v2-2018-to-v2-2025.md +0 -481
  505. package/metadata/static/migration/v2-2018-to-v3-2018.md +0 -147
  506. package/metadata/static/migration/v2-2018-to-v3-2025.md +0 -150
  507. package/metadata/static/migration/v2-2025-to-v3-2025.md +0 -133
  508. package/metadata/static/setup/icon-usage.md +0 -411
  509. package/metadata/static/setup/prerequisites.md +0 -319
  510. package/metadata/static/styles/syn-body.md +0 -5
  511. package/metadata/static/styles/syn-heading.md +0 -5
  512. package/metadata/static/styles/syn-link-list.md +0 -325
  513. package/metadata/static/styles/syn-link.md +0 -156
  514. package/metadata/static/styles/syn-table-cell.md +0 -127
  515. package/metadata/static/styles/syn-table.md +0 -201
  516. package/metadata/static/styles/syn-weight.md +0 -5
  517. package/metadata/static/templates/appshell.md +0 -2053
  518. package/metadata/static/templates/breadcrumb.md +0 -379
  519. package/metadata/static/templates/footer.md +0 -340
  520. package/metadata/static/templates/forms.md +0 -558
  521. package/metadata/static/templates/localization.md +0 -279
  522. package/metadata/static/templates/table.md +0 -1425
  523. package/metadata/static/templates/tag-group.md +0 -833
  524. /package/dist/{build/build.d.ts → utilities/logging-types.js} +0 -0
  525. /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>