@vonage/vivid 4.24.0 → 4.26.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 (402) hide show
  1. package/custom-elements.json +23176 -14463
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +112 -150
  5. package/index.js +37 -35
  6. package/lib/accordion-item/accordion-item.d.ts +7 -1
  7. package/lib/action-group/action-group.d.ts +7 -1
  8. package/lib/alert/alert.d.ts +22 -2
  9. package/lib/audio-player/audio-player.d.ts +7 -1
  10. package/lib/badge/badge.d.ts +10 -2
  11. package/lib/banner/banner.d.ts +28 -3
  12. package/lib/breadcrumb/breadcrumb.d.ts +7 -1
  13. package/lib/breadcrumb-item/breadcrumb-item.d.ts +64 -8
  14. package/lib/button/button.d.ts +733 -8
  15. package/lib/button/locale.d.ts +3 -0
  16. package/lib/calendar/calendar.d.ts +2 -0
  17. package/lib/calendar-event/calendar-event.d.ts +7 -1
  18. package/lib/card/card.d.ts +394 -2
  19. package/lib/card/card.template.d.ts +2 -1
  20. package/lib/checkbox/checkbox.d.ts +1830 -13
  21. package/lib/combobox/combobox.d.ts +1827 -20
  22. package/lib/data-grid/data-grid-cell.d.ts +342 -2
  23. package/lib/data-grid/data-grid-row.d.ts +1 -0
  24. package/lib/data-grid/data-grid.d.ts +1 -1
  25. package/lib/data-grid/locale.d.ts +5 -0
  26. package/lib/date-picker/date-picker.d.ts +1676 -207
  27. package/lib/date-range-picker/date-range-picker.d.ts +840 -107
  28. package/lib/date-time-picker/date-time-picker.d.ts +1678 -209
  29. package/lib/dial-pad/dial-pad.d.ts +9 -1
  30. package/lib/dialog/dialog.d.ts +15 -2
  31. package/lib/divider/divider.d.ts +7 -1
  32. package/lib/fab/fab.d.ts +7 -1
  33. package/lib/file-picker/file-picker.d.ts +1509 -31
  34. package/lib/header/header.d.ts +7 -1
  35. package/lib/icon/icon.d.ts +1 -0
  36. package/lib/icon/icon.template.d.ts +2 -1
  37. package/lib/menu/menu.d.ts +17 -8
  38. package/lib/menu/name.d.ts +1 -0
  39. package/lib/menu-item/menu-item.d.ts +16 -4
  40. package/lib/nav/nav.d.ts +7 -1
  41. package/lib/nav-disclosure/nav-disclosure.d.ts +15 -2
  42. package/lib/nav-item/nav-item.d.ts +406 -4
  43. package/lib/note/note.d.ts +7 -1
  44. package/lib/number-field/locale.d.ts +3 -2
  45. package/lib/number-field/number-field.d.ts +1859 -38
  46. package/lib/option/option.d.ts +14 -2
  47. package/lib/pagination/locale.d.ts +5 -0
  48. package/lib/pagination/pagination.d.ts +341 -2
  49. package/lib/popup/popup.d.ts +1 -0
  50. package/lib/progress/progress.d.ts +7 -1
  51. package/lib/progress-ring/progress-ring.d.ts +7 -1
  52. package/lib/radio/radio.d.ts +1137 -4
  53. package/lib/radio-group/radio-group.d.ts +21 -3
  54. package/lib/range-slider/range-slider.d.ts +765 -18
  55. package/lib/rich-text-editor/definition.d.ts +2 -2
  56. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +3 -1
  57. package/lib/rich-text-editor/locale.d.ts +1 -0
  58. package/lib/rich-text-editor/menubar/menubar.d.ts +7 -1
  59. package/lib/rich-text-editor/rich-text-editor.d.ts +352 -2
  60. package/lib/searchable-select/option-tag.d.ts +7 -1
  61. package/lib/searchable-select/searchable-select.d.ts +1859 -38
  62. package/lib/select/select.d.ts +1844 -29
  63. package/lib/selectable-box/selectable-box.d.ts +7 -1
  64. package/lib/slider/slider.d.ts +386 -4
  65. package/lib/split-button/split-button.d.ts +21 -3
  66. package/lib/switch/switch.d.ts +387 -4
  67. package/lib/tab/tab.d.ts +21 -4
  68. package/lib/tab-panel/tab-panel.d.ts +7 -1
  69. package/lib/tag/tag.d.ts +14 -2
  70. package/lib/tag-group/tag-group.d.ts +7 -1
  71. package/lib/text-area/text-area.d.ts +2174 -19
  72. package/lib/text-field/text-field.d.ts +2197 -33
  73. package/lib/time-picker/time-picker.d.ts +839 -106
  74. package/lib/toggletip/toggletip.d.ts +10 -4
  75. package/lib/tooltip/tooltip.d.ts +10 -4
  76. package/lib/tree-item/tree-item.d.ts +14 -2
  77. package/lib/tree-view/tree-view.d.ts +7 -1
  78. package/lib/video-player/video-player.d.ts +7 -1
  79. package/lib/visually-hidden/definition.d.ts +4 -0
  80. package/lib/visually-hidden/visually-hidden.d.ts +3 -0
  81. package/lib/visually-hidden/visually-hidden.template.d.ts +3 -0
  82. package/locales/de-DE.cjs +54 -4
  83. package/locales/de-DE.js +54 -4
  84. package/locales/en-GB.cjs +54 -4
  85. package/locales/en-GB.js +54 -4
  86. package/locales/en-US.cjs +54 -4
  87. package/locales/en-US.js +54 -4
  88. package/locales/ja-JP.cjs +54 -4
  89. package/locales/ja-JP.js +54 -4
  90. package/locales/zh-CN.cjs +54 -4
  91. package/locales/zh-CN.js +54 -4
  92. package/menu/index.cjs +1 -1
  93. package/menu/index.js +1 -1
  94. package/nav/index.cjs +1 -1
  95. package/nav/index.js +1 -1
  96. package/nav-disclosure/index.cjs +1 -1
  97. package/nav-disclosure/index.js +1 -1
  98. package/nav-item/index.cjs +1 -1
  99. package/nav-item/index.js +1 -1
  100. package/note/index.cjs +1 -1
  101. package/note/index.js +1 -1
  102. package/number-field/index.cjs +1 -1
  103. package/number-field/index.js +1 -1
  104. package/option/index.cjs +1 -1
  105. package/option/index.js +1 -1
  106. package/package.json +1 -1
  107. package/pagination/index.cjs +1 -1
  108. package/pagination/index.js +1 -1
  109. package/popup/index.cjs +1 -1
  110. package/popup/index.js +1 -1
  111. package/progress/index.cjs +1 -1
  112. package/progress/index.js +1 -1
  113. package/progress-ring/index.cjs +1 -1
  114. package/progress-ring/index.js +1 -1
  115. package/radio/index.cjs +1 -1
  116. package/radio/index.js +1 -1
  117. package/radio-group/index.cjs +1 -1
  118. package/radio-group/index.js +1 -1
  119. package/range-slider/index.cjs +1 -1
  120. package/range-slider/index.js +1 -1
  121. package/rich-text-editor/index.cjs +1 -1
  122. package/rich-text-editor/index.js +1 -1
  123. package/searchable-select/index.cjs +1 -1
  124. package/searchable-select/index.js +1 -1
  125. package/select/index.cjs +1 -1
  126. package/select/index.js +1 -1
  127. package/selectable-box/index.cjs +1 -1
  128. package/selectable-box/index.js +1 -1
  129. package/shared/affix.cjs +13 -7
  130. package/shared/affix.js +13 -8
  131. package/shared/aria/delegates-aria.d.ts +7 -1
  132. package/shared/aria/host-semantics.d.ts +7 -1
  133. package/shared/breadcrumb-item.cjs +2 -5
  134. package/shared/breadcrumb-item.js +2 -5
  135. package/shared/button.cjs +13 -11
  136. package/shared/button.js +13 -11
  137. package/shared/calendar-picker.template.cjs +3 -3
  138. package/shared/calendar-picker.template.js +1 -1
  139. package/shared/char-count.cjs +92 -0
  140. package/shared/char-count.js +90 -0
  141. package/shared/definition.cjs +19 -3
  142. package/shared/definition.js +20 -4
  143. package/shared/definition10.js +1 -1
  144. package/shared/definition11.cjs +27 -44
  145. package/shared/definition11.js +28 -45
  146. package/shared/definition12.js +1 -1
  147. package/shared/definition13.cjs +25 -0
  148. package/shared/definition13.js +26 -1
  149. package/shared/definition14.cjs +53 -22
  150. package/shared/definition14.js +54 -23
  151. package/shared/definition15.cjs +32 -37
  152. package/shared/definition15.js +31 -37
  153. package/shared/definition16.cjs +44 -64
  154. package/shared/definition16.js +43 -64
  155. package/shared/definition17.cjs +608 -524
  156. package/shared/definition17.js +604 -520
  157. package/shared/definition18.cjs +10 -14
  158. package/shared/definition18.js +9 -14
  159. package/shared/definition19.cjs +85 -100
  160. package/shared/definition19.js +75 -91
  161. package/shared/definition2.js +1 -1
  162. package/shared/definition20.cjs +15 -20
  163. package/shared/definition20.js +14 -20
  164. package/shared/definition21.cjs +24 -5
  165. package/shared/definition21.js +25 -6
  166. package/shared/definition22.cjs +12 -6
  167. package/shared/definition22.js +13 -7
  168. package/shared/definition23.cjs +5 -38
  169. package/shared/definition23.js +5 -37
  170. package/shared/definition24.cjs +2 -7
  171. package/shared/definition24.js +3 -8
  172. package/shared/definition25.js +1 -1
  173. package/shared/definition26.cjs +157 -171
  174. package/shared/definition26.js +156 -171
  175. package/shared/definition27.cjs +1 -1
  176. package/shared/definition27.js +2 -2
  177. package/shared/definition28.cjs +33 -18
  178. package/shared/definition28.js +34 -19
  179. package/shared/definition29.js +1 -1
  180. package/shared/definition3.cjs +1 -1
  181. package/shared/definition3.js +2 -2
  182. package/shared/definition30.cjs +96 -482
  183. package/shared/definition30.js +99 -482
  184. package/shared/definition31.cjs +334 -57
  185. package/shared/definition31.js +333 -56
  186. package/shared/definition32.cjs +104 -19
  187. package/shared/definition32.js +105 -20
  188. package/shared/definition33.cjs +67 -15
  189. package/shared/definition33.js +66 -14
  190. package/shared/definition34.cjs +15 -50
  191. package/shared/definition34.js +14 -49
  192. package/shared/definition35.cjs +28 -397
  193. package/shared/definition35.js +27 -397
  194. package/shared/definition36.cjs +415 -54
  195. package/shared/definition36.js +415 -55
  196. package/shared/definition37.cjs +57 -234
  197. package/shared/definition37.js +57 -233
  198. package/shared/definition38.cjs +228 -66
  199. package/shared/definition38.js +227 -65
  200. package/shared/definition39.cjs +52 -44
  201. package/shared/definition39.js +51 -43
  202. package/shared/definition4.cjs +31 -24
  203. package/shared/definition4.js +33 -26
  204. package/shared/definition40.cjs +56 -266
  205. package/shared/definition40.js +55 -265
  206. package/shared/definition41.cjs +285 -142
  207. package/shared/definition41.js +285 -142
  208. package/shared/definition42.cjs +156 -564
  209. package/shared/definition42.js +156 -565
  210. package/shared/definition43.cjs +554 -14378
  211. package/shared/definition43.js +553 -14377
  212. package/shared/definition44.cjs +14418 -1155
  213. package/shared/definition44.js +14417 -1156
  214. package/shared/definition45.cjs +1049 -677
  215. package/shared/definition45.js +1050 -678
  216. package/shared/definition46.cjs +848 -113
  217. package/shared/definition46.js +847 -112
  218. package/shared/definition47.cjs +125 -90
  219. package/shared/definition47.js +124 -89
  220. package/shared/definition48.cjs +88 -455
  221. package/shared/definition48.js +87 -454
  222. package/shared/definition49.cjs +466 -109
  223. package/shared/definition49.js +466 -109
  224. package/shared/definition5.cjs +8 -7
  225. package/shared/definition5.js +6 -5
  226. package/shared/definition50.cjs +106 -106
  227. package/shared/definition50.js +105 -105
  228. package/shared/definition51.cjs +136 -15
  229. package/shared/definition51.js +135 -14
  230. package/shared/definition52.cjs +16 -115
  231. package/shared/definition52.js +15 -114
  232. package/shared/definition53.cjs +78 -412
  233. package/shared/definition53.js +77 -410
  234. package/shared/definition54.cjs +445 -23
  235. package/shared/definition54.js +443 -22
  236. package/shared/definition55.cjs +22 -136
  237. package/shared/definition55.js +21 -135
  238. package/shared/definition56.cjs +95 -291
  239. package/shared/definition56.js +95 -292
  240. package/shared/definition57.cjs +192 -480
  241. package/shared/definition57.js +190 -479
  242. package/shared/definition58.cjs +411 -24
  243. package/shared/definition58.js +410 -24
  244. package/shared/definition59.cjs +27 -144
  245. package/shared/definition59.js +27 -143
  246. package/shared/definition6.js +1 -1
  247. package/shared/definition60.cjs +83 -54
  248. package/shared/definition60.js +82 -53
  249. package/shared/definition61.cjs +78 -166
  250. package/shared/definition61.js +77 -164
  251. package/shared/definition62.cjs +143 -232
  252. package/shared/definition62.js +141 -231
  253. package/shared/definition63.cjs +234 -69417
  254. package/shared/definition63.js +233 -69416
  255. package/shared/definition64.cjs +69454 -28
  256. package/shared/definition64.js +69453 -27
  257. package/shared/definition65.cjs +28 -2168
  258. package/shared/definition65.js +27 -2166
  259. package/shared/definition66.cjs +27 -0
  260. package/shared/definition66.js +23 -0
  261. package/shared/definition67.cjs +2203 -0
  262. package/shared/definition67.js +2198 -0
  263. package/shared/definition7.cjs +11 -2
  264. package/shared/definition7.js +12 -3
  265. package/shared/definition8.cjs +24 -11
  266. package/shared/definition8.js +26 -13
  267. package/shared/definition9.cjs +1 -2
  268. package/shared/definition9.js +2 -3
  269. package/shared/delegates-aria.js +1 -1
  270. package/shared/deprecation/replaced-props.d.ts +20 -0
  271. package/shared/divider.cjs +41 -0
  272. package/shared/divider.js +38 -0
  273. package/shared/feedback/feedback-message.d.ts +345 -0
  274. package/shared/feedback/locale.d.ts +4 -0
  275. package/{lib/text-anchor/text-anchor.d.ts → shared/feedback/mixins.d.ts} +64 -41
  276. package/shared/form-associated.cjs +124 -100
  277. package/shared/form-associated.js +125 -101
  278. package/shared/form-element.cjs +84 -0
  279. package/shared/form-element.js +82 -0
  280. package/shared/foundation/button/button.d.ts +379 -3
  281. package/shared/foundation/form-associated/form-associated.d.ts +753 -49
  282. package/shared/foundation/listbox/listbox.d.ts +1 -1
  283. package/shared/foundation/vivid-element/vivid-element.d.ts +16 -0
  284. package/shared/host-semantics.js +1 -1
  285. package/shared/key-codes.js +1 -1
  286. package/shared/linkable.cjs +70 -0
  287. package/shared/linkable.js +68 -0
  288. package/shared/localization/Locale.d.ts +16 -0
  289. package/shared/mixins.cjs +309 -0
  290. package/shared/mixins.js +303 -0
  291. package/shared/patterns/affix.d.ts +18 -3
  292. package/shared/patterns/anchored.d.ts +20 -8
  293. package/shared/patterns/char-count/char-count.d.ts +351 -0
  294. package/shared/patterns/char-count/index.d.ts +1 -0
  295. package/shared/patterns/char-count/locale.d.ts +4 -0
  296. package/shared/patterns/form-elements/form-element.d.ts +744 -0
  297. package/shared/patterns/form-elements/index.d.ts +3 -1
  298. package/shared/patterns/form-elements/with-error-text.d.ts +1122 -0
  299. package/shared/patterns/form-elements/with-success-text.d.ts +341 -0
  300. package/shared/patterns/index.d.ts +2 -0
  301. package/shared/patterns/linkable.d.ts +394 -0
  302. package/shared/patterns/localized.d.ts +7 -1
  303. package/shared/patterns/trapped-focus.d.ts +7 -1
  304. package/shared/picker-field/mixins/calendar-picker.d.ts +420 -52
  305. package/shared/picker-field/mixins/calendar-picker.template.d.ts +420 -52
  306. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +7 -1
  307. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +843 -107
  308. package/shared/picker-field/mixins/single-date-picker.d.ts +1259 -155
  309. package/shared/picker-field/mixins/single-value-picker.d.ts +417 -49
  310. package/shared/picker-field/mixins/time-selection-picker.d.ts +842 -106
  311. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +839 -103
  312. package/shared/picker-field/picker-field.d.ts +1492 -16
  313. package/shared/picker-field.template.cjs +26 -35
  314. package/shared/picker-field.template.js +27 -36
  315. package/shared/repeat.js +1 -1
  316. package/shared/slider.template.cjs +1 -1
  317. package/shared/slider.template.js +1 -1
  318. package/shared/time-selection-picker.template.cjs +10 -15
  319. package/shared/time-selection-picker.template.js +10 -16
  320. package/shared/vivid-element.cjs +63 -4
  321. package/shared/vivid-element.js +63 -3
  322. package/shared/with-error-text.cjs +56 -0
  323. package/shared/with-error-text.js +54 -0
  324. package/shared/with-success-text.cjs +23 -0
  325. package/shared/with-success-text.js +21 -0
  326. package/side-drawer/index.cjs +1 -1
  327. package/side-drawer/index.js +1 -1
  328. package/slider/index.cjs +1 -1
  329. package/slider/index.js +1 -1
  330. package/split-button/index.cjs +1 -1
  331. package/split-button/index.js +1 -1
  332. package/styles/core/all.css +1 -1
  333. package/styles/core/theme.css +1 -1
  334. package/styles/core/typography.css +1 -1
  335. package/styles/tokens/theme-dark.css +4 -4
  336. package/styles/tokens/theme-light.css +4 -4
  337. package/styles/tokens/vivid-2-compat.css +1 -1
  338. package/switch/index.cjs +1 -1
  339. package/switch/index.js +1 -1
  340. package/tab/index.cjs +1 -1
  341. package/tab/index.js +1 -1
  342. package/tab-panel/index.cjs +1 -1
  343. package/tab-panel/index.js +1 -1
  344. package/tabs/index.cjs +1 -1
  345. package/tabs/index.js +1 -1
  346. package/tag/index.cjs +1 -1
  347. package/tag/index.js +1 -1
  348. package/tag-group/index.cjs +1 -1
  349. package/tag-group/index.js +1 -1
  350. package/text-area/index.cjs +1 -1
  351. package/text-area/index.js +1 -1
  352. package/text-field/index.cjs +1 -1
  353. package/text-field/index.js +1 -1
  354. package/time-picker/index.cjs +1 -1
  355. package/time-picker/index.js +1 -1
  356. package/toggletip/index.cjs +1 -1
  357. package/toggletip/index.js +1 -1
  358. package/tooltip/index.cjs +1 -1
  359. package/tooltip/index.js +1 -1
  360. package/tree-item/index.cjs +1 -1
  361. package/tree-item/index.js +1 -1
  362. package/tree-view/index.cjs +1 -1
  363. package/tree-view/index.js +1 -1
  364. package/video-player/index.cjs +1 -1
  365. package/video-player/index.js +1 -1
  366. package/visually-hidden/index.cjs +5 -0
  367. package/visually-hidden/index.js +3 -0
  368. package/vivid.api.json +845 -1503
  369. package/lib/checkbox/checkbox.form-associated.d.ts +0 -11
  370. package/lib/file-picker/file-picker.form-associated.d.ts +0 -11
  371. package/lib/number-field/number-field.form-associated.d.ts +0 -11
  372. package/lib/radio/radio.form-associated.d.ts +0 -13
  373. package/lib/range-slider/range-slider.form-associated.d.ts +0 -11
  374. package/lib/searchable-select/searchable-select.form-associated.d.ts +0 -11
  375. package/lib/select/select.form-associated.d.ts +0 -11
  376. package/lib/slider/slider.form-associated.d.ts +0 -11
  377. package/lib/switch/switch.form-associated.d.ts +0 -11
  378. package/lib/text-anchor/definition.d.ts +0 -2
  379. package/lib/text-anchor/text-anchor.template.d.ts +0 -3
  380. package/lib/text-area/text-area.form-associated.d.ts +0 -11
  381. package/lib/text-field/text-field.form-associated.d.ts +0 -11
  382. package/shared/anchor.cjs +0 -49
  383. package/shared/anchor.js +0 -47
  384. package/shared/apply-mixins.cjs +0 -23
  385. package/shared/apply-mixins.js +0 -21
  386. package/shared/applyMixinsWithObservables.cjs +0 -15
  387. package/shared/applyMixinsWithObservables.js +0 -13
  388. package/shared/direction.cjs +0 -17
  389. package/shared/direction.js +0 -15
  390. package/shared/form-elements.cjs +0 -209
  391. package/shared/form-elements.js +0 -202
  392. package/shared/foundation/anchor/anchor.d.ts +0 -11
  393. package/shared/foundation/utilities/apply-mixins.d.ts +0 -1
  394. package/shared/patterns/form-elements/form-elements.d.ts +0 -58
  395. package/shared/picker-field/picker-field.form-associated.d.ts +0 -11
  396. package/shared/text-anchor.cjs +0 -38
  397. package/shared/text-anchor.js +0 -36
  398. package/shared/text-anchor.template.cjs +0 -35
  399. package/shared/text-anchor.template.js +0 -33
  400. package/shared/utils/applyMixinsWithObservables.d.ts +0 -1
  401. package/text-anchor/index.cjs +0 -17
  402. package/text-anchor/index.js +0 -15
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index.cjs');
4
- const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
4
+ const mixins = require('./mixins.cjs');
5
5
  const formAssociated = require('./form-associated.cjs');
6
6
  const vividElement = require('./vivid-element.cjs');
7
- const formElements = require('./form-elements.cjs');
7
+ const withErrorText = require('./with-error-text.cjs');
8
+ const formElement = require('./form-element.cjs');
8
9
  const localized = require('./localized.cjs');
9
- const definition = require('./definition65.cjs');
10
- const definition$1 = require('./definition57.cjs');
10
+ const definition = require('./definition67.cjs');
11
+ const definition$1 = require('./definition58.cjs');
11
12
  const definition$2 = require('./definition11.cjs');
12
13
  const ref = require('./ref.cjs');
13
14
  const slotted = require('./slotted.cjs');
@@ -48,15 +49,6 @@ const TrappedFocus = (Base) => {
48
49
 
49
50
  const pickerFieldStyles = ":host{display:inline-block}.base{display:inline-block;inline-size:100%}.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog--padded{padding:12px;gap:12px}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;gap:8px}.dialog .footer--with-separator{border-top:1px solid var(--vvd-color-neutral-200)}";
50
51
 
51
- class _PickerField extends vividElement.VividElement {
52
- }
53
- class FormAssociatedPickerField extends formAssociated.FormAssociated(_PickerField) {
54
- constructor() {
55
- super(...arguments);
56
- this.proxy = document.createElement("input");
57
- }
58
- }
59
-
60
52
  var __defProp = Object.defineProperty;
61
53
  var __decorateClass = (decorators, target, key, kind) => {
62
54
  var result = void 0 ;
@@ -66,8 +58,10 @@ var __decorateClass = (decorators, target, key, kind) => {
66
58
  if (result) __defProp(target, key, result);
67
59
  return result;
68
60
  };
69
- class PickerField extends TrappedFocus(
70
- localized.Localized(FormAssociatedPickerField)
61
+ class PickerField extends mixins.WithFeedback(
62
+ withErrorText.WithErrorText(
63
+ formElement.FormElement(TrappedFocus(localized.Localized(formAssociated.FormAssociated(vividElement.VividElement))))
64
+ )
71
65
  ) {
72
66
  // --- Core ---
73
67
  constructor() {
@@ -79,6 +73,10 @@ class PickerField extends TrappedFocus(
79
73
  this.#onFocusOut = () => {
80
74
  this.$emit("blur", void 0, { bubbles: false });
81
75
  };
76
+ /**
77
+ * @internal
78
+ */
79
+ this.proxy = document.createElement("input");
82
80
  // Reformat the presentation value when the locale changes
83
81
  this.#localeChangeHandler = {
84
82
  handleChange: () => {
@@ -215,16 +213,9 @@ class PickerField extends TrappedFocus(
215
213
  * @internal
216
214
  */
217
215
  _onClearClick() {
218
- this._closePopup();
219
216
  this.$emit("clear-click");
220
217
  }
221
218
  }
222
- __decorateClass([
223
- vividElement.attr({ attribute: "value" })
224
- ], PickerField.prototype, "initialValue");
225
- __decorateClass([
226
- vividElement.attr({ attribute: "current-value" })
227
- ], PickerField.prototype, "currentValue");
228
219
  __decorateClass([
229
220
  vividElement.attr({ attribute: "readonly", mode: "boolean" })
230
221
  ], PickerField.prototype, "readOnly");
@@ -234,7 +225,6 @@ __decorateClass([
234
225
  __decorateClass([
235
226
  vividElement.observable
236
227
  ], PickerField.prototype, "_presentationValue");
237
- applyMixinsWithObservables.applyMixinsWithObservables(PickerField, formElements.FormElementHelperText);
238
228
 
239
229
  const PickerFieldTemplate = (context, popupContentTemplate, { withSeparator, padded }) => {
240
230
  const popupTag = context.tagFor(definition.Popup);
@@ -243,18 +233,18 @@ const PickerFieldTemplate = (context, popupContentTemplate, { withSeparator, pad
243
233
  return vividElement.html`
244
234
  <div class='base' @keydown='${(x, { event }) => x._onBaseKeyDown(event)}'>
245
235
  <${textFieldTag} id='text-field'
246
- ${ref.ref("_textFieldEl")}
247
- class='control'
248
- label='${(x) => x.label}'
249
- helper-text='${(x) => x.helperText}'
250
- error-text='${(x) => x.errorValidationMessage}'
251
- placeholder='${(x) => x._textFieldPlaceholder}'
252
- size='${(x) => x._textFieldSize}'
253
- current-value='${(x) => x._presentationValue}'
254
- ?disabled='${(x) => x.disabled}'
255
- ?readonly='${(x) => x.readOnly}'
256
- @input='${(x, c) => x._onTextFieldInput(c.event)}'
257
- @change='${(x) => x._onTextFieldChange()}'
236
+ ${ref.ref("_textFieldEl")}
237
+ class='control'
238
+ label='${(x) => x.label}'
239
+ helper-text='${(x) => x.helperText}'
240
+ error-text='${(x) => x.errorValidationMessage}'
241
+ placeholder='${(x) => x._textFieldPlaceholder}'
242
+ size='${(x) => x._textFieldSize}'
243
+ current-value='${(x) => x._presentationValue}'
244
+ ?disabled='${(x) => x.disabled}'
245
+ ?readonly='${(x) => x.readOnly}'
246
+ @input='${(x, c) => x._onTextFieldInput(c.event)}'
247
+ @change='${(x) => x._onTextFieldChange()}'
258
248
  >
259
249
  <slot
260
250
  slot='${(x) => x._helperTextSlottedContent?.length ? "helper-text" : void 0}'
@@ -276,6 +266,7 @@ const PickerFieldTemplate = (context, popupContentTemplate, { withSeparator, pad
276
266
  <${popupTag}
277
267
  ?open='${(x) => x._popupOpen}'
278
268
  :anchor='${(x) => x._textFieldEl}'
269
+ offset='${(x) => x._helperTextSlottedContent?.length || x.helperText || x.errorValidationMessage ? 8 : null}'
279
270
  placement='bottom-start'
280
271
  class='popup'>
281
272
  <div class="${() => classNames.classNames("dialog", [
@@ -1,11 +1,12 @@
1
1
  import { h as handleEscapeKeyAndStopPropogation } from './index.js';
2
- import { a as applyMixinsWithObservables } from './applyMixinsWithObservables.js';
2
+ import { a as WithFeedback } from './mixins.js';
3
3
  import { F as FormAssociated } from './form-associated.js';
4
- import { V as VividElement, a as attr, o as observable, O as Observable, k as defaultExecutionContext, h as html } from './vivid-element.js';
5
- import { a as FormElementHelperText } from './form-elements.js';
4
+ import { V as VividElement, O as Observable, i as defaultExecutionContext, a as attr, o as observable, h as html } from './vivid-element.js';
5
+ import { W as WithErrorText } from './with-error-text.js';
6
+ import { F as FormElement } from './form-element.js';
6
7
  import { L as Localized } from './localized.js';
7
- import { P as Popup } from './definition65.js';
8
- import { T as TextField } from './definition57.js';
8
+ import { P as Popup } from './definition67.js';
9
+ import { T as TextField } from './definition58.js';
9
10
  import { B as Button } from './definition11.js';
10
11
  import { r as ref } from './ref.js';
11
12
  import { s as slotted } from './slotted.js';
@@ -46,15 +47,6 @@ const TrappedFocus = (Base) => {
46
47
 
47
48
  const pickerFieldStyles = ":host{display:inline-block}.base{display:inline-block;inline-size:100%}.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog--padded{padding:12px;gap:12px}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;gap:8px}.dialog .footer--with-separator{border-top:1px solid var(--vvd-color-neutral-200)}";
48
49
 
49
- class _PickerField extends VividElement {
50
- }
51
- class FormAssociatedPickerField extends FormAssociated(_PickerField) {
52
- constructor() {
53
- super(...arguments);
54
- this.proxy = document.createElement("input");
55
- }
56
- }
57
-
58
50
  var __defProp = Object.defineProperty;
59
51
  var __decorateClass = (decorators, target, key, kind) => {
60
52
  var result = void 0 ;
@@ -64,8 +56,10 @@ var __decorateClass = (decorators, target, key, kind) => {
64
56
  if (result) __defProp(target, key, result);
65
57
  return result;
66
58
  };
67
- class PickerField extends TrappedFocus(
68
- Localized(FormAssociatedPickerField)
59
+ class PickerField extends WithFeedback(
60
+ WithErrorText(
61
+ FormElement(TrappedFocus(Localized(FormAssociated(VividElement))))
62
+ )
69
63
  ) {
70
64
  // --- Core ---
71
65
  constructor() {
@@ -77,6 +71,10 @@ class PickerField extends TrappedFocus(
77
71
  this.#onFocusOut = () => {
78
72
  this.$emit("blur", void 0, { bubbles: false });
79
73
  };
74
+ /**
75
+ * @internal
76
+ */
77
+ this.proxy = document.createElement("input");
80
78
  // Reformat the presentation value when the locale changes
81
79
  this.#localeChangeHandler = {
82
80
  handleChange: () => {
@@ -213,16 +211,9 @@ class PickerField extends TrappedFocus(
213
211
  * @internal
214
212
  */
215
213
  _onClearClick() {
216
- this._closePopup();
217
214
  this.$emit("clear-click");
218
215
  }
219
216
  }
220
- __decorateClass([
221
- attr({ attribute: "value" })
222
- ], PickerField.prototype, "initialValue");
223
- __decorateClass([
224
- attr({ attribute: "current-value" })
225
- ], PickerField.prototype, "currentValue");
226
217
  __decorateClass([
227
218
  attr({ attribute: "readonly", mode: "boolean" })
228
219
  ], PickerField.prototype, "readOnly");
@@ -232,7 +223,6 @@ __decorateClass([
232
223
  __decorateClass([
233
224
  observable
234
225
  ], PickerField.prototype, "_presentationValue");
235
- applyMixinsWithObservables(PickerField, FormElementHelperText);
236
226
 
237
227
  const PickerFieldTemplate = (context, popupContentTemplate, { withSeparator, padded }) => {
238
228
  const popupTag = context.tagFor(Popup);
@@ -241,18 +231,18 @@ const PickerFieldTemplate = (context, popupContentTemplate, { withSeparator, pad
241
231
  return html`
242
232
  <div class='base' @keydown='${(x, { event }) => x._onBaseKeyDown(event)}'>
243
233
  <${textFieldTag} id='text-field'
244
- ${ref("_textFieldEl")}
245
- class='control'
246
- label='${(x) => x.label}'
247
- helper-text='${(x) => x.helperText}'
248
- error-text='${(x) => x.errorValidationMessage}'
249
- placeholder='${(x) => x._textFieldPlaceholder}'
250
- size='${(x) => x._textFieldSize}'
251
- current-value='${(x) => x._presentationValue}'
252
- ?disabled='${(x) => x.disabled}'
253
- ?readonly='${(x) => x.readOnly}'
254
- @input='${(x, c) => x._onTextFieldInput(c.event)}'
255
- @change='${(x) => x._onTextFieldChange()}'
234
+ ${ref("_textFieldEl")}
235
+ class='control'
236
+ label='${(x) => x.label}'
237
+ helper-text='${(x) => x.helperText}'
238
+ error-text='${(x) => x.errorValidationMessage}'
239
+ placeholder='${(x) => x._textFieldPlaceholder}'
240
+ size='${(x) => x._textFieldSize}'
241
+ current-value='${(x) => x._presentationValue}'
242
+ ?disabled='${(x) => x.disabled}'
243
+ ?readonly='${(x) => x.readOnly}'
244
+ @input='${(x, c) => x._onTextFieldInput(c.event)}'
245
+ @change='${(x) => x._onTextFieldChange()}'
256
246
  >
257
247
  <slot
258
248
  slot='${(x) => x._helperTextSlottedContent?.length ? "helper-text" : void 0}'
@@ -274,6 +264,7 @@ const PickerFieldTemplate = (context, popupContentTemplate, { withSeparator, pad
274
264
  <${popupTag}
275
265
  ?open='${(x) => x._popupOpen}'
276
266
  :anchor='${(x) => x._textFieldEl}'
267
+ offset='${(x) => x._helperTextSlottedContent?.length || x.helperText || x.errorValidationMessage ? 8 : null}'
277
268
  placement='bottom-start'
278
269
  class='popup'>
279
270
  <div class="${() => classNames("dialog", [
package/shared/repeat.js CHANGED
@@ -1,4 +1,4 @@
1
- import { e as emptyArray, O as Observable, S as SubscriberSet, D as DOM, H as HTMLDirective, j as HTMLView } from './vivid-element.js';
1
+ import { e as emptyArray, O as Observable, S as SubscriberSet, D as DOM, H as HTMLDirective, g as HTMLView } from './vivid-element.js';
2
2
 
3
3
  /** @internal */
4
4
  function newSplice(index, removed, addedCount) {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const numbers = require('./numbers.cjs');
4
- const definition = require('./definition65.cjs');
4
+ const definition = require('./definition67.cjs');
5
5
  const delegatesAria = require('./delegates-aria.cjs');
6
6
  const classNames = require('./class-names.cjs');
7
7
  const ref = require('./ref.cjs');
@@ -1,5 +1,5 @@
1
1
  import { l as limit } from './numbers.js';
2
- import { P as Popup, a as PlacementStrategy } from './definition65.js';
2
+ import { P as Popup, a as PlacementStrategy } from './definition67.js';
3
3
  import { d as delegateAria } from './delegates-aria.js';
4
4
  import { c as classNames } from './class-names.js';
5
5
  import { r as ref } from './ref.js';
@@ -3,7 +3,6 @@
3
3
  const vividElement = require('./vivid-element.cjs');
4
4
  const pickerField_template = require('./picker-field.template.cjs');
5
5
  const singleValuePicker = require('./single-value-picker.cjs');
6
- const formElements = require('./form-elements.cjs');
7
6
  const scrollIntoView = require('./scrollIntoView.cjs');
8
7
  const when = require('./when.cjs');
9
8
  const repeat = require('./repeat.cjs');
@@ -462,9 +461,9 @@ const parsePresentationTime = (input, use12HourClock) => {
462
461
  };
463
462
 
464
463
  var __defProp$1 = Object.defineProperty;
465
- var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
464
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
466
465
  var __decorateClass$1 = (decorators, target, key, kind) => {
467
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
466
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
468
467
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
469
468
  if (decorator = decorators[i])
470
469
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
@@ -578,13 +577,12 @@ const TimeSelectionPicker = (Base) => {
578
577
  };
579
578
 
580
579
  var __defProp = Object.defineProperty;
581
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
582
580
  var __decorateClass = (decorators, target, key, kind) => {
583
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
581
+ var result = void 0 ;
584
582
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
585
583
  if (decorator = decorators[i])
586
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
587
- if (kind && result) __defProp(target, key, result);
584
+ result = (decorator(target, key, result) ) || result;
585
+ if (result) __defProp(target, key, result);
588
586
  return result;
589
587
  };
590
588
  const ValidTimeFilter = {
@@ -598,7 +596,7 @@ const ValidTimeFilter = {
598
596
  return value;
599
597
  }
600
598
  };
601
- exports.TimePicker = class TimePicker extends TimeSelectionPicker(
599
+ class TimePicker extends TimeSelectionPicker(
602
600
  singleValuePicker.SingleValuePicker(pickerField_template.PickerField)
603
601
  ) {
604
602
  // --- Core ---
@@ -731,17 +729,13 @@ exports.TimePicker = class TimePicker extends TimeSelectionPicker(
731
729
  }
732
730
  return null;
733
731
  }
734
- };
732
+ }
735
733
  __decorateClass([
736
734
  vividElement.attr({ converter: ValidTimeFilter })
737
- ], exports.TimePicker.prototype, "min", 2);
735
+ ], TimePicker.prototype, "min");
738
736
  __decorateClass([
739
737
  vividElement.attr({ converter: ValidTimeFilter })
740
- ], exports.TimePicker.prototype, "max", 2);
741
- exports.TimePicker = __decorateClass([
742
- formElements.errorText,
743
- formElements.formElements
744
- ], exports.TimePicker);
738
+ ], TimePicker.prototype, "max");
745
739
 
746
740
  const TimeSelectionPickerTemplate = (context, numOptionsVisible) => {
747
741
  const inlineTimePickerTag = context.tagFor(InlineTimePicker);
@@ -764,6 +758,7 @@ const TimeSelectionPickerTemplate = (context, numOptionsVisible) => {
764
758
  `;
765
759
  };
766
760
 
761
+ exports.TimePicker = TimePicker;
767
762
  exports.TimeSelectionPicker = TimeSelectionPicker;
768
763
  exports.TimeSelectionPickerTemplate = TimeSelectionPickerTemplate;
769
764
  exports.ValidTimeFilter = ValidTimeFilter;
@@ -1,7 +1,6 @@
1
- import { h as html, V as VividElement, o as observable, i as defineVividComponent, a as attr, O as Observable, k as defaultExecutionContext, D as DOM, n as nullableNumberConverter, v as volatile } from './vivid-element.js';
1
+ import { h as html, V as VividElement, o as observable, f as defineVividComponent, a as attr, O as Observable, i as defaultExecutionContext, D as DOM, n as nullableNumberConverter, v as volatile } from './vivid-element.js';
2
2
  import { i as ignoreEventInFocusTraps, a as PickerField } from './picker-field.template.js';
3
3
  import { S as SingleValuePicker } from './single-value-picker.js';
4
- import { e as errorText, f as formElements } from './form-elements.js';
5
4
  import { s as scrollIntoView } from './scrollIntoView.js';
6
5
  import { w as when } from './when.js';
7
6
  import { r as repeat } from './repeat.js';
@@ -460,9 +459,9 @@ const parsePresentationTime = (input, use12HourClock) => {
460
459
  };
461
460
 
462
461
  var __defProp$1 = Object.defineProperty;
463
- var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
462
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
464
463
  var __decorateClass$1 = (decorators, target, key, kind) => {
465
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
464
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
466
465
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
467
466
  if (decorator = decorators[i])
468
467
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
@@ -576,13 +575,12 @@ const TimeSelectionPicker = (Base) => {
576
575
  };
577
576
 
578
577
  var __defProp = Object.defineProperty;
579
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
580
578
  var __decorateClass = (decorators, target, key, kind) => {
581
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
579
+ var result = void 0 ;
582
580
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
583
581
  if (decorator = decorators[i])
584
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
585
- if (kind && result) __defProp(target, key, result);
582
+ result = (decorator(target, key, result) ) || result;
583
+ if (result) __defProp(target, key, result);
586
584
  return result;
587
585
  };
588
586
  const ValidTimeFilter = {
@@ -596,7 +594,7 @@ const ValidTimeFilter = {
596
594
  return value;
597
595
  }
598
596
  };
599
- let TimePicker = class extends TimeSelectionPicker(
597
+ class TimePicker extends TimeSelectionPicker(
600
598
  SingleValuePicker(PickerField)
601
599
  ) {
602
600
  // --- Core ---
@@ -729,17 +727,13 @@ let TimePicker = class extends TimeSelectionPicker(
729
727
  }
730
728
  return null;
731
729
  }
732
- };
730
+ }
733
731
  __decorateClass([
734
732
  attr({ converter: ValidTimeFilter })
735
- ], TimePicker.prototype, "min", 2);
733
+ ], TimePicker.prototype, "min");
736
734
  __decorateClass([
737
735
  attr({ converter: ValidTimeFilter })
738
- ], TimePicker.prototype, "max", 2);
739
- TimePicker = __decorateClass([
740
- errorText,
741
- formElements
742
- ], TimePicker);
736
+ ], TimePicker.prototype, "max");
743
737
 
744
738
  const TimeSelectionPickerTemplate = (context, numOptionsVisible) => {
745
739
  const inlineTimePickerTag = context.tagFor(InlineTimePicker);
@@ -2541,6 +2541,7 @@ const createRegisterFunction = (definition) => (prefix = "vwc") => {
2541
2541
  const registerComponent = (componentDefinition) => {
2542
2542
  const tag = prefixed(componentDefinition.name);
2543
2543
  let type = componentDefinition.type;
2544
+ type.componentName = componentDefinition.name;
2544
2545
  if (registeredTags.has(tag)) {
2545
2546
  return;
2546
2547
  } else if (tagByType.has(type) && tagByType.get(type) !== tag) {
@@ -2681,14 +2682,72 @@ const AriaMixin = (Base) => {
2681
2682
  return AriaMixinElement;
2682
2683
  };
2683
2684
 
2684
- class VividElement extends AriaMixin(FASTElement) {
2685
+ const locateReplacedPropMetadata = createMetadataLocator();
2686
+ const replaces = (config) => ($target, $prop) => {
2687
+ locateReplacedPropMetadata($target.constructor).push({
2688
+ newPropertyName: $prop,
2689
+ ...config
2690
+ });
2691
+ };
2692
+ const ReplacedPropHandling = (Base) => {
2693
+ class ReplacedPropHandlingElement extends Base {
2694
+ #handleReplacedProp(replacedProp) {
2695
+ let newDirty = false;
2696
+ let deprecatedDirty = false;
2697
+ const changeCouldBeFromDeprecated = (source) => deprecatedDirty && replacedProp.fromDeprecated(
2698
+ source[replacedProp.deprecatedPropertyName]
2699
+ ) === source[replacedProp.newPropertyName];
2700
+ const changeCouldBeFromNew = (source) => newDirty && replacedProp.toDeprecated && replacedProp.toDeprecated(source[replacedProp.newPropertyName]) === source[replacedProp.deprecatedPropertyName];
2701
+ const subscriber = {
2702
+ handleChange(source, propertyName) {
2703
+ if (propertyName === replacedProp.newPropertyName) {
2704
+ newDirty = true;
2705
+ if (!replacedProp.toDeprecated || changeCouldBeFromDeprecated(source)) {
2706
+ return;
2707
+ }
2708
+ source[replacedProp.deprecatedPropertyName] = replacedProp.toDeprecated(source[replacedProp.newPropertyName]);
2709
+ }
2710
+ if (propertyName === replacedProp.deprecatedPropertyName) {
2711
+ deprecatedDirty = true;
2712
+ if (changeCouldBeFromNew(source)) {
2713
+ return;
2714
+ }
2715
+ source[replacedProp.newPropertyName] = replacedProp.fromDeprecated(
2716
+ source[replacedProp.deprecatedPropertyName]
2717
+ );
2718
+ }
2719
+ }
2720
+ };
2721
+ const notifier = Observable.getNotifier(this);
2722
+ notifier.subscribe(subscriber, replacedProp.newPropertyName);
2723
+ notifier.subscribe(subscriber, replacedProp.deprecatedPropertyName);
2724
+ }
2725
+ constructor(...args) {
2726
+ super(...args);
2727
+ for (const replacedProp of locateReplacedPropMetadata(this.constructor)) {
2728
+ this.#handleReplacedProp(replacedProp);
2729
+ }
2730
+ }
2731
+ }
2732
+ return ReplacedPropHandlingElement;
2733
+ };
2734
+
2735
+ class VividElement extends AriaMixin(ReplacedPropHandling(FASTElement)) {
2685
2736
  static {
2686
- this.VIVID_VERSION = "4.24.0";
2737
+ this.VIVID_VERSION = "4.26.0";
2738
+ }
2739
+ /**
2740
+ * Add data-vvd-component attribute with component name globally,
2741
+ * for referring to the elements in CSS, testing or debugging
2742
+ */
2743
+ connectedCallback() {
2744
+ super.connectedCallback();
2745
+ const name = this.constructor.componentName;
2746
+ this.setAttribute("data-vvd-component", name);
2687
2747
  }
2688
2748
  }
2689
2749
 
2690
2750
  exports.AttachedBehaviorHTMLDirective = AttachedBehaviorHTMLDirective;
2691
- exports.AttributeConfiguration = AttributeConfiguration;
2692
2751
  exports.DOM = DOM;
2693
2752
  exports.HTMLDirective = HTMLDirective;
2694
2753
  exports.HTMLView = HTMLView;
@@ -2698,7 +2757,6 @@ exports.VividElement = VividElement;
2698
2757
  exports.ariaAttributeName = ariaAttributeName;
2699
2758
  exports.ariaMixinProperties = ariaMixinProperties;
2700
2759
  exports.attr = attr;
2701
- exports.booleanConverter = booleanConverter;
2702
2760
  exports.createRegisterFunction = createRegisterFunction;
2703
2761
  exports.defaultExecutionContext = defaultExecutionContext;
2704
2762
  exports.defineVividComponent = defineVividComponent;
@@ -2706,6 +2764,7 @@ exports.emptyArray = emptyArray;
2706
2764
  exports.html = html;
2707
2765
  exports.nullableNumberConverter = nullableNumberConverter;
2708
2766
  exports.observable = observable;
2767
+ exports.replaces = replaces;
2709
2768
  exports.subscribeToAriaPropertyChanges = subscribeToAriaPropertyChanges;
2710
2769
  exports.unsubscribeFromAriaPropertyChanges = unsubscribeFromAriaPropertyChanges;
2711
2770
  exports.volatile = volatile;
@@ -2539,6 +2539,7 @@ const createRegisterFunction = (definition) => (prefix = "vwc") => {
2539
2539
  const registerComponent = (componentDefinition) => {
2540
2540
  const tag = prefixed(componentDefinition.name);
2541
2541
  let type = componentDefinition.type;
2542
+ type.componentName = componentDefinition.name;
2542
2543
  if (registeredTags.has(tag)) {
2543
2544
  return;
2544
2545
  } else if (tagByType.has(type) && tagByType.get(type) !== tag) {
@@ -2679,10 +2680,69 @@ const AriaMixin = (Base) => {
2679
2680
  return AriaMixinElement;
2680
2681
  };
2681
2682
 
2682
- class VividElement extends AriaMixin(FASTElement) {
2683
+ const locateReplacedPropMetadata = createMetadataLocator();
2684
+ const replaces = (config) => ($target, $prop) => {
2685
+ locateReplacedPropMetadata($target.constructor).push({
2686
+ newPropertyName: $prop,
2687
+ ...config
2688
+ });
2689
+ };
2690
+ const ReplacedPropHandling = (Base) => {
2691
+ class ReplacedPropHandlingElement extends Base {
2692
+ #handleReplacedProp(replacedProp) {
2693
+ let newDirty = false;
2694
+ let deprecatedDirty = false;
2695
+ const changeCouldBeFromDeprecated = (source) => deprecatedDirty && replacedProp.fromDeprecated(
2696
+ source[replacedProp.deprecatedPropertyName]
2697
+ ) === source[replacedProp.newPropertyName];
2698
+ const changeCouldBeFromNew = (source) => newDirty && replacedProp.toDeprecated && replacedProp.toDeprecated(source[replacedProp.newPropertyName]) === source[replacedProp.deprecatedPropertyName];
2699
+ const subscriber = {
2700
+ handleChange(source, propertyName) {
2701
+ if (propertyName === replacedProp.newPropertyName) {
2702
+ newDirty = true;
2703
+ if (!replacedProp.toDeprecated || changeCouldBeFromDeprecated(source)) {
2704
+ return;
2705
+ }
2706
+ source[replacedProp.deprecatedPropertyName] = replacedProp.toDeprecated(source[replacedProp.newPropertyName]);
2707
+ }
2708
+ if (propertyName === replacedProp.deprecatedPropertyName) {
2709
+ deprecatedDirty = true;
2710
+ if (changeCouldBeFromNew(source)) {
2711
+ return;
2712
+ }
2713
+ source[replacedProp.newPropertyName] = replacedProp.fromDeprecated(
2714
+ source[replacedProp.deprecatedPropertyName]
2715
+ );
2716
+ }
2717
+ }
2718
+ };
2719
+ const notifier = Observable.getNotifier(this);
2720
+ notifier.subscribe(subscriber, replacedProp.newPropertyName);
2721
+ notifier.subscribe(subscriber, replacedProp.deprecatedPropertyName);
2722
+ }
2723
+ constructor(...args) {
2724
+ super(...args);
2725
+ for (const replacedProp of locateReplacedPropMetadata(this.constructor)) {
2726
+ this.#handleReplacedProp(replacedProp);
2727
+ }
2728
+ }
2729
+ }
2730
+ return ReplacedPropHandlingElement;
2731
+ };
2732
+
2733
+ class VividElement extends AriaMixin(ReplacedPropHandling(FASTElement)) {
2683
2734
  static {
2684
- this.VIVID_VERSION = "4.24.0";
2735
+ this.VIVID_VERSION = "4.26.0";
2736
+ }
2737
+ /**
2738
+ * Add data-vvd-component attribute with component name globally,
2739
+ * for referring to the elements in CSS, testing or debugging
2740
+ */
2741
+ connectedCallback() {
2742
+ super.connectedCallback();
2743
+ const name = this.constructor.componentName;
2744
+ this.setAttribute("data-vvd-component", name);
2685
2745
  }
2686
2746
  }
2687
2747
 
2688
- export { AttachedBehaviorHTMLDirective as A, DOM as D, HTMLDirective as H, Observable as O, SubscriberSet as S, VividElement as V, attr as a, booleanConverter as b, AttributeConfiguration as c, ariaAttributeName as d, emptyArray as e, ariaMixinProperties as f, createRegisterFunction as g, html as h, defineVividComponent as i, HTMLView as j, defaultExecutionContext as k, nullableNumberConverter as n, observable as o, subscribeToAriaPropertyChanges as s, unsubscribeFromAriaPropertyChanges as u, volatile as v };
2748
+ export { AttachedBehaviorHTMLDirective as A, DOM as D, HTMLDirective as H, Observable as O, SubscriberSet as S, VividElement as V, attr as a, ariaAttributeName as b, ariaMixinProperties as c, createRegisterFunction as d, emptyArray as e, defineVividComponent as f, HTMLView as g, html as h, defaultExecutionContext as i, nullableNumberConverter as n, observable as o, replaces as r, subscribeToAriaPropertyChanges as s, unsubscribeFromAriaPropertyChanges as u, volatile as v };
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ const vividElement = require('./vivid-element.cjs');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = void 0 ;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (decorator(target, key, result) ) || result;
11
+ if (result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ const WithErrorText = (Base) => {
15
+ class ElementWithErrorText extends Base {
16
+ /**
17
+ * @internal
18
+ */
19
+ errorTextChanged(_, newErrorText) {
20
+ if (newErrorText) {
21
+ this.#forceCustomError(newErrorText);
22
+ } else {
23
+ this.#clearCustomErrorAndRevalidate();
24
+ }
25
+ }
26
+ #blockValidateCalls = false;
27
+ #originalValidateFn;
28
+ constructor(...args) {
29
+ super(...args);
30
+ this.#originalValidateFn = this.validate;
31
+ this.validate = () => {
32
+ if (!this.#blockValidateCalls) this.#originalValidateFn();
33
+ };
34
+ }
35
+ #forceCustomError(errorMessage) {
36
+ this.setValidity(
37
+ { customError: true },
38
+ errorMessage,
39
+ this.control
40
+ );
41
+ this.errorValidationMessage = errorMessage;
42
+ this.#blockValidateCalls = true;
43
+ }
44
+ #clearCustomErrorAndRevalidate() {
45
+ this.setValidity({}, "", this.control);
46
+ this.#blockValidateCalls = false;
47
+ this.validate();
48
+ }
49
+ }
50
+ __decorateClass([
51
+ vividElement.attr({ attribute: "error-text" })
52
+ ], ElementWithErrorText.prototype, "errorText");
53
+ return ElementWithErrorText;
54
+ };
55
+
56
+ exports.WithErrorText = WithErrorText;